1
1

485 Коммитов

Автор SHA1 Сообщение Дата
KAWASHIMA Takahiro
eb5c31521b mpi/c: Fix MPI_IALLTOALLW memchecker 2016-04-11 18:47:30 +09:00
KAWASHIMA Takahiro
1ced7f213c mpi/c: Fix IALLTOALL{V|W} + MPI_IN_PLACE param check
`sendcounts`, `sdispls`, and `sendtype(s)` must be ignored
if `MPI_IN_PLACE` is specified for `sendbuf`.
This commit makes the param check code same as the blocking
`ALLTOALL{V|W}` function.
2016-04-11 18:34:11 +09:00
Gilles Gouaillardet
7b803ac557 MPI_Unpack: fix error code when insize <= 0
this fixes a regression from open-mpi/ompi@f2e33c725f
2016-04-06 09:47:21 +09:00
Gilles Gouaillardet
f2e33c725f MPI_Unpack: fix return status
this regression was previously introduced in open-mpi/ompi@221e6e2eab
2016-03-31 09:56:54 +09:00
Gilles Gouaillardet
5932287cef datatype/[un]pack_external[_size]: move subroutines down to ompi/datatype
so it can be directly used by test/datatype/external32
2016-03-30 13:01:33 +09:00
Gilles Gouaillardet
221e6e2eab Add the datatype checks to the pack/unpack functions.
The datatype must satisfy the same constraints as for the
corresponding communication function (send for pack and
recv for unpack).
2016-03-30 11:40:08 +09:00
Gilles Gouaillardet
a89f113507 mpi/c: add missing OPAL_CR_EXIT_LIBRARY() in [un]pack[_external] 2016-03-30 11:25:21 +09:00
Nathan Hjelm
d4afb16f5a opal: rework mpool and rcache frameworks
This commit rewrites both the mpool and rcache frameworks. Summary of
changes:

 - Before this change a significant portion of the rcache
   functionality lived in mpool components. This meant that it was
   impossible to add a new memory pool to use with rdma networks
   (ugni, openib, etc) without duplicating the functionality of an
   existing mpool component. All the registration functionality has
   been removed from the mpool and placed in the rcache framework.

 - All registration cache mpools components (udreg, grdma, gpusm,
   rgpusm) have been changed to rcache components. rcaches are
   allocated and released in the same way mpool components were.

 - It is now valid to pass NULL as the resources argument when
   creating an rcache. At this time the gpusm and rgpusm components
   support this. All other rcache components require non-NULL
   resources.

 - A new mpool component has been added: hugepage. This component
   supports huge page allocations on linux.

 - Memory pools are now allocated using "hints". Each mpool component
   is queried with the hints and returns a priority. The current hints
   supported are NULL (uses posix_memalign/malloc), page_size=x (huge
   page mpool), and mpool=x.

 - The sm mpool has been moved to common/sm. This reflects that the sm
   mpool is specialized and not meant for any general
   allocations. This mpool may be moved back into the mpool framework
   if there is any objection.

 - The opal_free_list_init arguments have been updated. The unused0
   argument is not used to pass in the registration cache module. The
   mpool registration flags are now rcache registration flags.

 - All components have been updated to make use of the new framework
   interfaces.

As this commit makes significant changes to both the mpool and rcache
frameworks both versions have been bumped to 3.0.0.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2016-03-14 10:50:41 -06:00
George Bosilca
56425a5d48 Fix issue identified by Lisandro Dalcin regarding the lack
of support for NULL value in MPI_Type_set_attr.
Provides a fix for issue #1359.
2016-02-14 00:07:08 -05:00
Nathan Hjelm
064a67f5b9 Fix MPI_Get_address (MPI_BOTTOM, ...)
Nowhere in the standard does it say that it is invalid to pass
MPI_BOTTOM to MPI_Get_address yet we were returning an error. This
commit removes the error check on NULL == location.

