1
1

141 Коммитов

Автор SHA1 Сообщение Дата
Gilles Gouaillardet
51e23f8cb6 fortran/use-mpi-f08: remove bind(C) constants.
Remove unused bind(C) constants in ompi/mpi/fortran/use-mpi-f08/constants.{c,h}
(and break ABI compatibility).

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2019-10-28 10:28:17 +09:00
Gilles Gouaillardet
b10a60a5a9 fortran/use-mpi-f08: revamp constant declarations
In order to work around an issue with flang based compilers,
avoid declaring bind(C) constants and use plain Fortran parameter
instead.

For example,
type(MPI_Comm), bind(C, name="ompi_f08_mpi_comm_world") OMPI_PROTECTED :: MPI_COMM_WORLD
is changed to
type(MPI_Comm), parameter :: MPI_COMM_WORLD = MPI_Comm(OMPI_MPI_COMM_WORLD)

Note that in order to preserve ABI compatibility, ompi/mpi/fortran/use-mpi-f08/constants.{c,h}
have been kept even if its symbols are no more referenced by Open MPI.

Refs. open-mpi/ompi#7091

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2019-10-28 10:01:17 +09:00
Gilles Gouaillardet
01fe53d531 fortran/use-mpi-f08: slurp missing code
Split the sentinel library in ompi/mpi/fortran/use-mpi-f08 into
 - the real sentinel that contains no code (only used to build the .mod files)
 - an internal library that does contain some code
and have libmpi_usempif08.la slurp the latter.

This fixes a regression introduced in open-mpi/ompi@5de5e751ed

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2019-08-04 17:06:33 +09:00
Gilles Gouaillardet
5de5e751ed fortran/use-mpi-f08: do not slurp the sentinel module files
A sentinel is only an internal Fortran module and hence should not
be slurped into libmpi_usempif08.so

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2019-07-13 16:50:55 +09:00
Gilles Gouaillardet
232055fc7a fortran/use-mpi-f08: fix intent of the internal ompi_*_f bindings
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2019-04-18 13:29:19 +09:00
Howard Pritchard
266bc3aced fortran:use mpif08 fix for PGI linking
commit c6070fd2e broke building fortran bindings
with PGI compilers.  Turns out PGI compilers need
to link in the *.o from a module file whether or
not there are module subroutines defined or not in
the module file.

Related to #6411

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2019-02-20 12:33:25 -07:00
KAWASHIMA Takahiro
f8a441957a mpiext/shortfloat: Add MPIX_C_FLOAT16 datatype
`MPIX_C_FLOAT16` is defined as a synonym for `MPIX_SHORT_FLOAT`
if the C compiler supports `_Float16`, which is defined in
ISO/IEC JTC 1/SC 22/WG 14 N1945 (ISO/IEC TS 18661-3:2015).
This name and meaning are same as that of MPICH. This may be
a transitional datatype until the MPI Forum decides a proper
name for the type.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2019-02-01 14:55:52 +09:00
KAWASHIMA Takahiro
c44599ec13 mpiext/shortfloat: Add shortfloat MPI extension
This extension provides additional MPI datatypes `MPIX_SHORT_FLOAT`,
`MPIX_C_SHORT_FLOAT_COMPLEX`, and `MPIX_CXX_SHORT_FLOAT_COMPLEX`
for `short float` (C/C++), `short float _Complex` (C), and
`std::complex<short float>` (C++), respectively, or their alternate
types like `_Float16`.

See `ompi/mpiext/shortfloat/README.txt` for details.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2019-02-01 13:01:14 +09:00
KAWASHIMA Takahiro
4d7bde27fb ompi/datatype: Use short float for MPI_REAL2
... and add `MPI_COMPLEX4`.

This commit changes values of existing `OMPI_DATATYPE_MPI_*` macros.
This change does not affect ABI compatibility of `libmpi.so` and the
like because these values are only used in OMPI internal code.

