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

485 Коммитов

Автор SHA1 Сообщение Дата
Gilles Gouaillardet
69ba2a9b6b ddt: fix support of MPI_COMBINER_RESIZED in __ompi_datatype_create_from_args
Thanks James Ramsey for the report
2016-01-28 11:32:29 +09:00
Nathan Hjelm
b921831f2b ompi/datatype: make datatype pack thread safe
This commit makes ompi_datatype_get_pack_description thread safe. The
call is used by osc/pt2pt to send the packed description to remote
peers. Before this commit if MPI_THREAD_MULTIPLE is enabled and the
user uses MPI_Put, MPI_Get, etc we could hit a race where multiple
threads attempt to store the packed description on the datatype. Since
the code in question is not performance-critical the threading fix
uses opal_atomic_* calls instead of bothering with OPAL_THREAD_*.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2016-01-21 17:53:28 -07:00
George Bosilca
12dad8b37f Fix the missing resize of the returned type for
the subarray and darray types.

Thanks Keith Bennett and Dan Garmann for reporting this issue

Fixes open-mpi/ompi#1191
2015-12-21 09:41:30 +09:00
Gilles Gouaillardet
d43ad3fada ddt: duplicate MPI_DATATYPE_NULL when ompi_datatype_create_indexed of ompi_datatype_create_indexed_block is invoked with a zero count 2015-12-08 16:25:36 +09:00
George Bosilca
b14212f142 Fix Coverity issue 1338059. 2015-11-02 22:51:52 -05:00
George Bosilca
679dc9b437 Fix the subarray and darray type creation. Include a
small patch provided by Gilles.
2015-10-26 23:44:26 -04:00
yosefe
502dc8aaa4 add pml-specific field in OMPI datatype.
PML UCX will use it to cache a handle for UCX datatype.
2015-10-20 19:46:06 +03: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
Nathan Hjelm
4d92c9989e more c99 updates
This commit does two things. It removes checks for C99 required
headers (stdlib.h, string.h, signal.h, etc). Additionally it removes
definitions for required C99 types (intptr_t, int64_t, int32_t, etc).

Signed-off-by: Nathan Hjelm <hjelmn@me.com>
2015-06-25 10:14:13 -06:00
Ralph Castain
869041f770 Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
Gilles Gouaillardet
0a2f60994c ompi/ddt: fix #ifdef vs #if HAVE_xxx 2015-05-26 16:59:36 +09:00
Gilles Gouaillardet
9d56b85b55 initialize common symbols from ompi 2015-05-08 10:11:58 +09:00
Gilles Gouaillardet
ef4b6203a4 Correctly unpack datatype.
Alignment requirements were relaxed in open-mpi/ompi@33a3ace874
so correctly handle this when unpacking a datatype.
2015-05-01 17:08:15 +09:00
Gilles Gouaillardet
96e3cbe8fc Remove an incorrect assert.
Alignment requirements were relaxed in open-mpi/ompi@33a3ace874
and made a previous alignment check incorrect.
2015-05-01 12:53:12 +09:00
George Bosilca
33a3ace874 Minimize the alignments. We only do it when we need to pack
data that must be aligned (aka the displacement). All other
cases do not require special alignments, and are treated
normally.
Fix the comment regarding the alignment requirements.
2015-04-30 22:06:50 -04:00
George Bosilca
015d3f56cf Fix the INDEXED_BLOCK issue identified by IBM. 2015-04-30 14:43:19 -04:00
Gilles Gouaillardet
697a866b6e ddt: correctly align next datatype description
This bug can be evidenced by the test/datatype/ddt_pack
test case on sparc architecture.
2015-04-30 15:04:54 +09:00
Nathan Hjelm
88072f9b8b ompi/datatype: fix subarray datatype
The subarray datatype was not packing/unpacking correctly. This was
leading to wrong results whenever the lb of the subarray datatype was
non-zero.

