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

28576 Коммитов

Автор SHA1 Сообщение Дата
Edgar Gabriel
8feb497dbe io/ompio: cleanup the aggregator selection logic
and some internal structure elements/components. Along the way,
add support for the cb_nodes Info object.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2018-06-07 16:47:10 -05:00
Edgar Gabriel
529d882ff0 io/ompio and common/ompio: relocate ompio_request code to common
since the request code is now being accessed also from the vulcan fcoll
component, the request code was relocated into the common/ompio
directory to avoid ld load problems.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2018-06-07 16:13:12 -05:00
raafatfeki
5ecb4a56e3 fcoll/vulcan: Support of asynchronous write in collective writeAll
We introduced a new mca_vulcan parameter that specify the I/O synchronization
type (Async/sync I/O) applied within the collective write operation.
The user can explicitly choose to use async or sync write operation or make
the choice automatically made.

Signed-off-by: raafatfeki <fekiraafat@gmail.com>
2018-06-07 16:13:12 -05:00
raafatfeki
4f7172ddf6 fcoll/vulcan: Support of larger offsets
For very large offsets, the data chunk size to be written by each aggregator
exceeds the capacity of an integer variable. Besides, some variables were
not large enough to hold intermediate values.

Signed-off-by: raafatfeki <fekiraafat@gmail.com>
2018-06-07 16:13:12 -05:00
raafatfeki
4670fe50d7 fcoll/vulcan: Remove unnecessary calls to write
Identify the index of each aggregator process in order to restrict the call to write_init function by the specific aggregator.

Signed-off-by: raafatfeki <fekiraafat@gmail.com>
2018-06-07 16:13:12 -05:00
raafatfeki
bc6431bee9 fcoll/vulcan: use hindexed constructor on the sender side
Instead of using a temporary buffer and copy data into the temp buffer before sending, use a derived datatype to describe the data that needs to be sent during a cycle in the collective I/O operation.

Signed-off-by: raafatfeki <fekiraafat@gmail.com>
2018-06-07 16:13:12 -05:00
Edgar Gabriel
1c2c110824 fcoll/vulcan: add new fcoll component
import of the new vulcan component. It is an enhanced version
of the two_phase component, which uses however the ompio internal
codes/loops to assemble the data arrays. It is therefore more inline
with the dynamic and dynamic_gen2 component, and will be easier to
maintain.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2018-06-07 16:13:12 -05:00
Jeff Squyres
caaf008179
Merge pull request #5244 from nmorey/dev/master/roce-hcas
Fix openib support for RoCE HCA
2018-06-07 15:03:40 -04:00
Nicolas Morey-Chaisemartin
038ceb0b61 btl: openib: Add support for Broadcom Cumulus RoCE HCA
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
2018-06-07 15:16:58 +02:00
Nicolas Morey-Chaisemartin
d3416345ab btl: openib: add support for QLogic RoCE HCA
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
2018-06-07 15:16:41 +02:00
Nathan Hjelm
63ded4d083
Merge pull request #5224 from benmenadue/master
io/romio314: Replace deprecated MPI-1 functions
2018-06-06 15:41:53 -06:00
Ralph Castain
5853ebee1a
Merge pull request #5240 from rhc54/topic/foo
Correct typo in name comparison flags
2018-06-06 13:25:20 -07:00
Ralph Castain
86d699d42e Correct typo in name comparison flags
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2018-06-06 12:18:52 -07:00
Arm
ce4d769aee
Merge pull request #5235 from thananon/ofi_einr_fix
btl/ofi: handles FI_EINTR properly.
2018-06-06 11:30:48 -07:00
bosilca
fa1386768f
Merge pull request #5234 from jsquyres/pr/oshmem-init-race
ompi_mpi_init: fix race condition
2018-06-06 12:14:00 -04:00
Ralph Castain
356947fead
Merge pull request #5239 from rhc54/topic/rename
Rename prun ompi-prun
2018-06-06 09:10:01 -07:00
Ralph Castain
05e554716e
Merge pull request #5237 from rhc54/topic/dyn
PMIx rte component does support dynamics
2018-06-06 08:17:09 -07:00
Ralph Castain
06eb51161f Rename prun ompi-prun
This is a minor abstraction break in naming, but hopefully acceptable for now. I will update the contents of the program a little later. This resolves the immediate issue of naming conflict with the PRRTE binary.

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2018-06-06 07:40:03 -07:00
Jeff Squyres
9b9cb5fef0 to be squashed: move wait-for-init loop to ompi_mpi_init()
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-06-06 05:35:19 -07:00
Ralph Castain
840fb42f93 PMIx rte component does support dynamics
Minor cleanups

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2018-06-05 21:55:19 -07:00
Thananon Patinyasakdikul
f34a73af70 btl/ofi: handles FI_EINTR properly.
OFI sockets provider will sometime return FI_EINTR. Apparently this flag
does not exist in OFI version 1.5. This commit added an ifdef check.

