1
1

68 Коммитов

Автор SHA1 Сообщение Дата
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
Christoph Niethammer
9020a1c1f6 Add missing Fortran binding for Win_allocate. 2014-10-17 13:22:54 +02: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
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
Jeff Squyres
3e78f7878c fortran: add missing bindings for WIN_SYNC, WIN_LOCK_ALL,
WIN_UNLOCK_ALL

cmr=v1.8.2:reviewer=hjelmn

This commit was SVN r32535.
2014-08-14 20:27:30 +00:00
Ralph Castain
70da69a4f3 Cleanup and ignore Intel compiler build products
This commit was SVN r32463.
2014-08-08 16:13:43 +00:00
Jeff Squyres
537aa674a5 fortran: remove a duplicate listing of this file
This fixes some duplicate symbols, once the .o files for the modules
were restored into the library (some compilers need the .o files, some
don't (!)).

Also, remove trailing whitespace.  :-)

This commit was SVN r32386.
2014-08-01 00:43:04 +00:00
Jeff Squyres
abbcde6cb9 fortran: add the .o's back into libmpi_usempif08
Thanks to Paul Hargrove for the massive hint to find this.

This commit was SVN r32385.
2014-07-31 23:41:47 +00:00
Jeff Squyres
8e80480cbc fortran: don't use optional params in the ompi/pompi interfaces
Fix a copy-n-paste error: the ompi/pompi interfaces should not have
optional ierror arguments.  Optional ierror arguments are only used in
the MPI_<foo> interfaces.  The ompi/pompi interfaces are the actual
underlying routines (in C, incidentally, which is why they're declared
as BIND(C)), and do not have optional ierror arguments.

Also fix a typo in the BIND(C) name for pompi_win_shared_query_f().

cmr=v1.8.2:reviewer=ggouaillardet

This commit was SVN r32287.
2014-07-22 21:51:29 +00:00
Jeff Squyres
4da3c85b54 fortran: revert Absoft-based fixes
Rever r32246, r32254, and 32255 -- they were fixing side-effects of
the real bug.  Real fix coming after this one.

This commit was SVN r32286.

The following SVN revision numbers were found above:
  r32246 --> open-mpi/ompi@08d2a1a48d
  r32254 --> open-mpi/ompi@232d4dbb7b
2014-07-22 21:49:22 +00:00
Gilles Gouaillardet
a7bfd6e766 fortran: fix compile issue with ABSoft compilers
one more fix ...

cmr=v1.8.2:ticket=trac:4792

This commit was SVN r32255.

The following Trac tickets were found above:
  Ticket 4792 --> https://svn.open-mpi.org/trac/ompi/ticket/4792
2014-07-17 07:38:13 +00:00
Gilles Gouaillardet
232d4dbb7b fortran: fix compile issue with ABSoft compilers
Simplify and fix the r32246

cmr=v1.8.2:ticket=trac:4792

This commit was SVN r32254.

The following SVN revision numbers were found above:
  r32246 --> open-mpi/ompi@08d2a1a48d

The following Trac tickets were found above:
  Ticket 4792 --> https://svn.open-mpi.org/trac/ompi/ticket/4792
2014-07-17 06:00:32 +00:00
Gilles Gouaillardet
08d2a1a48d fortran: fix compile issue with ABSoft compilers
ABSoft compilers cannot compile a fortran subroutine
with the BIND(C, NAME="name") modifier *and* argument(s)
with the OPTIONAL modifier

This patch detects this unsupported feature and use
adhoc wrappers if it is missing

cmr=v1.8.2:reviewer=jsquyres

This commit was SVN r32246.
2014-07-15 10:41:11 +00:00
Jeff Squyres
5081f958a6 fortran: fix MPI_Win_allocate_shared and MPI_Win_shared_query
Several problems with MPI_Win_allocate_shared and MPI_Win_shared_query
were discovered in a code review.  This commit fixes them:

* Add _cptr versions of both subroutines in mpif-h, use-mpi-tkr, and
  use-mpi-ignore-tkr directories
* Fix case of PMPI weak symbols for both C implementations
* Add MPI and PMPI f08 implementations of both subroutines (there is
  no _cptr version in the mpi_f08 module)
* Fixed _f08 suffix on the f08 module of both subroutines

cmr=v1.8.2:ticket=trac:4736

This commit was SVN r32162.

The following Trac tickets were found above:
  Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
2014-07-09 00:10:04 +00:00
Jeff Squyres
fb9d063be2 Fortran: include the type functions (eq/ne) in libmpi_usempif08
This file has to be pre-emptively compiled to generate the module, but
then it also has to be included in libmpi_usempif08.

cmr=v1.8.2:ticket=trac:4736

This commit was SVN r32071.

The following Trac tickets were found above:
  Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
2014-06-24 17:48:15 +00:00
Gilles Gouaillardet
926e29c972 Fortran: add ompi/mpi/fortran/use-mpi-f08/mpi-f08-sizeof.F90 to the dist tarball.
cmr=v1.8.2:ticket=trac:4736

This commit was SVN r32065.

The following Trac tickets were found above:
  Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
2014-06-23 04:14:28 +00:00
Jeff Squyres
395078da00 Fortran: fix two type mistakes
Use the appropriate modules, don't use mpif-config.h.

cmr=v1.8.2:ticket=trac:4736

This commit was SVN r32052.

The following Trac tickets were found above:
  Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
2014-06-19 20:25:09 +00:00
Jeff Squyres
134c527f18 Fortran: Move all f08-related modules out of fortran/base
Move them all to fortran/use-mpi-f08, since that's the only directory
that uses them (the use-mpi-f08-desc directory has been disabled).

cmr=v1.8.2:ticket=trac:4736

This commit was SVN r32045.

The following Trac tickets were found above:
  Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
2014-06-19 13:44:08 +00:00
George Bosilca
750c6c7861 Update the UTK copyright on the topology related files.
This commit was SVN r31805.
2014-05-16 22:23:52 +00:00
Jeff Squyres
0fac9781b3 Assume we always have fortran PROCEDURE support
Per #4590, we now ''require'' the PROCEDURE keyword support in Fortran
for the mpi_f08 module.  So if the Fortran compiler doesn't support
it, then we won't build the mpi_f08 module.

Fixes trac:4590

This commit was SVN r31588.

The following Trac tickets were found above:
  Ticket 4590 --> https://svn.open-mpi.org/trac/ompi/ticket/4590
2014-05-01 18:18:38 +00:00
Jeff Squyres
10e2137b97 mpi_f08 fixes from Craig's review:
* Superfluous use of MPI_User_function in comm_create_keyval_f08.F90
* Missed adding "value" keyword to function pointer arguments in pmpi
  C interfaces

Submitted by Craig, reviewed by Jeff.

Refs trac:4512

This commit was SVN r31455.

The following Trac tickets were found above:
  Ticket 4512 --> https://svn.open-mpi.org/trac/ompi/ticket/4512
2014-04-19 12:06:24 +00:00
Jeff Squyres
c0f3d80c98 Change this filename back (i.e., revert r31375).
It's a singular filename because there's only 1 interface in the
file.  Also, r31375 missed updating the name in a few places, and
broke the build for compilers that supported the mpi_f08 interface.

This commit was SVN r31389.

The following SVN revision numbers were found above:
  r31375 --> open-mpi/ompi@fe1935de14
2014-04-14 19:51:06 +00:00
Ralph Castain
fe1935de14 Rename file to match pattern used in other names and in Makefile.am
Don't know if this needs to go to 1.8.1, but will cmr it and leave for Jeff to decide

cmr=v1.8.1:reviewer=jsquyres

This commit was SVN r31375.
2014-04-12 14:43:20 +00:00
Jeff Squyres
5551e78275 fortran: Separate pre-defined attribute and conversion interfaces
Differentiate the pre-defined attribute and conversion interfaces into
those with INTEGER handles and those with TYPE(MPI_*) handles.

