1
1
Граф коммитов

289 Коммитов

Автор SHA1 Сообщение Дата
Kurita, Takehiro
f9ae932bfd Fortran: Enable using LOGICAL parameter in MPI extensions.
If a subroutine of the Fortran `use-mpi-f08` binding in an MPI extension
have a `LOGICAL` parameter and no `TYPE(MPI_Status)` parameter,
it needs to use the `mpi_ext` module and call its corresponding subroutine
in the `mpif-h` directory, as explained in
`ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h`.
However, as shown in the figure below, the required directories are dependent
on each other, and "Can't open module file" error occurs at build time.

             ompi/mpiext/{extension name}/use-mpi-f08
                A                               |
                |                               |
                |                               V
   ompi/mpi/fortran/use-mpi-f08  <---  ompi/mpi/fortran/mpiext (mpi_ext.mod)

In order to solve this problem, change the configuration and the build order.
- divide Fortran extension directory (`ompi/mpi/fortran/mpiext`)
  into the directories for `use-mpi` and for `use-mpi-08`
    - `ompi/mpi/fortran/mpiext-use-mpi`     : for `use-mpi` (mpi_ext.mod)
    - `ompi/mpi/fortran/mpiext-use-mpi-f08` : for `use-mpi-08` (mpi_f08_ext.mod)

- change to the following build order about Fortran `use-mpi` and
  `use-mpi-f08` bindings in `ompi`
    1. mpi_ext bindings of MPI extensions (`mpiext/{extension name}/use-mpi` directory)
    2. Fortran use-mpi (`mpi/fortran/use-mpi-[ignore-]tkr` directory)
    3. Fortran extension for use-mpi (`mpi/fortran/mpiext-use-mpi` directory)
    4. Fortran use-mpi-f08 modules only (`mpi/fortran/use-mpi-f08/mod` directory)
    5. mpi_f08_ext bindings of MPI extensions (`mpiext/{extension name}/use-mpi-f08` directory)
    6. Fortran use-mpi-f08 (`mpi/fortran/use-mpi-f08` directory)
    7. Fortran extension for use-mpi-f08 (`mpi/fortran/mpiext-use-mpi-f08` directory)

Signed-off-by: Kurita, Takehiro <fj6370fp@aa.jp.fujitsu.com>
2018-06-07 15:02:17 +09:00
Gilles Gouaillardet
9f7586465d fortran/mpif-h: fix MPI1 compatibility Makefile
appends MPI1 compatible source files instead of redefining all the source files
fix a typo from open-mpi/ompi@89da9651bb

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-06-01 09:52:22 +09: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
5bd02f6649 fortran/tkr: Fix Makefile.am warnings
Set mpi.lo dependencies outside of AM conditionals.  Per
https://github.com/open-mpi/ompi/issues/5085, make mpi.lo depend on
whatever we decide the sizeof source files are (which may be empty, if
this compiler does not support the Right Stuff for MPI_SIZEOF, or it
may be mpi-tkr-sizeof.[h|f90]).

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-04-25 10:24:01 -07:00
Gilles Gouaillardet
2abeada060 fortran: build MPI_Sizeof() interface in use-mpi-tkr bindings
whenever possible.

Add the missing OMPI_FORTRAN_BUILD_SIZEOF macro to Fortran
and add a missing dependency.

Thanks Themos Tsikas for reporting this issue.

Refs open-mpi/ompi#5085

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-04-25 15:09:33 +09:00
Jeff Squyres
0ab6b201fe mpi/fortran: fix parsing arrays of Fortran strings
MPI defines the "argv" param to Fortran MPI_COMM_SPAWN as being
terminated by a blank string.  While not precisely defined (except
through a non-binding example, Example 10.2, MPI-3.1 p382:6-29), one
can infer that the "array_of_argv" param to Fortran
MPI_COMM_SPAWN_MULTIPLE is also a set of argv, each of which are
terminated by a blank line.