Fixes open-mpi/ompi#1355.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2016-02-12 16:34:21 -07:00
Gilles Gouaillardet
2adbe273d6 mpi: have MPI_Wtick() return the period (and not the frequency) if OPAL_TIMER_CYCLE_NATIVE 2016-01-20 14:14:47 +09:00
Artem Polyakov
2abb2972ac Fix Mellanox copyrights with respect to the following PRs:
* https://github.com/open-mpi/ompi/pull/1184
* https://github.com/open-mpi/ompi/pull/1188
* https://github.com/open-mpi/ompi/pull/1197
* https://github.com/open-mpi/ompi/pull/1202
* https://github.com/open-mpi/ompi/pull/1210
* https://github.com/open-mpi/ompi/pull/1216
* https://github.com/open-mpi/ompi/pull/1236
* https://github.com/open-mpi/ompi/pull/1237
* https://github.com/open-mpi/ompi/pull/1248
* https://github.com/open-mpi/ompi/pull/1260
* https://github.com/open-mpi/ompi/pull/1264
2015-12-30 00:12:19 +06:00
George Bosilca
6e6fd14a19 Fix indentation. 2015-12-20 03:15:19 -05:00
Gilles Gouaillardet
f0df2a7b2b ompi: silence CID 1343322 2015-12-15 13:33:43 +09:00
Nathan Hjelm
139799f3c4 Merge pull request #1202 from artpol84/alltoall_fix
Fix MPI_Alltoall to support inter-communicators.
2015-12-14 14:33:23 -08:00
Nathan Hjelm
b7ba301310 Merge pull request #1165 from hjelmn/add_procs_group
ompi/group: release ompi_proc_t's at group destruction
2015-12-14 13:53:42 -08:00
Ralph Castain
5e5adebf8e Port the changes from #782 to the master. Not everything applies here as the code in the 1.10 series is a little different. In addition, we asked for a few changes (e.g., using MPI_ERR_ARG instead of "13") that are incorporated here.
Thanks to @jsharpe for the PR
2015-12-12 12:40:34 -08:00
Artem Polyakov
25077fc5d9 Fix MPI_Alltoall to support inter-communicators.
Remove excessive parameter check to avoid premature exit from the collective.

MPI standard says:
The type signature associated with sendcount, sendtype, at a process must be equal to
the type signature associated with recvcount, recvtype at any other process. This implies
that the amount of data sent must be equal to the amount of data received, pairwise between
every pair of processes.

In case of inter-communicator we have 2 group of processes and "left" group may call
MPI_Alltoall(NULL, 0, MPI_INT, buf, 10, MPI_INT, comm, ...);
and the right one:
MPI_Alltoall(buf,10,MPI_INT, NULL, 0, MPI_INT, comm, ...);

And it would be legal though one of the group will receive 0 bytes from others.