On the other hand, `ompi_datatype_t::id` values of existing datatypes
are not changed and 73 is newly assigned to for `MPI_COMPLEX4` to
retain ABI compatibility.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2019-02-01 13:01:10 +09:00
KAWASHIMA Takahiro
63ecf01610 fortran/use-mpi-f08: Add C++ datatypes and MPI_NO_OP
Though the MPI standard does not have `MPI_CXX_COMPLEX`, `mpi.h`,
`mpif.h`, and `mpi.mod` have it. So I added it for consistency.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2018-12-11 13:08:29 +09:00
KAWASHIMA Takahiro
e0c5bad195 fortran/use-mpi-f08: Remove unnecessary ;
Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2018-12-11 09:06:21 +09:00
Jeff Squyres
bb13941b69
Merge pull request #5811 from ggouaillardet/topic/mpi_f08_c_types
fortran/use-mpi-f08: add MPI C types
2018-10-09 13:17:30 -04:00
Gilles Gouaillardet
69f1a19c5d fortran/use-mpi-f08: add MPI C types
Refers open-mpi/ompi#5801

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-10-03 16:09:00 +09:00
KAWASHIMA Takahiro
cf6d28cb66 fortran/use-mpi-f08: Correct f08 routine signatures
Following the commit f750c6932c, I compared
`ompi/mpi/fortran/use-mpi-f08/*.F90` and
`ompi/mpi/fortran/use-mpi-f08/profile/p*.F90`, and
`ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.F90` and
`ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90`.

There are many differences. Some are bugs of `MPI_*`, some are
bugs of `PMPI_*`. I'm not sure how these bugs affect applications.

To make it easy to compare these files future, I also removed
editorial differences.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2018-09-29 01:39:01 +09:00
Gilles Gouaillardet
f750c6932c fortran/use-mpi-f08: Corrections to PMPI signatures of collectives
Corrected the signatures of the collectives used by the Fortran 2008
interface to state correct intent for inout arguments and use the
ASYNCHRONOUS attribute in non-blocking collective calls.

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-09-25 11:17:01 +09:00
Philipp Otte
e98d794e8b fortran/use-mpi-f08: Corrections to Fortran08 signatures of collectives
Corrected the signatures of the collectives used by the Fortran 2008
interface to state correct intent for inout arguments and use the
ASYNCHRONOUS attribute in non-blocking collective calls. Also corrected
the C-bindings in Fortran accordingly