The "array_of_commands" argument to Fortran MPI_COMM_SPAWN_MULTIPLE is
a little less well-defined.  It is *assumed* to be of length "count"
(another parameter to MPI_COMM_SPAWN_MULTIPLE) -- and *not* be
terminated by a blank string.  This is also given credence by the same
example 10.2 in MPI-3.1.

The previous code assumed that "array_of_commands" should also be
terminated by a blank line -- but per the above, this is incorrect.
Instead, we should just parse our "count" number of strings from
"array_of_commands" and *not* look for a blank line termination.

This commit separates these two cases:

* ompi_fortran_argv_blank_f2c(): parse a Fortran array of strings out
  and stop when reaching a blank string.
* ompi_fortran_argv_count_f2c(): parse a Fortran array of strings out
  and stop when "count" number of strings have been parsed.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-04-04 18:56:44 -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
Jeff Squyres
1c5664fdec
Merge pull request #4681 from nathanweeks/issue/f08_mpi_errcodes_ignore
Fix type of mpi_f08 MPI_ERRCODES_IGNORE
2018-01-10 12:34:16 -05:00
Nathan T. Weeks
3158d2c5ed Fix type of mpi_f08 MPI_ERRCODES_IGNORE
Signed-off-by: Nathan T. Weeks <weeks@iastate.edu>
2018-01-07 05:36:41 -08: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 c08f97b030.

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 24f7bd327e.

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 fc69c0be24.

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 258d1aa160.

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 db41d749c1.

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
794cc09d3e mpiext: fix path to Fortran 2008 modules
OMPI_FORTRAN_USEMPIF08_MOD macro was removed in open-mpi/ompi@791bcee6c0
so this macro is now manually expanded to mpi/fortran/use-mpi-f08/mod

Thanks to Nathan T. Weeks for reporting

Refs open-mpi/ompi#3605

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-12-11 11:02:43 +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
Jeff Squyres
791bcee6c0 ompi/fortran: remove proof-of-concept mpi_f08 module
This module was always intended to be a proof of concept, and was far
from complete.  If/when someone implemented F08 descriptor support for
the mpi_f08 module, this commit can either be restored or used as
reference material.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-08-10 06:19:17 -07:00
Gilles Gouaillardet
dfe7b2be3f fortran/use-mpi-f08-desc: add a missing include file
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-08-09 13:19:22 +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
Jeff Squyres
ccf17808b6 Merge pull request #3258 from markalle/pr/symbol_name_pollution
symbol name pollution
2017-07-12 16:19:25 -05:00
Gilles Gouaillardet
72cfbb665c ompi/attributes: revamp attribute handling.
we now have 12 cases to deal (4 writers and 3 readers) :

1. C `void*` is written into the attribute value, and the value is read into a C `void*` (unity)
2. C `void*` is written, Fortran `INTEGER` is read
3. C `void*` is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read
4. Fortran `INTEGER` is written, C `void*` is read
5. Fortran `INTEGER` is written, Fortran `INTEGER` is read (unity)
6. Fortran `INTEGER` is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read
7. Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is written, C `void*` is read
8. Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is written, Fortran `INTEGER` is read
9. Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read (unity)
10. Intrinsic is written, C `void*` is read
11. Intrinsic is written, Fortran `INTEGER` is read
12. Intrinsic is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read

MPI-2 Fortran "integer representation" has type `INTEGER(KIND=MPI_ADDRESS_KIND)` as clarified
at https://github.com/mpiwg-rma/rma-issues/issues/1

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-07-12 10:27:45 +09:00
Joshua Hursey
c81795cbda Revert "Fix MPI_SIZEOF for gfortran 4.8"
This reverts commit 5de3d5dde6.

 Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
2017-07-11 11:09:17 -05:00
Mark Allen
552216f9ba scripted symbol name change (ompi_ prefix)
Passed the below set of symbols into a script that added ompi_ to them all.

Note that if processing a symbol named "foo" the script turns
    foo  into  ompi_foo
but doesn't turn
    foobar  into  ompi_foobar