This was triggered by MPICH/coll test called icalltoall.
2015-12-11 08:50:34 +06:00
Gilles Gouaillardet
ef03bc726c ompi: fix comment in ompi/mpi/c/Makefile.am
Thanks Jeff for the review
2015-12-07 11:34:01 +09:00
Nathan Hjelm
5334d22a37 ompi/group: release ompi_proc_t's at group destruction
This commit changes the way ompi_proc_t's are retained/released by
ompi_group_t's. Before this change ompi_proc_t's were retained once
for the group and then once for each retain of a group. This method
adds unnecessary overhead (need to traverse the group list each time
the group is retained) and causes problems when using an async
add_procs.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-11-30 23:03:47 -07:00
George Bosilca
4ac247b1da Minor updated on the validity checks for the alltoall collectives. 2015-10-24 15:25:28 -04:00
Nathan Hjelm
6ae57647ab win: fix erroneous argument check
When using dynamic memory windows the displacement becomes a
pointer. Since the high bit may be set on valid pointers on some
platforms the check for disp > 0 is invalid. This commit adds the
window flavor to ompi_win_t and disables the displacement check when
operating on dynamic memory windows.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-10-22 09:33:26 -06:00
Gilles Gouaillardet
a0782e1c7e mpi: MPI_Neighbor_all* and MPI_Ineighbor_all* do not work with
inter communicators (fail with MPI_ERR_COMM) or non process topologies
communicators (fail with MPI_ERR_TOPOLOGY)
2015-10-21 16:21:19 +09:00
Gilles Gouaillardet
3b0b929883 ompi: MPI_IN_PLACE is not a valid argument of MPI_Neighbor_all* and MPI_Ineighbor_all* 2015-10-21 14:46:35 +09:00
Gilles Gouaillardet
256976a108 mpi: MPI_IN_PLACE is not a valid argument of MPI_All* and MPI_Iall* with an inter communicator 2015-10-21 14:46:28 +09:00
Gilles Gouaillardet
2bd77ed4f9 mpi: fail with MPI_ERR_INTERN if MPI_IN_PLACE is used with MPI_I*alltoall*
currently, MPI fails with MPI_ERR_ARG. This is counter intuitive since
MPI_IN_PLACE is a legitimate parameter. MPI_IN_PLACE might not be correctly
implemented by all the non blocking modules (libnbc, ...) so fail with
MPI_ERR_INTERN for the time being.
2015-10-20 14:12:33 +09:00
Jeff Squyres
f5ad90c920 init/finalize: extensions
Proposed extensions for Open MPI:

- If MPI_INITLIZED is invoked and MPI is only partially initialized,
  wait until MPI is fully initialized before returning.
- If MPI_FINALIZED is invoked and MPI is only partially finalized,
  wait until MPI is fully finalized before returning.
- If the ompi_mpix_allow_multi_init MCA param is true, allow MPI_INIT
  and MPI_INIT_THREAD to be invoked multiple times without error (MPI
  will be safely initialized only the first time it is invoked).
2015-10-15 12:39:15 -04:00
Jeff Squyres
ac25505e03 mpi: infrastructure to gracefully disable MPI dyn procs
Add ompi_mpi_dynamics_disable() function to disable MPI dynamic
process functionality (i.e., such that if MPI_COMM_SPAWN/etc. are
invoked, you'll get a show_help error explaining that MPI dynamic
process functionality is disabled in this environment -- instead of a
potentially-cryptic network or hardware error).

Fixes #984
2015-10-14 13:42:56 -07:00
Jeff Squyres
a4adee5329 dynamics: fix OPAL_CR_EXIT_LIBRARY()
Noticed that these were wrong will working on a different pull
request.  Submit these fixes indepdent of other changes, just to keep
things separated.
2015-10-13 10:57:33 -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
Gilles Gouaillardet
53b952dc2b oshmem: invoke the C PMPI_* subroutines instead of the MPI_* ones
when profiling is built.
This prevents oshmem subroutines from being wrapped twice by third
party tools (e.g. once in oshmem and once in MPI)
see discussion starting at http://www.open-mpi.org/community/lists/devel/2015/08/17842.php