I tracked the issue to the use of ompi_datatype_create_resized. This
function simply duplicates the old datatype and sets the lb and
extent. This is unfortunately insufficent for the pack/unpack
functions which use the loop end first element offset NOT the lb. This
offset is 0 in the resized datatype. Once ompi_datatype_create_resized
has been fixed this commit should be reverted.

Fixes #380.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-03-24 14:33:10 -06:00
Jeff Squyres
4f1139590f datatypes: trivial spelling fix
s/commited/committed/gi
2015-02-27 18:16:01 -08:00
George Bosilca
438b6e136b Edgar noticed that the commit 3960817 broke the MPI_Type_create_resized.
So, I revert it until I figure out a better way.
2015-01-23 18:12:26 -05:00
George Bosilca
ded4cbf20f Correctly set the upper and lower bound for the subarray and darray. 2015-01-19 02:26:14 -05:00
George Bosilca
39608176db If we want the resized data to have the correct LB and UB (both
soft and hard markers) we should force an add instead of
relying on the OPAL datatype resize operation.
2015-01-19 02:24:36 -05:00
George Bosilca
19c96465f3 Fix the use of hard markers MPI_LB and MPI_UB in the creation of
subarray and darray. Thanks to Gus Correa for pointing to the
MPICH bug report.
2015-01-17 23:11:07 -05:00
Ralph Castain
552c9ca5a0 George did the work and deserves all the credit for it. Ralph did the merge, and deserves whatever blame results from errors in it :-)
WHAT:    Open our low-level communication infrastructure by moving all necessary components (btl/rcache/allocator/mpool) down in OPAL

All the components required for inter-process communications are currently deeply integrated in the OMPI layer. Several groups/institutions have express interest in having a more generic communication infrastructure, without all the OMPI layer dependencies.  This communication layer should be made available at a different software level, available to all layers in the Open MPI software stack. As an example, our ORTE layer could replace the current OOB and instead use the BTL directly, gaining access to more reactive network interfaces than TCP.  Similarly, external software libraries could take advantage of our highly optimized AM (active message) communication layer for their own purpose.  UTK with support from Sandia, developped a version of Open MPI where the entire communication infrastucture has been moved down to OPAL (btl/rcache/allocator/mpool). Most of the moved components have been updated to match the new schema, with few exceptions (mainly BTLs where I have no way of compiling/testing them). Thus, the completion of this RFC is tied to being able to completing this move for all BTLs. For this we need help from the rest of the Open MPI community, especially those supporting some of the BTLs.  A non-exhaustive list of BTLs that qualify here is: mx, portals4, scif, udapl, ugni, usnic.

This commit was SVN r32317.
2014-07-26 00:47:28 +00:00
Gilles Gouaillardet
8bafe06c57 Fixes *alltoall* collectives at top level
This commit :
 - Correctly retrieve the communicator size when
   checking memory and parameters
 - Ensure (sendtype,sendcount) and (recvtype,recvcount)
   matches and return with MPI_ERR_TRUNCATE otherwise
 - Return with MPI_SUCCESS without invoking the low level
   if no data is going to be transferred
 - Fixes trac:4506

cmr=v1.8.2:reviewer=bosilca

This commit was SVN r31815.

The following Trac tickets were found above:
  Ticket 4506 --> https://svn.open-mpi.org/trac/ompi/ticket/4506
2014-05-19 07:46:07 +00:00
Jeff Squyres
64c1228b55 Roll back r31519 and r31521: George convinced us that these approaches
weren't right.

This commit was SVN r31528.

The following SVN revision numbers were found above:
  r31519 --> open-mpi/ompi@b449c750b7
  r31521 --> open-mpi/ompi@e243805ed8
2014-04-24 20:27:03 +00:00
Jeff Squyres
b449c750b7 coll basic: correctly handle alltoall[vw] 0-sized messages
Patch from Gilles Gouaillardet on #4506 to correctly handle 0-sized
messages in coll/basic MPI_Alltoallv and MPI_Alltoallw.

Reviewed by Jeff Squyres.

Fixes trac:4506.

cmr=v1.8.2:reviewer=ompi-rm1.8

This commit was SVN r31519.

