1
1

200 Коммитов

Автор SHA1 Сообщение Дата
Jeff Squyres
e57861b0a5 fortran: only have one _LIBADD
Accidentally added a 2nd _LIBADD in a prior commit.  This commit
merges them back into a single _LIBADD.
2015-08-17 06:52:54 -07:00
Jeff Squyres
a7f897ae49 fortran: link the opal-pal.la library directly
The libmpi_*.la fortran libraries make some direct calls to
libopen-pal.la.  In many (most?) cases, having libmpi_* link
against libmpi is sufficient (because libmpi pulls in libopen-pal).
But when building RPMs on SLES, some compiler/linker flags are used
that seem to make this implicit linking not sufficient -- we get
missing opal symbols when creating libmpi_mpifh.la.  So link in
open-pal directly (vs. indirectly), which solves the problem.
2015-08-15 06:46:01 -07:00
Gilles Gouaillardet
2fa8f4d53a Revert "fortran: optimize testall and waitall when MPI_STATUSES_IGNORE is used"
Optimization was incorrect, so revert this commit.

This reverts commit 83375bcc5c69121ebad7c1df67211ac08729c570.
2015-08-03 08:45:12 +09:00
Gilles Gouaillardet
83375bcc5c fortran: optimize testall and waitall when MPI_STATUSES_IGNORE is used 2015-07-29 10:00:27 +09:00
Gilles Gouaillardet
9c77c6b66d fortran: fix f08 bindings
only define the unique fortran symbol depending on
 - CAPS
 - PLAIN
 - SINGLE_UNDERSCORE
 - DOUBLE_UNDERSCORE
and bind the f08 symbol to the uniquely defined C symbol.

Use real data structures to make the code simpler.
(perl script written by Jeff)
2015-07-27 16:28:57 +09:00
Gilles Gouaillardet
7af5238595 f08: misc Makefile fixes 2015-07-27 16:19:44 +09:00
Gilles Gouaillardet
bd60ce1655 fortran: add missing non blocking i/o files to Makefile
fixes open-mpi/ompi@01f752a504
2015-07-16 11:27:14 +09:00
Edgar Gabriel
95c144c4b6 make the f08 interface actually compile. 2015-07-09 10:58:14 -05:00
Edgar Gabriel
19994ff60d add fortran interfaces to the new nb collective I/O functions 2015-07-09 10:58:14 -05:00
Edgar Gabriel
01f752a504 make the c interface functions compile and work and start with the fortran interface functions. 2015-07-09 10:58:13 -05:00
Jeff Squyres
d5e16839e9 mpi_f08: restore C/Fortran compatibility with F08 BUFFER_DETACH
The C int/Fint interoperability code was erroneously removed when this
function was moved to the use-mpi-f08 directory.
2015-07-08 03:55:50 -07:00
Jeff Squyres
8ff60c47cc mpi_f08: move the f08 version of buffer_detach to use-mpi-f08
@ggouaillardet was right -- we should have put the
ompi_buffer_detach_f08() function in the use-mpi-f08 directory to
begin with.  Putting it in the mpif-h directory made it complicated as
to whether the function would be built or not (e.g., whether weak
symbols were supported or not, whether the profiling layer was
disabled or not, ...etc.).

Just put it in the use-mpi-f08 directory and always build it (when the
mpi_f08 module is built, of course), and keep it simple.
2015-07-07 07:38:09 -07:00
Gilles Gouaillardet
9e89985f3d restore whitespaces into the pdf files 2015-07-07 09:17:00 +09:00
Jeff Squyres
e28f016793 fortran only compile f08 buffer_detach once
Since there is no profiling version of the f08 buffer_detach function
(or, more specifically, the Fortran compile does the name mangling of
MPI and PMPI to the back-end C function for us), ensure that it is
only compiled once.

Also, per Gilles' observation, the f08-related #pragmas are no longer
relevant.
2015-07-06 09:52:27 -07:00
Jeff Squyres
4694b16256 mpi_f08: further fixes for MPI_BUFFER_DETACH
A few minor fixes in addition to
open-mpi/ompi@bd94da7de4 and
open-mpi/ompi@fc69c0be24.
2015-07-04 05:27:22 -07:00
Jeff Squyres
bd94da7de4 mpi_f08: fix MPI_BUFFER_DETACH interfaces
Add an mpi_f08-specific implementation for MPI_BUFFER_DETACH.

Per MPI-3.1:3.6, p45, the buffer argument is ignored in
MPI_BUFFER_DETACH for mpif.h and the mpi module.  But in the mpi_f08
module, the buffer argument is treated like it is in the C binding.
2015-07-03 08:56:34 -07:00
Gilles Gouaillardet
6356c4b113 mpif: fix typo in interface name
* MPI_Comm_dup_with_info
 * MPI_Comm_split_type
 * PMPI_Comm_split_type