Refs trac:4157

cmr=v1.8.1:ticket=trac:4512

This commit was SVN r31372.

The following Trac tickets were found above:
  Ticket 4157 --> https://svn.open-mpi.org/trac/ompi/ticket/4157
  Ticket 4512 --> https://svn.open-mpi.org/trac/ompi/ticket/4512
2014-04-11 21:01:16 +00:00
Jeff Squyres
65b95e2844 mpi_f08: pass function pointers from Fortran to C properly
Use type(c_funptr) to "cast" the fortran function pointers to
arbitrary C pointers.  In C, we then pick up the appropriate function
pointer type.

Tested with ifort 14.0.2 and gfortran 4.9 snapshot (which is what
identified that the previous method of passing function pointers was
not Fortran'08-compliant).

Refs trac:4157

This commit was SVN r31371.

The following Trac tickets were found above:
  Ticket 4157 --> https://svn.open-mpi.org/trac/ompi/ticket/4157
2014-04-11 20:56:11 +00:00
Jeff Squyres
12e82daa78 mpi_f08: Fix param name and string length for MPI_GET_LIBRARY_VERSION
Junchao Zhang pointed out to me that we had the wrong parameter name
and string length specification for the "version" parameter.  This
matters because Fortran allows passing by parameter name
(vs. parameter ordering).  Specifically, we had the interface as:

{{{
subroutine MPI_Get_library_version_f08(name,resultlen,ierror)
   character(len=MPI_MAX_PROCESSOR_NAME), intent(out) :: name
...etc.
}}}

but it should be:

{{{
subroutine MPI_Get_library_version_f08(version,resultlen,ierror)
   character(len=MPI_MAX_LIBRARY_VERSION_STRING), intent(out) :: version
...etc.
}}}

Thankfully, MPI_MAX_PROCESSOR_NAME and MPI_MAX_LIBRARY_VERSION_STRING
are both 255 in OMPI, so there's no ABI issue caused by changing the
length from MMPN --> MMLVS.

The ABI is also unaffected by the parameter name change: if you
compile/link an MPI application calling MPI_GET_LIBRARY_VERSION with
1.8, it'll still run-time link with this change.

However, if an MPI program compiled using parameter name passing with
the old/incorrect parameter name ("name"), it won't be able to compile
with the new/correct parameter name ("version").  But this will only
happen for an incorrect MPI application (because the MPI-3 mandated
parameter name is "version", not "name"), so they deserve what they
get.

cmr=v1.8.1:reviewer=dgoodell

This commit was SVN r31365.
2014-04-10 14:45:36 +00:00
Jeff Squyres
24f7bd327e MPI-3: Add missing MPI_Comm_get|set_info functions
Thanks to Lisandro Dalcin for pointing out the issue.

cmr=v1.8:reviewer=hjelmn

This commit was SVN r31262.
2014-03-27 21:41:59 +00:00
Jeff Squyres
24020ef1e3 Refs trac:4372: 3rd and hopefully final addendum to Fortran API fixes for the RMA functions
These parameters should not be marked as INTENT(OUT) (they aren't in
the MPI-3 standard).

This commit was SVN r31056.

The following Trac tickets were found above:
  Ticket 4372 --> https://svn.open-mpi.org/trac/ompi/ticket/4372
2014-03-12 22:55:57 +00:00
Jeff Squyres
ccff41383c Refs trac:4372: Another addendum to Fortran API fixes for the RMA functions
* Several parameters should not be marked as INTENT(OUT) (they aren't in
  the MPI-3 standard).
* Added missing PMPI F08 OMPI interfaces

This commit was SVN r31049.

The following Trac tickets were found above:
  Ticket 4372 --> https://svn.open-mpi.org/trac/ompi/ticket/4372
2014-03-12 20:22:15 +00:00
Jeff Squyres
53248a90f3 Add missing files in Makefile.am listing
cmr=v1.7.5:ticket=trac:4372

This commit was SVN r31032.

The following Trac tickets were found above:
  Ticket 4372 --> https://svn.open-mpi.org/trac/ompi/ticket/4372
2014-03-12 15:48:55 +00:00
Jeff Squyres
3523e315b8 Fix ompi function in Fortran RMA bindings
cmr=v1.7.5:ticket=trac:4372

This commit was SVN r31026.

The following Trac tickets were found above:
  Ticket 4372 --> https://svn.open-mpi.org/trac/ompi/ticket/4372
2014-03-12 14:12:10 +00:00
Nathan Hjelm
c4de1aa1ce osc: add fortran bindings for new RMA function
I have only checked that these bindings compile without warnings. They
appear to work with both intel's compilers and gfortran.

cmr=v1.7.5:reviewer=jsquyres

This commit was SVN r31010.
2014-03-11 23:02:27 +00:00
Jeff Squyres
2281a682ba Remove old kruft from the Makefile.am
The dist graph functions are on the trunk and have long-since been
added to the relevant lists.

cmr=v1.7.5:ticket=4163

This commit was SVN r30382.

The following Trac tickets were found above:
  Ticket 4163 --> https://svn.open-mpi.org/trac/ompi/ticket/4163
2014-01-23 01:33:44 +00:00
Jeff Squyres
d910522ff6 Remove placeholder text file.
cmr=v1.7.5:subject=Rollup of Fortran fixes for 1.7.5

This commit was SVN r30380.
2014-01-23 01:30:59 +00:00
Jeff Squyres
aa0ceaa78b Move common code to ompi/mpi/fortran/base.
The attribute and conversion callback subroutine interfaces
are used by all 3 modules, and belong in the fortran/base directory,
not the directory of a specific module.

Also clean up some comments.

cmr=v1.7.4:ticket=4162

This commit was SVN r30378.

The following Trac tickets were found above:
  Ticket 4162 --> https://svn.open-mpi.org/trac/ompi/ticket/4162
2014-01-23 01:28:04 +00:00
Jeff Squyres
19617394f0 Add profiling versions of dist_graph functions into the library
Also fix the interfaces that have logical parameters (the
non-profiling versions were added/fixed a long time ago; it looks like
the profiling versions were inadvertantly skipped).

cmr=v1.7.4:ticket=4162

This commit was SVN r30377.

The following Trac tickets were found above:
  Ticket 4162 --> https://svn.open-mpi.org/trac/ompi/ticket/4162
2014-01-23 01:24:54 +00:00
Jeff Squyres
5aa75d0ed9 Add missing pmpi interfaces for neighbor routines
Somehow these interfaces were missed when adding these interfaces.

cmr=v1.7.4:ticket=4162

This commit was SVN r30376.

The following Trac tickets were found above:
  Ticket 4162 --> https://svn.open-mpi.org/trac/ompi/ticket/4162
2014-01-23 01:23:31 +00:00
Jeff Squyres
751aa195e9 Similar to r30244, make the libmpi_usempif08 Fortran library also
LIBADD libmpi.la

cmr=v1.7.4:reviewer=brbarret:subject=Add libmpi to libmpi_usempif08_LIBADD

This commit was SVN r30245.

The following SVN revision numbers were found above:
  r30244 --> open-mpi/ompi@7015343951
2014-01-10 21:33:10 +00:00
Jeff Squyres
36cca10042 Thanks to a reminder from Tobias Burunus, commit support for the
upcoming GCC/gfortran 4.9's ignore TKR interface.

This was originally committed in a side mercurial repo, but I sadly
completely forgot about it until Tobias reminded me.

cmr=v1.7.5:reviewer=dgoodell:subject=Add support for gfortran 4.9 Fortran ignore TKR

This commit was SVN r30152.
2014-01-08 03:46:27 +00:00
Jeff Squyres
2d7d7ab731 Absoft caught that bind(c) functions can't have OPTIONAL dummy arguments.
Also, removed an MPI_Aint snuck through (which is a C type, not a Fortran
type).  Oddly, the Intel compiler complained about neither of these
issues.  :-\

This commit was SVN r29411.
2013-10-09 14:29:34 +00:00
Jeff Squyres
0d093176e1 Add missing .so version numbers for libmpi_usempif08.so.
cmr=v1.7.3:reviewer=rhc:subject=Add missing libmpi_usempif08 shared lib

This commit was SVN r29401.
2013-10-08 16:20:12 +00:00
Jeff Squyres
ad4abdbf53 Avoid using /* in the comment (which starts a C comment)
Since this header is included in .F90 files (which are preprocessed,
vs. .f90 files, which are *not* preprocessed), we don't want to
accidentally start C-style comments, which are recognized by some
Fortran compiler preprocessors (e.g., Absoft).

This commit was SVN r29394.
2013-10-08 14:22:55 +00:00
Jeff Squyres
ceecc04bfe Some Fortran compilers warn about ! comments after #endif.
So just move the comment to the prior line, and it's all good.  This
is obviosuly not *necessary*, but it helps cut down on warning noise.

This commit was SVN r29393.
2013-10-08 13:47:44 +00:00
Jeff Squyres
c08f97b030 Fix problems with calling back-end BIND(C) ompi_*_f() functions.
BIND(C) doesn't let us have LOGICAL parameters, so we have to be
creative in how we invoke back-end ompi_*_f() C functions.
Additionally, the mpi_f08 type for MPI_Status presented some
difficulties, too.
    
See the large comment in
ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h that explains
this in much more detail.

This commit was SVN r29384.
2013-10-04 22:43:07 +00:00
Nathan Hjelm
b3240df1b1 Merge in Jeff's fortran fixes for new communicator duplicator functions
This commit was SVN r29338.
2013-10-02 18:42:04 +00:00
Nathan Hjelm
63084b1003 Add fortran bindings for MPI-3 communicator creation functions.
Thanks to Jeff for finding and fixing compilation issues with
the new fortran bindings.

cmr=v1.7.4:reviewer=jsquyres:ticket=trac:3796

This commit was SVN r29335.

The following Trac tickets were found above:
  Ticket 3796 --> https://svn.open-mpi.org/trac/ompi/ticket/3796
2013-10-02 14:26:58 +00:00
Jeff Squyres
d04ea88d87 Missed updating the profiling versions of the neighbor collectives in r29299.
Refs trac:3802.

This commit was SVN r29302.

The following SVN revision numbers were found above:
  r29299 --> open-mpi/ompi@66eb7ff610

The following Trac tickets were found above:
  Ticket 3802 --> https://svn.open-mpi.org/trac/ompi/ticket/3802
2013-09-30 19:45:09 +00:00
Jeff Squyres
4af194ca32 Missed updating the profiling versions of [I]Alltoallw in r29298.
Refs trac:3814.

This commit was SVN r29301.

The following SVN revision numbers were found above:
  r29298 --> open-mpi/ompi@0acebc0a1f

The following Trac tickets were found above:
  Ticket 3814 --> https://svn.open-mpi.org/trac/ompi/ticket/3814
2013-09-30 19:44:24 +00:00
Jeff Squyres
66eb7ff610 Fix the !MPI_[I]Neighbor_* mpi_f08 interfaces.
Use the same trick for send/recvtypes as we did in r29298 for
![I]Alltoallw.  Also, add all prototypes for all the back-end
ompi_neighbor_*_f functions.

Refs trac:3802

This commit was SVN r29299.

The following SVN revision numbers were found above:
  r29298 --> open-mpi/ompi@0acebc0a1f

The following Trac tickets were found above:
  Ticket 3802 --> https://svn.open-mpi.org/trac/ompi/ticket/3802
2013-09-30 17:54:12 +00:00