Signed-off-by: Thananon Patinyasakdikul <thananon.patinyasakdikul@intel.com>
2018-06-05 18:40:00 -07:00
Jeff Squyres
67ba8da76f ompi_mpi_init: fix race condition
There was a race condition in 35438ae9b5: if multiple threads invoked
ompi_mpi_init() simultaneously (which could happen from both MPI and
OSHMEM), the code did not catch this condition -- Bad Things would
happen.

Now use an atomic cmp/set to ensure that only one thread is able to
advance ompi_mpi_init from NOT_INITIALIZED to INIT_STARTED.

Additionally, change the prototype of ompi_mpi_init() so that
oshmem_init() can safely invoke ompi_mpi_init() multiple times (as
long as MPI_FINALIZE has not started) without displaying an error.  If
multiple threads invoke oshmem_init() simultaneously, one of them will
actually do the initialization, and the rest will loop waiting for it
to complete.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-06-05 18:09:13 -07:00
Nathan Hjelm
64a5baaa28
Merge pull request #5193 from hjelmn/osc_sm_location
Use /dev/shm for shared memory files in osc components
2018-06-05 09:42:14 -06:00
Nathan Hjelm
948e38d260
Merge pull request #5226 from mkurnosov/base-reduce-scatter-butterfly
coll/base: add butterfly algorithm for MPI_Reduce_scatter
2018-06-05 09:38:39 -06:00
Mikhail Kurnosov
3adf96fdb8 coll/base: add butterfly algorithm for MPI_Reduce_scatter
Implements butterfly algorithm for MPI_Reduce_scatter.
The algorithm can be used both by commutative and non-commutative operations, for power-of-two and non-power-of-two number of processes.

Signed-off-by: Mikhail Kurnosov <mkurnosov@gmail.com>
2018-06-05 15:53:13 +07:00
Ben Menadue
34ec0bd8ab Replace MPI_Type_extent with MPI_Type_get_extent in ROMIO.
Signed-off-by: Ben Menadue <ben.menadue@nci.org.au>
2018-06-05 15:27:58 +10:00
Ben Menadue
756cc67221 Replace MPI_Address with MPI_Get_address in ROMIO.
Signed-off-by: Ben Menadue <ben.menadue@nci.org.au>
2018-06-05 15:27:25 +10:00
Nathan Hjelm
8192eb9aa6 patch/overwrite: add support for aarch64
This commit adds patcher support of aarch64. The current
implementation uses mov, movk, and br to perform the jump. This uses 5
instructions.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2018-06-04 16:04:26 -06:00
Arm
555029b323
Merge pull request #5216 from thananon/btl_ofi
btl/ofi: the component now compiles with libfabric < 1.5.
2018-06-04 13:47:00 -07:00
Thananon Patinyasakdikul
c18cf7315f btl/ofi: configury: will not build if OFI ver < 1.5.
This commit fixes problem where users have libfabric version < 1.5
installed and build failed because the new MR modebits does not exist.

Signed-off-by: Thananon Patinyasakdikul <thananon.patinyasakdikul@intel.com>
2018-06-04 10:35:50 -07:00
Gilles Gouaillardet
fe8d9dc375
Merge pull request #5221 from ggouaillardet/topic/java_mpi1
java: do not use MPI1 deprecated subroutines
2018-06-04 12:59:08 +09:00
Gilles Gouaillardet
05b3546151 java: do not use MPI1 deprecated subroutines
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2018-06-04 10:49:52 +09:00
Ralph Castain
82a664a5ff
Merge pull request #5218 from rhc54/topic/cleanup
Fix external hwloc builds
2018-06-03 13:36:10 -07:00
Ralph Castain
7c0ec7e851 Cleanup warnings in binding code
This still leaves two unresolved warnings:

base/rmaps_base_binding.c:577:22: warning: variable ‘clvm’ set but not used [-Wunused-but-set-variable]
     unsigned clvl=0, clvm=0;
                      ^~~~
base/rmaps_base_binding.c:576:27: warning: variable ‘hwm’ set but not used [-Wunused-but-set-variable]
     hwloc_obj_type_t hwb, hwm;
                           ^~~

The problem is that these values are used in the OPAL_HWLOC_MAKE_OBJ_CACHE macro to form a variable name. Thus, the compiler doesn't recognize the values as being "used". I'm not entirely sure how to resolve it cleanly.

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2018-06-03 11:47:14 -07:00
Ralph Castain
014bb3c8de Fix external hwloc builds
Remove spurious comma in header file definition. Remove unused variables

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2018-06-03 11:24:21 -07:00
Ralph Castain
3020b699f3
Merge pull request #5213 from rhc54/topic/rte
Enable the PMIx ompi/rte component
2018-06-03 10:23:40 -07:00
Jeff Squyres
a1737ca3eb
Merge pull request #5092 from jsquyres/pr/finalized-attribute-fix
mpi/finalized: don't hang if called during MPI_FINALIZE
2018-06-03 13:10:41 -04:00
Ralph Castain
55ac526a67 Enable the PMIx ompi/rte component
Get the OMPI rte/pmix component working. This was tested using PRRTE as the RM, configuring OMPI using:

* autogen --no-orte

* with external libevent, external hwloc, and external PMIx master

* configuring PMIx master with the same libevent and hwloc

* execute the application using PRRTE's "prun" launcher, which has the same cmd line as ORTE's mpirun

Note that PMIx master appears to have a bug in the event notification system that caches job termination events. Thus, the first execution runs fine, but subsequent executions cause an "abort" when the OMPI default error handler is invoked upon notification of the prior job's termination. Will work that separately.

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
(cherry picked from commit 134cca9ac0de092d767999357573a31703f72292)
2018-06-03 07:25:12 -07:00
Ralph Castain
6df6d6a7f3 Ignore new generated file
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
(cherry picked from commit 19d5e5ad57a1e724ed02c6cbb0b5cdf4aff2fac7)
2018-06-03 07:24:59 -07:00
Ralph Castain
4ceaed3a76 Merge https://github.com/bgoglin/ompi into topic/rte2 2018-06-03 07:24:12 -07:00
Howard Pritchard
623e36de8a
Merge pull request #5205 from thananon/btl_ofi
new btl/ofi: RDMA only btl using libfabric.
2018-06-02 13:00:50 -06:00
Thananon Patinyasakdikul
6efb8069ec new btl/ofi: RDMA only btl using libfabric.
This commit added new transport layer to be used with osc rdma module.
This BTL provides put, get, atomic and fetch atomic operations. It can
be used with multiple hardware vendors as long as they have their
provider under Libfabric and have the right capabilities.

Signed-off-by: Thananon Patinyasakdikul <thananon.patinyasakdikul@intel.com>
2018-06-01 15:22:04 -07:00
Jeff Squyres
38ed70de6f ompi_mpi_finalize: remove some dead code
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-06-01 13:37:20 -07:00
Jeff Squyres
35438ae9b5 mpi/finalized: revamp INITIALIZED/FINALIZED
Per MPI-3.1:8.7.1 p361:11-13, it's valid for MPI_FINALIZED to be
invoked during an attribute destruction callback (e.g., during the
destruction of keyvals on MPI_COMM_SELF during the very beginning of
MPI_FINALIZE).  In such cases, MPI_FINALIZED must return "false".

Prior to this commit, we hung in FINALIZED if it were invoked during
a COMM_SELF attribute destruction callback in FINALIZE.  See
https://github.com/open-mpi/ompi/issues/5084.

This commit converts the MPI_INITIALIZED / MPI_FINALIZED
infrastructure to use a single enum (ompi_mpi_state, set atomically)
to represent the state of MPI:

- not initialized
- init started
- init completed
- finalize started
- finalize past COMM_SELF destruction
- finalize completed

The "finalize past COMM_SELF destruction" state is what allows us to
return "false" from MPI_FINALIZED before COMM_SELF has been fully
destroyed / all attribute callbacks have been invoked.

Since this state is checked at nearly every MPI API call (to see if
we're outside of the INIT/FINALIZE epoch), care was taken to use
atomics to *set* the ompi_mpi_state value in ompi_mpi_init() and
ompi_mpi_finalize(), but performance-critical code paths can simply
read the variable without needing to use a slow call to an
opal_atomic_*() function.

Thanks to @AndrewGaspar for reporting the issue.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2018-06-01 13:36:29 -07:00
Edgar Gabriel
0d66e02179
Merge pull request #5211 from edgargabriel/pr/dynamic_gen2_large_offset_Fix
fcoll/dynamic_gen2: ensure some variables can hold an intermediate value
2018-06-01 08:39:36 -05:00
Edgar Gabriel
52bd606294 fcoll/dynamic_gen2: make sure that intermediate variables can hold the offset
for very large offsets, ome ariables used in the fcoll/dynamic_gen2
code base were under certain circumstances not large enough to hold
intermediate values. This issue was more detected in the vulcan component
but could happen in the dynamic_gen2 component as well.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2018-06-01 06:53:38 -05:00
Nathan Hjelm
7ac3797a98 README: remove note about ARM/power hangs
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2018-05-31 19:45:19 -06:00
Nathan Hjelm
f8dbf62879 opal/asm: change ll/sc atomics to macros
This commit fixes a hang that occurs with debug builds of Open MPI on
aarch64 and power/powerpc systems. When the ll/sc atomics are inline
functions the compiler emits load/store instructions for the function
arguments with -O0. These extra load/store arguments can cause the ll
reservation to be cancelled causing live-lock.

Note that we did attempt to fix this with always_inline but the extra
instructions are stil emitted by the compiler (gcc). There may be
another fix but this has been tested and is working well.

References #3697. Close when applied to v3.0.x and v3.1.x.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2018-05-31 19:45:19 -06:00
Nathan Hjelm
50a9508e0f
Merge pull request #5210 from ggouaillardet/topic/mpifh_compat
fortran/mpif-h: fix MPI1 compatibility Makefile
2018-05-31 19:44:14 -06: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