2015-07-02 17:13:07 +09:00
Gilles Gouaillardet
fa50e0d712 mpi_f08: fix typo in binding name
replace MPI_Win_flush_all_local with MPI_Win_flush_local_all
2015-07-02 15:47:38 +09:00
Gilles Gouaillardet
c4025f55a4 mpi_f08: add MPI_Type_size_x and misc PMPI_xxx bindings 2015-06-30 16:31:14 +09:00
Gilles Gouaillardet
18fd30a173 mpi_f08: fix MPI_FREE_MEM binding 2015-06-30 14:19:50 +09:00
Gilles Gouaillardet
13950c3ec1 mpi_f08: fix MPI_WIN_{ATTACH,DETACH} bindings
fixes INTENT from open-mpi/ompi@9600e2bc63
2015-06-30 12:28:23 +09:00
Gilles Gouaillardet
86bbdd2ebe mpi_f08: fix MPI_COMM_SPAWN_MULTIPLE binding 2015-06-30 11:47:45 +09:00
Jeff Squyres
fc69c0be24 mpi_f08: fix MPI_BUFFER_DETACH binding 2015-06-29 09:22:30 -07:00
Gilles Gouaillardet
98bf02485d fortran: add Fortran 2008 bindings for attr_fn (MPI_COMM_DUP_FN and friends)
Fixes open-mpi/ompi#460
2015-06-26 15:21:30 +09:00
Ralph Castain
265cd14f60 Purge whitespace 2015-06-25 13:27:56 -07:00
Nathan Hjelm
458cd9d611 Merge pull request #629 from hjelmn/aint_math
Add support for MPI-3.1 MPI_Aint functions
2015-06-24 10:52:44 -07:00
Jeff Squyres
258d1aa160 mpi-f08: corrections to new MPI_Aint_* subroutines
(cherry picked from commit 8f252e65b02bfe20cacee0ece8c835246eea3bd9)
2015-06-24 10:42:01 -07:00
Ralph Castain
869041f770 Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
Nathan Hjelm
062de45899 Add support for MPI-3.1 MPI_Aint functions
This commit adds support for MPI_Aint_add and MPI_Aint_diff. These
functions are implemented as macros in C (explicitly allowed by
MPI-3.1). The fortran implementations are a similar mess to the
MPI_Wtime implementations.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-06-09 09:31:33 -06:00
Gilles Gouaillardet
bf38f82dc2 MPI_Win_{get,set}_info: add missing files
fixes commit open-mpi/ompi@558d34a5c3
2015-06-03 09:04:04 +09:00
Gilles Gouaillardet
7179d442c0 MPI_Win_{attach,detach}: add missing files
fixes commit open-mpi/ompi@9600e2bc63
2015-06-03 09:02:50 +09:00
Gilles Gouaillardet
1d8ce96305 MPI_Win_Create_dynamic: add missing files
fixes commit open-mpi/ompi@f45244d5a5
2015-06-03 09:00:04 +09:00
Gilles Gouaillardet
558d34a5c3 MPI_Win_{get,set}_info : add Fortran bindings 2015-06-02 17:45:52 +09:00
Gilles Gouaillardet
9600e2bc63 MPI_Win_{attach,detach} : add Fortran bindings 2015-06-02 17:45:44 +09:00
Gilles Gouaillardet
f45244d5a5 MPI_Win_create_dynamic : add Fortran bindings 2015-06-02 17:45:32 +09:00
Jeff Squyres
63c7520273 use-mpi-f08/Makefile.am: also link in libmpi_mpifh.la
Per mail from Macro Atzeri, we also need to link in libmpi_mpifh.la,
lest we exhaust relative offset addressing (e.g., in 32 bit builds).

See http://www.open-mpi.org/community/lists/devel/2015/04/17304.php.
2015-04-22 14:22:36 -07:00
Gilles Gouaillardet
5db3065d63 fortran: fix misc memory leak in lookup_name
as reported by Coverity with CID 1269897
2015-02-18 16:41:56 +09:00
Jeff Squyres
2ca4bf4777 cart_rank_f.c: make sure MPI_Cartdim_get succeeded
This was CID 1269686.
2015-02-12 10:24:02 -08:00
Jeff Squyres
cab1379dfb Fortran: only emit real16 and complex32 if supported
This is the master version of @ggouaillardet's patch from
open-mpi/ompi-release#148 (there was a minor conflict to fix and
several fuzzings of line numbers).
2015-01-06 09:47:26 -08:00
Jeff Squyres
9d1d34c0c0 Fortran: do not dist mpif-h/sizeof_f.f90; it is generated 2014-12-17 10:24:31 -08:00
Jeff Squyres
1b63129de3 fortran: ensure to specify the shared library version 2014-12-16 11:16:46 -08:00
Christoph Niethammer
9020a1c1f6 Add missing Fortran binding for Win_allocate. 2014-10-17 13:22:54 +02:00
Ralph Castain
3263f721b6 Strip crlf line endings 2014-10-02 08:37:18 -07:00
Jeff Squyres
318e3b426a fortran: workaround Absoft linker issue
MTT found that the addition of the MPI_SIZEOF interfaces to mpif.h was
causing a linker error with the Absoft compiler.  Absoft is working on
a fix, but we can workaround the issue for now.  See comment in
Makefile.am in this commit for a lengthy explanation.