The following Trac tickets were found above:
  Ticket 4506 --> https://svn.open-mpi.org/trac/ompi/ticket/4506
2014-04-24 16:25:43 +00:00
George Bosilca
7f5314eed9 Fix the handling of the displacement array for HINDEXED_BLOCK
datatype creation.

This commit was SVN r31466.
2014-04-21 16:43:58 +00:00
George Bosilca
7e1593ef80 Prevent integer overflow in datatype creation. Patch based on
Gilles Gouaillardet solution attached to ticket #4145.

Closes trac:4145.
cmr=v1.7.4:reviewer=ompi-rm1.7
cmr=v1.6.6:reviewer=ompi-rm1.6

This commit was SVN r30342.

The following Trac tickets were found above:
  Ticket 4145 --> https://svn.open-mpi.org/trac/ompi/ticket/4145
2014-01-21 14:44:00 +00:00
Brian Barrett
8b778903d8 Fix longstanding issue with our multi-project support. Rather than using
pkg{data,lib,includedir}, use our own ompi{data,lib,includedir}, which is
always set to {datadir,libdir,includedir}/openmpi.  This will keep us from
having help files in prefix/share/open-rte when building without Open MPI,
but in prefix/share/openmpi when building with Open MPI.

This commit was SVN r30140.
2014-01-07 22:11:15 +00:00
George Bosilca
7178492dd5 Correctly initialize and finalize all the datatype classes. No memory leaks on the
datatype engine subsists.

This commit was SVN r30019.
2013-12-20 15:57:10 +00:00
George Bosilca
90c42bf762 Rearrange the #include to minimize clutter.
This commit was SVN r29286.
2013-09-28 17:15:33 +00:00
Nathan Hjelm
0b8fc13299 MPI-3.0: update C bindings with const and consistent use of [] for
arrays.

The MPI 3.0 standard added const to all in buffers in the C bindings. This
commit adds the const keyword and in most cases casts const away. We will
eventually should go through and update the various interfaces (coll, pml,
io, etc) to take the const keyword. The group, comm, win, and datatype
interfaces have been updated with const.

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

This commit was SVN r29266.

The following Trac tickets were found above:
  Ticket 3785 --> https://svn.open-mpi.org/trac/ompi/ticket/3785
2013-09-26 21:56:20 +00:00
Nathan Hjelm
7929fb9dea Cleanup complex datatypes and update datatypes and operator code to use C99.
This commit changes the underlying opal complex datatypes to match the
C99 types: float _Complex, double _Complex, and long double _Complex. The
fortran and C++ types now are aliases to these basic types instead of
structure types. The operators in ompi/mca/op/base now work on only the
C99 types and the fortran types use these operators if the fortran type
matches a C complex type (this should almost always be the case.)

C99 is not is use in both the datatype and operator code and should make
the code both cleaner and much less fragile.

This commit was SVN r29193.
2013-09-17 17:49:42 +00:00
Nathan Hjelm
c4c69b4ddf MPI-3: add support for large counts using derived datatypes
Add support for MPI_Count type and MPI_COUNT datatype and add the required
MPI-3 functions MPI_Get_elements_x, MPI_Status_set_elements_x,
MPI_Type_get_extent_x, MPI_Type_get_true_extent_x, and MPI_Type_size_x.
This commit adds only the C bindings. Fortran bindins will be added in
another commit. For now the MPI_Count type is define to have the same size
as MPI_Offset. The type is required to be at least as large as MPI_Offset
and MPI_Aint. The type was initially intended to be a ssize_t (if it was
the same size as a long long) but there were issues compiling romio with
that definition (despite the inclusion of stddef.h).

I updated the datatype engine to use size_t instead of uint32_t to support
large datatypes. This will require some review to make sure that 1) the
changes are beneficial, 2) nothing was broken by the change (I doubt
anything was), and 3) there are no performance regressions due to this
change.

Increase the maximum number of predifined datatypes to support MPI_Count

Put common get_elements code to ompi/datatype/ompi_datatype_get_elements.c