Signed-off-by: Philipp Otte <philipp.j.otte@googlemail.com>
2018-09-25 11:16:52 +09:00
Gilles Gouaillardet
c4ce01d104 fortran/use-mpi-f08: use bindings from ompi_mpifh_bindings
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-09-19 14:13:00 +09:00
Gilles Gouaillardet
c6070fd2e0 fortran/use-mpi-f08: fix [p]ompi_FOO_f symbols handling
- do not generate bindings for pompi_FOO_f symbols
   (they are simply not used anywhere)

 - move ompi_FOO_f bindings out of mpi_f08.mod into
   ompi_mpifh_bindings.mod that is only used at build time

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-09-19 14:12:55 +09:00
Gilles Gouaillardet
6e04b2a66a configury: do not define "dummy" empty targets any more.
We previously needed to have empty targets because AM couldn't handle
having an AM_CONDITIONAL was targets in the "if" statement but not in the
"else".  :-(

That now appears as an old automake bug that has been fixed,
so cleanup some Makefile.am

Thanks Jeff for the pointer.

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-09-19 14:12:50 +09:00
Gilles Gouaillardet
d2393251f7 use-mpi-f08: fix a typo in [P]MPI_Dist_graph_create_adjacent bindings
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-09-19 14:12:46 +09:00
Howard Pritchard
9a5fd48388
Merge pull request #5079 from jsquyres/pr/fortran-is-the-devil
status_set_cancelled: fix F08 binding
2018-07-13 15:36:02 -05:00
Nathan Hjelm
89da9651bb ompi: disable functions removed from MPI-3.0 by default
This commit adds a new configure option: --enable-mpi1-compat. Without
this option we will no longer provide APIs, typedefs, and defines that
were removed from the standard in MPI-3.0. This option will exist for
one major release (Open MPI v4.x.x) and then the option and associated
code will be removed in Open MPI v5.x.x. Open MPI has already
internally prepared for this change. Please prepare your codes
accordingly.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2018-05-31 09:44:19 -06:00
Themos Tsikas
4d126c16fa mpi/fortran: use conformant dummy names for Fortran bindings
The MPI spec defines that the "mpi" and "mpi_f08" module Fortran
bindings support passing by parameters by name.  Hence, we need to use
the MPI-spec-defined parameter names ("dummy variables", in Fortran
parlance) for the "mpi" and "mpi_f08" modules.

Specifically, Fortran allows calls to procedures to be written with
keyword arguments, e.g., "call mpi_sizeof(x=x,size=rsize,ierror=ier)"
An "explicit interface" for the procedure must be in scope for this to
be allowed in a Fortran program unit.  Therefore, the explicit
interface blocks we provide in the "mpi" and "mpi_f08" modules must
match the MPI published standard, including the names of the dummy
variables (i.e., parameter names), as that is how Fortran programs may
call them.

Note that we didn't find this issue previously because even though the
MPI spec *allows* for name-based parameter passing, not many people
actually use it.  I suspect that we might have some more incorrect
parameter names -- we should probably do a full "mpi" / "mpi_f08"
module parameter name audit someday.

Thanks to Themos Tsikas for reporting the issue and supplying the
initial fix.

Signed-off-by: themos.tsikas@nag.co.uk
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-05-02 09:42:19 +09:00
Jeff Squyres
8251139bac status_set_cancelled: fix F08 binding
The F08 bindings for MPI_STATUS_SET_CANCELLED incorrectly had the
"flag" dummy parameter set as INTENT(OUT) when it really should be
INTENT(IN).

On the one hand, this is technically an ABI change.  On the other
hand, this is an incorrect MPI binding.  On the other hand (that's 3
hands for you fans counting at home), this is such a rarely-used API
-- even in the C bindings -- that I'm guessing no one is using this
API, and therefore no one has noticed this error and it isn't worth
porting back to the release branches.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-04-16 17:33:22 -07:00
Nathan Hjelm
1c75aa82fc use-mpi-f08: fix rma function signatures
The various RMA functions need to have the asynchronous property on
all buffers. This property was missing and some buffers were
incorrectly marked as intent(in). This commit fixes the function
signatures.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2018-03-26 15:11:07 -06:00
KAWASHIMA Takahiro
710080be63
Merge pull request #4667 from kawashima-fj/pr/f08-pmpi
fortran: Fix PMPI interface bugs in mpi_f08 module
2018-01-05 03:45:10 -06:00
KAWASHIMA Takahiro
bd2fe9c324 fortran: Call PMPI from PMPI_Status_set_cancelled_f08
This is a bug which was forgotten to change in c08f97b0304.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-12-26 15:53:12 +09:00
KAWASHIMA Takahiro
00e3c7a973 fortran: Align indentation
This change makes comparison of `mpi-f08-interfaces.F90` and
`pmpi-f08-interfaces.F90` easier.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-12-26 14:39:09 +09:00
KAWASHIMA Takahiro
056eb39b12 fortran: Correct type of info_used
It is incorrectly typed as `MPI_Comm` in only `pmpi` in 24f7bd327e3.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-12-26 14:39:09 +09:00
KAWASHIMA Takahiro
0c3a534b32 fortran: Use C_PTR for buffer_addr
It was changed to use `C_PTR` in only `mpi` in fc69c0be247.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-12-26 14:39:09 +09:00
KAWASHIMA Takahiro
d4fc404dc6 fortran: Change PMPI_Aint_{add,diff} to functions.
They were incorrectly changed to subroutines in only `pmpi`
in 258d1aa1607.

Strictly speaking, this change involves binary incompatibility.
But nobody used these subroutines and nobody will be affected because
these subroutines were useless (didn't return a calculated value).

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-12-26 14:39:09 +09:00
KAWASHIMA Takahiro
9240967b8f fortran: Remove ASYNCHRONOUS from mpi_f08 pmpi
It was removed from only `mpi` as a bug fix in db41d749c1a.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-12-26 14:39:09 +09:00
Tsubasa Yanagibashi
3f4b373856 Add missing Fortran 2008 binding subroutines
added missing Fortran 2008 binding pmpi_{*} subroutines to Open MPI.

Signed-off-by: Tsubasa Yanagibashi <fj2505dt@aa.jp.fujitsu.com>
2017-12-22 13:45:53 +09:00
Gilles Gouaillardet
b9315edb85 configury: remove the --disable-mpi-io option
Fixes open-mpi/ompi#2185

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-09-20 14:39:09 +09:00
Gilles Gouaillardet
2c71c27882 fortran2008: fix mpiext example
in order to solve an egg and the chicken problem,  in which mpiext need mpi-f08-types.mod
and/but use-mpi-f08[-desc] needs mpiext, add an extra step
- build fortran 2008 modules only
- build fortran 2008 mpi extensions
- and then build fortran 2008 bindings

Fixes open-mpi/ompi#3605

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-08-09 13:19:22 +09:00
Gilles Gouaillardet
96b00b0fcf f08: make procedure(MPI_User_function) type available from mpi_f08
Refs. open-mpi/ompi#3409

Thanks Nathan T. Weeks for the report

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-04-25 13:33:00 +09:00
Ralph Castain
1e2019ce2a Revert "Update to sync with OMPI master and cleanup to build"
This reverts commit cb55c88a8b7817d5891ff06a447ea190b0e77479.
2016-11-22 15:03:20 -08:00
Ralph Castain
cb55c88a8b Update to sync with OMPI master and cleanup to build
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2016-11-22 14:24:54 -08:00
Joshua Hursey
f6f24a4f67 build: Custom libmpi(_FOO) name option in configure
* Add a configure time option to rename libmpi(_FOO).*
   - `--with-libmpi-name=STRING`
 * This commit only impacts the installed libraries.
   Internal, temporary libraries have not been renamed to limit the
   scope of the patch to only what is needed.

For example:
```shell
shell$ ./configure --with-libmpi-name=wookie
...
shell$ find . -name "libmpi*"
shell$ find . -name "libwookie*"
./lib/libwookie.so.0.0.0
./lib/libwookie.so.0
./lib/libwookie.so
./lib/libwookie.la
./lib/libwookie_mpifh.so.0.0.0
./lib/libwookie_mpifh.so.0
./lib/libwookie_mpifh.so
./lib/libwookie_mpifh.la
./lib/libwookie_usempi.so.0.0.0
./lib/libwookie_usempi.so.0
./lib/libwookie_usempi.so
./lib/libwookie_usempi.la
shell$
```
2016-09-29 21:47:24 -05:00
Gilles Gouaillardet
cda094afc7 mpi_f08: correctly implements MPI_{COMM,TYPE,WIN}_{DUP,NULL_{COPY,DELETE}}_FN
Fixes open-mpi/ompi#1323
2016-02-02 13:38:01 +09:00
Gilles Gouaillardet
728a97c558 use-mpi-f08: remove duplicates from Makefile.am 2016-02-02 13:33:07 +09:00
Gilles Gouaillardet
704f14f91e f08: do not BIND(C) to subroutines with LOGICAL parameters
Thanks Paul Romano for reporting this issue.
2016-01-26 13:56:24 +09:00
Gilles Gouaillardet
1105634ca1 mpi_f08: fix MPI_WIN_{ATTACH,DETACH} bindings
fixes INTENT from open-mpi/ompi@9600e2bc63

Thanks Jeff for pointing this !
2015-10-26 10:02:45 +09:00
Jeff Squyres
2b9c9f3093 Fortran: add missing MPI_AINT in mpi_f08 module 2015-10-14 17:32:01 -07:00
Gilles Gouaillardet
291a464efb configury: remove the --enable-mpi-profiling option
and directly call the PMPI_* symbols from C and Fortran bindings
2015-10-13 08:52:35 +09:00
Jeff Squyres
596557e61b Fortran: update a comment
Split the list of subroutines into cases #1 and #2, just for clarity.
2015-08-31 03:10:09 -07:00
Zhi Ming Wang
c8d4751ae6 Correct the wrong "Name Binding" of functions 2015-08-28 03:28:09 -04:00
Gilles Gouaillardet
99730f798b fortran: (try to) align C objects used by Fortran
Fortran uses objects (ompi_f08_mpi_comm_world, mpi_fortran_bottom,, ...) that are defined in C.
Some compilers have different requirements on how these objects should be aligned.
Smaller alignment in C can lead to several confusing warnings from the linker, so try to
find the alignment expected by Fortran compiler, and inform the C compiler.
2015-08-18 14:01:20 +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