Refs trac:4917

This commit was SVN r32797.

The following Trac tickets were found above:
  Ticket 4917 --> https://svn.open-mpi.org/trac/ompi/ticket/4917
2014-09-25 21:07:46 +00:00
Jeff Squyres
d13034d0b0 fortran: add configury to check for storage_size()
gfortran 4.8 does not support storage_size() on all relevant types
that we need.  So add a configure test to check and see if the
compiler's storage_size() intrinsic supports enough types for us to do
MPI_SIZEOF.

Also remove an accidentally redundant check for fortran INTERFACE.

Refs trac:4917

This commit was SVN r32790.

The following Trac tickets were found above:
  Ticket 4917 --> https://svn.open-mpi.org/trac/ompi/ticket/4917
2014-09-25 00:17:29 +00:00
Jeff Squyres
c9ea7f2732 fortran: ensure that sizeof_f08.h is built before mpi-f08.lo
mpi-f08.F90 includes sizeof_f08.h, so we need to add a Makefile
dependency to ensure that sizeof_f08.h is built first.

Refs trac:4917

This commit was SVN r32789.

The following Trac tickets were found above:
  Ticket 4917 --> https://svn.open-mpi.org/trac/ompi/ticket/4917
2014-09-24 23:59:18 +00:00
Jeff Squyres
7f419dc5b6 fortran: set CLEANFILES properly
CLEANFILES was previously set; we need to use += to add to it.

refs trac:4917

This commit was SVN r32769.

The following Trac tickets were found above:
  Ticket 4917 --> https://svn.open-mpi.org/trac/ompi/ticket/4917
2014-09-20 10:43:49 +00:00
Jeff Squyres
040611556f fortran: don't complain about script args if we're not building fortran
refs trac:4917

This commit was SVN r32766.

The following Trac tickets were found above:
  Ticket 4917 --> https://svn.open-mpi.org/trac/ompi/ticket/4917
2014-09-20 01:22:40 +00:00
Jeff Squyres
d7eaca83fa Fortran: Fix MPI_SIZEOF. What a disaster. :-(
What started as a simple ticket ended up reaching the way up to the
MPI Forum.
    
It turns out that we are supposed to have MPI_SIZEOF for all Fortran
interfaces: mpif.h, the mpi module, and the mpi_f08 module.
    
It further turns out that to properly support MPI_SIZEOF, your Fortran
compiler *has* support the INTERFACE keyword and ISO_FORTRAN_ENV.  We
can't use "ignore TKR" functionality, because the whole point of
MPI_SIZEOF is that the implementation knows what type was passed to it
("ignore TKR" functionality, by definition, throws that information
away).  Hence, we have to have an MPI_SIZEOF interface+implementation
for all intrinsic types, kinds, and ranks.

This commit therefore adds a perl script that generates both the
interfaces and implementations for MPI_SIZEOF in each of mpif.h, the
mpi module, and mpi_f08 module (yay consolidation!).

The perl script uses the results of some new configure tests:

* check if the Fortran compiler supports the INTERFACE keyword
* check if the Fortran compiler supports ISO_FORTRAN_ENV
* find the max array rank (i.e., dimension) that the compiler supports

If the Fortran compiler supports both INTERFACE and ISO_FORTRAN_ENV,
then we'll build the MPI_SIZEOF interfaces.  If not, we'll skip
MPI_SIZEOF in mpif.h and the mpi module.  Note that we won't build the
mpi_f08 module -- to include the MPI_SIZEOF interfaces -- if the
Fortran compiler doesn't support INTERFACE, ISO_FORTRAN_ENV, and a
whole bunch of ther modern Fortran stuff.

Since MPI_SIZEOF interfaces are now generated by the perl script, this
commit also removes all the old MPI_SIZEOF implementations (which were
laden with a zillion #if blocks).

cmr=v1.8.3

This commit was SVN r32764.
2014-09-19 13:44:52 +00:00
Jeff Squyres
0f29f222f2 fortran: remove 2 unused files
As noted in the comments of these files, they aren't used.  Instead,
the Fortran interfaces for WTICK/WTIME just BIND(C) invoke the
back-end C functions (yay BIND(C)!).  Hence, there's no need to keep
these old wrapper files around any more.

cmr=v1.8.3

This commit was SVN r32751.
2014-09-17 21:49:24 +00:00