Thanks to Bert Wesarg for bringing this to our attention
2015-10-13 08:52:03 +09:00
Gilles Gouaillardet
16d65a2762 fortran/mpif-h: invoke the C PMPI_* subroutines instead of the MPI_* ones
when profiling is built.
This prevents Fortran subroutines from being wrapped twice by third
party tools (e.g. once in Fortran and once in C)
see discussion starting at http://www.open-mpi.org/community/lists/devel/2015/08/17842.php
2015-10-13 08:52:02 +09:00
Nathan Hjelm
6751409c32 ompi/win: save value of accumulate_ops info key on window
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-09-21 16:37:29 -06:00
Gilles Gouaillardet
fe351f6801 io: do not cast way the const modifier when this is not necessary
update the io framework and mpi c bindings
2015-09-09 09:18:58 +09:00
Gilles Gouaillardet
e01bac962f coll: do not cast way the const modifier when this is not necessary
update the coll framework and mpi c bindings
2015-09-09 09:18:57 +09:00
Gilles Gouaillardet
6e6a3e965c pml: do not cast way the const modifier when this is not necessary
update the pml framework and mpi c bindings
2015-09-09 09:18:57 +09:00
Gilles Gouaillardet
43ef261d46 topo: do not cast way the const modifier when this is not necessary
update the topo framework and mpi c bindings
2015-09-09 09:18:57 +09:00
Ralph Castain
e6add86e4f Deal with connect/accept between two jobs from different mpirun's. Somewhat optimize connect/accept by using MPI bcast to distribute the participants instead of another PMIx lookup. Cleanup some Coverity issues. 2015-09-07 09:19:24 -07:00
Ralph Castain
f6948c2bb4 Sync with PMIx master 43e45c3. Get multi-node publish/lookup/unpublish working 2015-09-04 10:07:17 -07:00
Ralph Castain
a772b46c15 Bring the MPI_Publish and friends online 2015-09-02 12:04:07 -07:00
Gilles Gouaillardet
21642a2407 osc: do not cast way the const modifier when this is not necessary
update the osc framework and mpi c bindings
2015-08-31 10:34:05 +09:00
Gilles Gouaillardet
21b1e7f8c5 mpi conformance: fix prototypes
- MPI_Compare_and_swap
- MPI_Fetch_and_op
- MPI_Raccumulate
- MPI_Win_detach

Thanks to Michael Knobloch and Takahiro Kawashima for bringing this
to our attention
2015-08-31 10:34:05 +09:00
Ralph Castain
cf6137b530 Integrate PMIx 1.0 with OMPI.
Bring Slurm PMI-1 component online
Bring the s2 component online

Little cleanup - let the various PMIx modules set the process name during init, and then just raise it up to the ORTE level. Required as the different PMI environments all pass the jobid in different ways.

Bring the OMPI pubsub/pmi component online

Get comm_spawn working again

Ensure we always provide a cpuset, even if it is NULL

pmix/cray: adjust cray pmix component for pmix

Make changes so cray pmix can work within the integrated
ompi/pmix framework.

Bring singletons back online. Implement the comm_spawn operation using pmix - not tested yet

Cleanup comm_spawn - procs now starting, error in connect_accept

Complete integration
2015-08-29 16:04:10 -07:00
Nathan Hjelm
b8356dae05 ompi/win: add internal support for returning same_size and same_disp_unit info keys
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-08-13 13:19:52 -06:00
Jeff Squyres
2409fa166b get_library_version: checking string constants vs. NULL is dead code
The prior code was checking string constants (which are #defines from
configure) against NULL.  They can never be NULL, so the checks were
overly-defensive.  If the preprocessor macros do not exist, we'll get
a different compiler error.  So remove the dead code.

This fixes CID 72349.
2015-08-12 05:35:12 -07:00
Nysal Jan K.A
5a7bd898f9 Fix an invalid memory access in mrecv & imrecv
After the call to PML mrecv/imrecv, the message handle
is set to MPI_MESSAGE_NULL. Use the cached communicator
while invoking the error handler.
2015-07-30 19:52:40 +05:30
Jeff Squyres
5e159feb5a get_library_version: always use "X.Y.Z" version number format
Fix one last place where we would write only "X.Y" if Z was 0 (we now
always write all three X, Y, Z values, even if Z is zero).
2015-07-25 08:01:36 -04:00
Gilles Gouaillardet
46a87cabf0 fix comment in ompi/mpi/c/group_{excl,incl}.c
no code change
2015-07-21 10:29:55 +09: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
Edgar Gabriel
f2af8e94ff - first cut on the io interface changes
- add the C interfaces for the new non-blocking collective I/O functions of MPI 3.1
2015-07-09 10:58:13 -05:00