Update MPI_Get_count to reflect changes in MPI-3 (return MPI_UNDEFINED when the count is too large for an int)

This commit was SVN r28932.
2013-07-23 15:35:14 +00:00
Nathan Hjelm
1349b825c2 MPI-2.2: Add C++ datatypes to mpi.h and fix support for MPI_C_*COMPLEX
This commit was SVN r28919.
2013-07-22 23:45:45 +00:00
George Bosilca
f7ac610bee Fix an issue with the packing/unpacking of datatype representations
identified by Takahiro Kawashima. The packed length was reported as a
max bound and not provided on the unpacking side, so the unpacking
buffer could become out of sync with the content stored after the
packed representation.

The fix force the packing operation itself before reporting the length,
so we always report now the real number of bytes in the packed
representation.

cmr:v1.7.3:reviewer=jsquyres

This commit was SVN r28790.
2013-07-15 10:54:22 +00:00
George Bosilca
a9aae9c538 Patch based on Takahiro Kawashima fixing the issues with some
of the Fortran datatypes. This patch prevent the copy of the
datatype description from the OPAL to the OMPI layer in order
to decrease the memory requirements.

This commit was SVN r28553.
2013-05-22 18:35:21 +00:00
George Bosilca
4d9f30fb05 Fix issue identified by Takahiro Kawashima regarding the overwriting
of the OPAL datatype descriptions upon MPI_Init. Now each layer (OPAL
and OMPI) uses it's own descriptions for the predefined datatypes,
thus preventing over-writing of the other layer data description.

This commit was SVN r28535.
2013-05-17 13:09:16 +00:00
George Bosilca
4a581d276d Fix the issues with the MPI_Op and the Fortran90 types.
This commit was SVN r27707.
2012-12-19 11:08:18 +00:00
George Bosilca
113b45b4e6 Add support for the new MPI_Type_create_hindexed_block (MPI 3.0).
This commit was SVN r26962.
2012-08-07 12:48:30 +00:00
George Bosilca
b0e2dc7ae3 Fix the darray issue where the UB was not computed correctly. The
old version of the code tried to use the MPI_UB marker, but this
failed if the old marker (the one set in the cyclic function) had
a larger value. Replace the hardcore markers MPI_LB and MPI_UB by
their softer counterparts (using the _resize function).

This commit was SVN r26862.
2012-07-24 22:24:54 +00:00
Jeff Squyres
4ccf94c734 Fixes trac:3148. Ensure that MPI_2INTEGER uses MPI_INTEGER as its
underlying type, not MPI_INT.

This commit was SVN r26726.

The following Trac tickets were found above:
  Ticket 3148 --> https://svn.open-mpi.org/trac/ompi/ticket/3148
2012-07-03 11:23:02 +00:00
Jeff Squyres
a5e46a83ad Fixes trac:3109: patch from Patrick LeDot/Bull -- fix MPI_COMPLEX8, 16,
and 32.

This commit was SVN r26527.

The following Trac tickets were found above:
  Ticket 3109 --> https://svn.open-mpi.org/trac/ompi/ticket/3109
2012-05-30 14:08:30 +00:00
George Bosilca
e890a8379b Various minor cleanups.
This commit was SVN r26461.
2012-05-21 13:15:24 +00:00
Jeff Squyres
253444c6d0 == Highlights ==
1. New mpifort wrapper compiler: you can utilize mpif.h, use mpi, and use mpi_f08 through this one wrapper compiler
 1. mpif77 and mpif90 still exist, but are sym links to mpifort and may be removed in a future release
 1. The mpi module has been re-implemented and is significantly "mo' bettah"
 1. The mpi_f08 module offers many, many improvements over mpif.h and the mpi module

This stuff is coming from a VERY long-lived mercurial branch (3 years!); it'll almost certainly take a few SVN commits and a bunch of testing before I get it correctly committed to the SVN trunk.

== More details ==

Craig Rasmussen and I have been working with the MPI-3 Fortran WG and Fortran J3 committees for a long, long time to make a prototype MPI-3 Fortran bindings implementation.  We think we're at a stable enough state to bring this stuff back to the trunk, with the goal of including it in OMPI v1.7.  