But beyond that the script is blind to C syntax, so it hits strings and
comments etc as well as vars/functions.

    coll_base_comm_get_reqs
    comm_allgather_pml
    comm_allreduce_pml
    comm_bcast_pml
    fcoll_base_coll_allgather_array
    fcoll_base_coll_allgatherv_array
    fcoll_base_coll_bcast_array
    fcoll_base_coll_gather_array
    fcoll_base_coll_gatherv_array
    fcoll_base_coll_scatterv_array
    fcoll_base_sort_iovec
    mpit_big_lock
    mpit_init_count
    mpit_lock
    mpit_unlock
    netpatterns_base_err
    netpatterns_base_verbose
    netpatterns_cleanup_narray_knomial_tree
    netpatterns_cleanup_recursive_doubling_tree_node
    netpatterns_cleanup_recursive_knomial_allgather_tree_node
    netpatterns_cleanup_recursive_knomial_tree_node
    netpatterns_init
    netpatterns_register_mca_params
    netpatterns_setup_multinomial_tree
    netpatterns_setup_narray_knomial_tree
    netpatterns_setup_narray_tree
    netpatterns_setup_narray_tree_contigous_ranks
    netpatterns_setup_recursive_doubling_n_tree_node
    netpatterns_setup_recursive_doubling_tree_node
    netpatterns_setup_recursive_knomial_allgather_tree_node
    netpatterns_setup_recursive_knomial_tree_node
    pml_v_output_close
    pml_v_output_open
    intercept_extra_state_t
    odls_base_default_wait_local_proc
    _event_debug_mode_on
    _evthread_cond_fns
    _evthread_id_fn
    _evthread_lock_debugging_enabled
    _evthread_lock_fns
    cmd_line_option_t
    cmd_line_param_t
    crs_base_self_checkpoint_fn
    crs_base_self_continue_fn
    crs_base_self_restart_fn
    event_enable_debug_output
    event_global_current_base_
    event_module_include
    eventops
    sync_wait_mt
    trigger_user_inc_callback
    var_type_names
    var_type_sizes

Signed-off-by: Mark Allen <markalle@us.ibm.com>
2017-07-11 02:13:23 -04:00
Chris Ward
5de3d5dde6 Fix MPI_SIZEOF for gfortran 4.8
Add copyrights.

Revise the README to take out the 'most notably' statement about GNU Fortran 4.8

Signed-off-by: Chris Ward <tjcw@uk.ibm.com>
2017-07-07 13:47:35 +01:00
Gilles Gouaillardet
08526e8adc fortran/base: rename strings.h into fortran_base_strings.h
rename ompi/mpi/fortran/base/strings.h so it does not get pulled
when /usr/include/strings.h is expected.

Refs open-mpi/ompi#3639

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-06-02 09:46:20 +09:00
Gilles Gouaillardet
384387bb53 Merge pull request #3411 from ggouaillardet/topic/mpi_f08_interfaces_callbacks
f08: make procedure(MPI_User_function) type available from mpi_f08
2017-05-17 09:02:26 +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
KAWASHIMA Takahiro
0fcd96486a fortran: Fix MPI_ARGV(S)_NULL compilation error
Fortran constants `MPI_ARGV_NULL` and `MPI_ARGVS_NULL` are defined
in MPI-3.1 p.680 as below.

> `MPI_ARGVS_NULL`
>   2-dim. array of `CHARACTER*(*)`
> `MPI_ARGV_NULL`
>   array of `CHARACTER*(*)`

`MPI_ARGV_NULL` and `MPI_ARGVS_NULL` are used as an argument of
`MPI_COMM_SPAWN` and `MPI_COMM_SPAWN_MULTIPLE` respectively and
their argument `argv` and `array_of_argv` are defined as below
for `USE mpi_f08` binding in MPI-3.1.

```
CHARACTER(LEN=*), INTENT(IN) :: argv(*)
CHARACTER(LEN=*), INTENT(IN) :: array_of_argv(count, *)
```