Special thanks go out to everyone who has been incredibly patient and helpful to us in this journey:

 * Rolf Rabenseifner/HLRS (mastermind/genius behind the entire MPI-3 Fortran effort)
 * The Fortran J3 committee
 * Tobias Burnus/gfortran
 * Tony !Goetz/Absoft
 * Terry !Donte/Oracle
 * ...and probably others whom I'm forgetting :-(

There's still opportunities for optimization in the mpi_f08 implementation, but by and large, it is as far along as it can be until Fortran compilers start implementing the new F08 dimension(..) syntax.

Note that gfortran is currently unsupported for the mpi_f08 module and the new mpi module.  gfortran users will a) fall back to the same mpi module implementation that is in OMPI v1.5.x, and b) not get the new mpi_f08 module.  The gfortran maintainers are actively working hard to add the necessary features to support both the new mpi_f08 module and the new mpi module implementations.  This will take some time.

As mentioned above, ompi/mpi/f77 and ompi/mpi/f90 no longer exist.  All the fortran bindings implementations have been collated under ompi/mpi/fortran; each implementation has its own subdirectory:

{{{
ompi/mpi/fortran/
  base/               - glue code
  mpif-h/             - what used to be ompi/mpi/f77
  use-mpi-tkr/        - what used to be ompi/mpi/f90
  use-mpi-ignore-tkr/ - new mpi module implementation
  use-mpi-f08/        - new mpi_f08 module implementation
}}}

There's also a prototype 6-function-MPI implementation under use-mpi-f08-desc that emulates the new F08 dimension(..) syntax that isn't fully available in Fortran compilers yet.  We did that to prove it to ourselves that it could be done once the compilers fully support it.  This directory/implementation will likely eventually replace the use-mpi-f08 version.

Other things that were done:

 * ompi_info grew a few new output fields to describe what level of Fortran support is included
 * Existing Fortran examples in examples/ were renamed; new mpi_f08 examples were added
 * The old Fortran MPI libraries were renamed:
   * libmpi_f77 -> libmpi_mpifh
   * libmpi_f90 -> libmpi_usempi
 * The configury for Fortran was consolidated and significantly slimmed down.  Note that the F77 env variable is now IGNORED for configure; you should only use FC. Example:
{{{
shell$ ./configure CC=icc CXX=icpc FC=ifort ...
}}}

All of this work was done in a Mercurial branch off the SVN trunk, and hosted at Bitbucket.  This branch has got to be one of OMPI's longest-running branches.  Its first commit was Tue Apr 07 23:01:46 2009 -0400 -- it's over 3 years old!  :-)  We think we've pulled in all relevant changes from the OMPI trunk (e.g., Fortran implementations of the new MPI-3 MPROBE stuff for mpif.h, use mpi, and use mpi_f08, and the recent Fujitsu Fortran patches).

I anticipate some instability when we bring this stuff into the trunk, simply because it touches a LOT of code in the MPI layer in the OMPI code base.  We'll try our best to make it as pain-free as possible, but please bear with us when it is committed.

This commit was SVN r26283.
2012-04-18 15:57:29 +00:00
George Bosilca
c5e4b2ab44 Correctly moves the pointers around on big data.
This commit was SVN r26259.
2012-04-10 05:37:59 +00:00
George Bosilca
abf60337de Don't forget to move the pointers after the copy (only affects large data
transfers).

This commit was SVN r26243.
2012-04-06 14:50:04 +00:00
Ralph Castain
bd8b4f7f1e Sorry for mid-day commit, but I had promised on the call to do this upon my return.
Roll in the ORTE state machine. Remove last traces of opal_sos. Remove UTK epoch code.

Please see the various emails about the state machine change for details. I'll send something out later with more info on the new arch.

This commit was SVN r26242.
2012-04-06 14:23:13 +00:00
George Bosilca
64a2979dc3 Always return something.
This commit was SVN r26099.
2012-03-05 15:54:15 +00:00