Defining them as `INTEGER` in `mpi_f08` module will cause
a compilation error of user programs like
"There is no specific subroutine for the generic 'mpi_comm_spawn'".

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-04-24 13:53:12 +09:00
Ralph Castain
1e2019ce2a Revert "Update to sync with OMPI master and cleanup to build"
This reverts commit cb55c88a8b.
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
Gilles Gouaillardet
bf789762a7 fortran/use-mpi-tkr: fix MPI_Sizeof handling
MPI_Sizeof related stuff has been moved to their own files.
Remove MPI_Sizeof from Fortran interfaces when it cannot be built
(e.g. stock gcc 4.8 on CentOS 7)

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2016-10-27 08:54:28 +09:00
Gilles Gouaillardet
1a16e68c26 fortran/use-mpi-trk: add PMPI_* interfaces in mpi module
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2016-10-27 08:54:07 +09:00
Gilles Gouaillardet
8e26e78728 fortran/use-mpi-tkr: only build MPI_File support if requested
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2016-10-27 08:54:07 +09:00
Gilles Gouaillardet
5543b19e9a fortran/use-mpi-tkr: rename mpi-f90-cptr-interfaces.F90 into mpi-f90-cptr-interfaces.h
this file is meant to be included and not compiled, so use a consistent naming

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2016-10-27 08:54:07 +09:00
Gilles Gouaillardet
e2769e4343 fortran/use-mpi-ignore-tkr: fix typo in MPI_File_write_at_all_begin interface 2016-10-24 09:53:52 +09:00
Gilles Gouaillardet
e02dc1e637 fortran/use-mpi-ignore-trk: fix typo in MPI_File_read_ordered_begin interface 2016-10-24 09:53:52 +09: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
Nathan Hjelm
8bdcb40dc4 ompi/fortran: fix typos in request RMA bindings
This commit fixes typos on the C side of the request-based RMA binding. We
were not returning the request on success but on failure. Thanks to
@alazzaro for reporting and @ggouaillardet, and @vondele for tracking
this down.

Fixes part of open-mpi/ompi#1869

Signed-off-by: Nathan Hjelm <hjelmn@me.com>
2016-07-18 13:46:28 -06:00
Ralph Castain
ee56d9dc1a Shorten the session directory name as some OS's are now providing unusually long temp directory names, causing us to overflow the sockaddr field 2016-07-05 14:59:50 -07:00
Aurélien Bouteiller
8344d00418 use-mpi extensions do not have a .la lib, so the fortran module should not depend on them. 2016-05-03 11:54:35 -04:00
Gilles Gouaillardet
01c90d4e71 fortran/mpif-h: fix *_create_keyval_f
correctly handle out parameter *_keyval when OMPI_SIZEOF_FORTRAN_INTEGER > SIZEOF_INT
2016-04-27 13:34:32 +09:00
Gilles Gouaillardet
178dde6a20 fortran/mpif-h: fix MPI_Win_shared_query
correctly handle out parameter disp_unit when OMPI_SIZEOF_FORTRAN_INTEGER > SIZEOF_INT
2016-04-27 11:22:09 +09:00
Gilles Gouaillardet
7f59d2a8c7 fortran/mpif-h: fix MPI_Win_free_keyval
initialize inout parameter when OMPI_SIZEOF_FORTRAN_INTEGER > SIZEOF_INT
2016-04-27 10:46:14 +09:00
Nathan Hjelm
60a3eb12ac comm_spawn_multiple_f: fix coverity issue
Fix CID 1327338: Resource leak (RESOURCE_LEAK):

Confirmed that the c_info array was being leaked. Free the array
before returning.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2016-03-11 13:07:01 -07:00
KAWASHIMA Takahiro
e854404570 fortran: Change the line order of #pragma
No code change.
These lines were introduced in my recent commit 17d32ac.
I had a editing mistake and the order is different from
other lines/files.
2016-04-15 12:49:03 +09:00
Jeff Squyres
4566286b9a Merge pull request #1538 from kawashima-fj/pr/fortran-binding-fix
fortran: Fix many Fortran binding bugs
2016-04-14 17:18:59 -04:00