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

223 Коммитов

Автор SHA1 Сообщение Дата
Gilles Gouaillardet
661c35ca67 cleanup dead code caused by the removal of the --with-threads configure option 2015-01-16 19:13:59 +09:00
Nathan Hjelm
3d79806805 add more internal RMA error codes 2015-01-06 13:39:04 -07:00
Jeff Squyres
cab1379dfb Fortran: only emit real16 and complex32 if supported
This is the master version of @ggouaillardet's patch from
open-mpi/ompi-release#148 (there was a minor conflict to fix and
several fuzzings of line numbers).
2015-01-06 09:47:26 -08:00
Gilles Gouaillardet
e8d084e6b9 fix ABI fix
Fix an undeleted line in open-mpi/ompi@24df0ed039
Thanks to Nick Papior Andersen for pointing this.
2014-12-28 18:07:51 +09:00
Gilles Gouaillardet
24df0ed039 MPI_Comm_split_type: fix ABI compatibility
ABI compatibility was previously broken in
open-mpi/ompi@3deda3dc82
2014-12-25 19:43:58 +09:00
Nick Papior Andersen
3deda3dc82 Added several new COMM_TYPE_<> splits
Using the underlying hardware identification to split
communicators based on locality has been enabled using
the MPI_Comm_Split_Type function.

Currently implemented split's are:
  HWTHREAD
  CORE
  L1CACHE
  L2CACHE
  L3CACHE
  SOCKET
  NUMA
  NODE
  BOARD
  HOST
  CU
  CLUSTER

However only NODE is defined in the standard which is why the
remaning splits are referred to using the OMPI_ prefix instead
of the standard MPI_ prefix.

I have tested this using --without-hwloc and --with-hwloc=<path>
which both give the same output.

NOTE: I think something fishy is going on in the locality operators.
In my test-program I couldn't get the correct split on these requests:
  NUMA, SOCKET, L3CACHE
where I suspected a full communicator but only got one.
2014-12-24 11:21:35 +00:00
Nathan Hjelm
1b564f62bd Revert "Merge pull request #275 from hjelmn/btlmod"
This reverts commit ccaecf0fd6, reversing
changes made to 6a19bf85dd.
2014-11-19 23:22:43 -07:00
Nathan Hjelm
60648e4231 add more internal RMA error codes 2014-11-19 11:33:04 -07:00
Ralph Castain
2ec59acac4 Silence a slew of warnings when --enable-memchecker is given. Reviewed by Jeff 2014-10-22 13:59:08 -07:00
Ralph Castain
9c20940190 Remove mpif-sizeof.h during distclean
This commit was SVN r32771.
2014-09-21 14:26:19 +00:00
Jeff Squyres
d7eaca83fa Fortran: Fix MPI_SIZEOF. What a disaster. :-(
What started as a simple ticket ended up reaching the way up to the
MPI Forum.
    
It turns out that we are supposed to have MPI_SIZEOF for all Fortran
interfaces: mpif.h, the mpi module, and the mpi_f08 module.
    
It further turns out that to properly support MPI_SIZEOF, your Fortran
compiler *has* support the INTERFACE keyword and ISO_FORTRAN_ENV.  We
can't use "ignore TKR" functionality, because the whole point of
MPI_SIZEOF is that the implementation knows what type was passed to it
("ignore TKR" functionality, by definition, throws that information
away).  Hence, we have to have an MPI_SIZEOF interface+implementation
for all intrinsic types, kinds, and ranks.

This commit therefore adds a perl script that generates both the
interfaces and implementations for MPI_SIZEOF in each of mpif.h, the
mpi module, and mpi_f08 module (yay consolidation!).

The perl script uses the results of some new configure tests:

* check if the Fortran compiler supports the INTERFACE keyword
* check if the Fortran compiler supports ISO_FORTRAN_ENV
* find the max array rank (i.e., dimension) that the compiler supports

If the Fortran compiler supports both INTERFACE and ISO_FORTRAN_ENV,
then we'll build the MPI_SIZEOF interfaces.  If not, we'll skip
MPI_SIZEOF in mpif.h and the mpi module.  Note that we won't build the
mpi_f08 module -- to include the MPI_SIZEOF interfaces -- if the
Fortran compiler doesn't support INTERFACE, ISO_FORTRAN_ENV, and a
whole bunch of ther modern Fortran stuff.

Since MPI_SIZEOF interfaces are now generated by the perl script, this
commit also removes all the old MPI_SIZEOF implementations (which were
laden with a zillion #if blocks).

cmr=v1.8.3

This commit was SVN r32764.
2014-09-19 13:44:52 +00:00
Jeff Squyres
ca0ccc5321 headers: remove trailing commas in enum lists
Per http://www.open-mpi.org/community/lists/devel/2014/08/15576.php,
trailing commas are not valid in enum lists in C++ until C++11.

cmr=v1.8.2:reviewer=rhc

This commit was SVN r32482.
2014-08-09 12:04:17 +00: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
fd7bfc2221 mpi: remove automatically generated file from the tarball
cmr=v1.8.2:reviewer=jsquyres

This commit was SVN r32244.
2014-07-15 07:52:13 +00:00
George Bosilca
750c6c7861 Update the UTK copyright on the topology related files.
This commit was SVN r31805.
2014-05-16 22:23:52 +00:00
Jeff Squyres
d46db26721 ompi_config.h: no need to AC_CONFIG_HEADER this file
Nothing is generated in this file; this commit essentially just
renames ompi_config.h.in -> ompi_config.h.

cmr=v1.8.1:reviewer=dgoodell

This commit was SVN r31395.
2014-04-15 15:38:49 +00:00
Jeff Squyres
0ceebe16f2 mpi.h.in: We're long past the v1.5 series; this comment can go away
This commit was SVN r31369.
2014-04-11 15:17:48 +00:00
Jeff Squyres
619dd71a92 mpi.h.in: fix comment to match code
Thanks to Lisandro Dalcin for noticing.

This commit was SVN r31366.
2014-04-10 17:29:14 +00:00
Jeff Squyres
173c046617 build: add Automake-like silent/verbose macros for "ln -s ..." operations
Also, since I put some of the macros for these silent/verbose rules up
in the top-level Makefile.man-page-rules file, I renamed it to
Makefile.ompi-rules.

I've had this sitting around for a while; now seems like as good a
time as any to commit it.

This commit was SVN r31271.
2014-03-28 18:24:32 +00:00
Nathan Hjelm
595a6e94e6 Fix typos in r31260
Also added some missing values and sentinels.

cmr=v1.8:ticket=trac:4470

This commit was SVN r31263.

The following SVN revision numbers were found above:
  r31260 --> open-mpi/ompi@69036437b7

The following Trac tickets were found above:
  Ticket 4470 --> https://svn.open-mpi.org/trac/ompi/ticket/4470
2014-03-27 22:34:28 +00:00
Jeff Squyres
24f7bd327e MPI-3: Add missing MPI_Comm_get|set_info functions
Thanks to Lisandro Dalcin for pointing out the issue.

cmr=v1.8:reviewer=hjelmn

This commit was SVN r31262.
2014-03-27 21:41:59 +00:00
Nathan Hjelm
93238b2c58 Fix typo in r31260
cmr=v1.8:ticket=trac:4470

This commit was SVN r31261.

The following SVN revision numbers were found above:
  r31260 --> open-mpi/ompi@69036437b7

The following Trac tickets were found above:
  Ticket 4470 --> https://svn.open-mpi.org/trac/ompi/ticket/4470
2014-03-27 21:04:56 +00:00
Nathan Hjelm
69036437b7 Add missing MPI_WEIGHTS_EMPTY constant
cmr=v1.8:reviewer=jsquyres

This commit was SVN r31260.
2014-03-27 20:59:52 +00:00
Nathan Hjelm
545d5daced osc: add missing MPI_ERR_RMA_SHARED error code and internal equivalent
cmr=v1.8:reviewer=jsquyres

This commit was SVN r31259.
2014-03-27 20:06:43 +00:00
Jeff Squyres
3120ec2b96 Also bump the Fortran MPI version constants to 3.0
cmr=v1.7.5:ticket=trac:4371

This commit was SVN r31038.

The following Trac tickets were found above:
  Ticket 4371 --> https://svn.open-mpi.org/trac/ompi/ticket/4371
2014-03-12 16:06:15 +00:00
Nathan Hjelm
c173344141 Add new MPI-3.1 tools interface functions.
See https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/377

This ticket adds the following functions to the standard:

 - MPI_T_cvar_get_index, MPI_T_pvar_get_index, and MPI_T_category_get_index

The ticket has passed and the functions are part of MPI-3.1 that will
be released sometime later this year. In Open MPI the functions expose
existing internal functionality so they are low-risk to add to 1.8.0. I
will leave it up to Ralph whether he wants to accept these into 1.8.

cmr=v1.8:reviewer=rhc

This commit was SVN r31037.
2014-03-12 16:03:39 +00:00
Ralph Castain
647fdaaa22 Fix an MPI-3 compliance buglet - MPI_Info_set should now use "const" qualifiers on the key and value parameters
cmr=v1.7.5:reviewer=jsquyres

This commit was SVN r31013.
2014-03-11 23:50:09 +00:00
Nathan Hjelm
d5d2d5c4d8 Add an internal ompi error code for RMA sync errors.
Dave Goodell correctly pointed out that it is unusual to return MPI
error classes from internal ompi functions. Correct this in the RMA
case by adding an internal error code to match MPI_ERR_RMA_SYNC.

This does change OMPI_ERR_MAX. I don't think this will cause any
problems with ABI.

cmr=v1.7.5:reviewer=jsquyres

This commit was SVN r31012.
2014-03-11 23:45:23 +00:00
Nathan Hjelm
5be13abcc0 Open MPI is MPI-3 conformant as of 1.7.5. Update mpi.h to reflect this.
cmr=v1.7.5:reviewer=rhc

This commit was SVN r31009.
2014-03-11 23:01:58 +00:00
Ralph Castain
49d938de29 Merge one-sided updates to the trunk - written by Brian Barrett and Nathan Hjelmn
cmr=v1.7.5:reviewer=hjelmn:subject=Update one-sided to MPI-3

This commit was SVN r30816.
2014-02-25 17:36:43 +00:00
Jeff Squyres
bda840df49 Fixes trac:4205: ensure sizeof(MPI_Count) <= sizeof(size_t)
- Move the ptrdiff_t tests up higher in configure.ac to be with the
  rest of the type tests.
- Create new OMPI_FIND_MPI_AINT_COUNT_OFFSET for finding the
  corresponding types of MPI_Aint, MPI_Count, and MPI_Offset.
  Consolidate all the old C and Fortran tests into this new macro (and
  .m4 file).
- Fix Fortran MPI_*_KIND tests that incorrectly keyed off assumed
  types (e.g., int64_t) rather than whatever the corresponding C
  MPI_Aint, MPI_Count, MPI_Offset types turned out to be.
- Add new logic to ensure that sizeof(MPI_Count) <= sizeof(size_t),
  because our entire PML, BTL, and convertor infrastructure requires
  this.  As a side effect, just like MPI_Offset the same type of
  MPI_Count (because MPI_Count has to be able to hold an MPI_Offset,
  so we can't let MPI_Offset be larger than a MPI_Count).

This commit was SVN r30776.

The following Trac tickets were found above:
  Ticket 4205 --> https://svn.open-mpi.org/trac/ompi/ticket/4205
2014-02-19 23:04:34 +00:00
Jeff Squyres
caaab7e8a3 Fix Fortran delcarations of MPI_SUBARRAYS_SUPPORTED and MPI_ASYNC_PROTECTES_NONBLOCKING
Ensure that these two flags are in all of mpif.h, the mpi module, and
the mpi_f08 module.  Thanks to Rolf Rabenseifner for pointing out the
issue.

cmr=v1.7.4:reviewer=ompi-rm1.7

This commit was SVN r30519.
2014-01-31 15:22:12 +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
Brian Barrett
121ca26c59 Per discussion at Develoepr's Meeting, remove Solaris threads support. Solaris
will just fall back to pthreads, which should be no problem.

This commit was SVN r29893.
2013-12-13 20:07:11 +00:00
Brian Barrett
6d7a1fbb82 Move opal_portable_platform.h to opal/include/opal, which is where it really
should have been all along and fix one place that uses the file

Update opal_portable_platform.h with changes to mpi_portable_platform.h made 
in r29608.

Make mpi_portable_platform.h a symlink to opal_portable_platform.h, so that
they won't get out of sync.  I'd like to remove mpi_portable_platform.h, but
we don't automatically add -I${includedir}/openmpi/ to make that sane from
a header include point of view, so that's future work.

This commit was SVN r29618.

The following SVN revision numbers were found above:
  r29608 --> open-mpi/ompi@b71bd51cdd
2013-11-06 17:12:26 +00:00
Brian Barrett
9780043456 re-apply r29608 and fix the broken configure test that broke worse with the
patch.  See ticket #3885, comment 10 for an explination of why calling
_STRINGIFY on something that's not a numerical constant is always a bad idea.

This commit was SVN r29613.

The following SVN revision numbers were found above:
  r29608 --> open-mpi/ompi@b71bd51cdd
2013-11-05 22:41:10 +00:00
Jeff Squyres
36e9987ce6 Reverting r29608 (C++11 fix); it's causing some problems.
This commit was SVN r29611.

The following SVN revision numbers were found above:
  r29608 --> open-mpi/ompi@b71bd51cdd
2013-11-05 22:13:11 +00:00
Jeff Squyres
b71bd51cdd Fix C++11 issue identified by Jeremiah Willcock
(http://www.open-mpi.org/community/lists/users/2013/11/22912.php).

cmr=v1.7.4:reviewer=brbarret

This commit was SVN r29608.
2013-11-05 19:48:03 +00:00
Nathan Hjelm
195c892a9d Add support for MPI_Comm_dup_with_info, MPI_Comm_create_group, and
MPI_Comm_idup.

As part of this work I implemented a basic request scheduler in
ompi/comm/comm_request.c. This scheduler might be useful for more
than just communicator requests and could be moved to ompi/request
if there is a demand. Otherwise I will leave it where it is.

Added a non-blocking version of ompi_comm_set to support ompi_comm_idup.
The call makes a recursive call to comm_dup and a non-blocking version
was needed. To simplify the code the blocking version calls the nonblocking
version and waits on the resulting request if one exists.

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

This commit was SVN r29334.

The following Trac tickets were found above:
  Ticket 3796 --> https://svn.open-mpi.org/trac/ompi/ticket/3796
2013-10-02 14:26:40 +00:00
Jeff Squyres
114022146a Add a missing "const" to MPI_Unpack (addendum to r29266).
Refs trac:3785.

This commit was SVN r29278.

The following SVN revision numbers were found above:
  r29266 --> open-mpi/ompi@0b8fc13299

The following Trac tickets were found above:
  Ticket 3785 --> https://svn.open-mpi.org/trac/ompi/ticket/3785
2013-09-27 12:48:28 +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
c5596548b2 MPI-3: Add support for neighborhood collectives
Blocking versions are simple linear algorithms implemented in coll/basic. Non-
blocking versions are from libnbc 1.1.1. All algorithms have been tested with
simple test cases.

cmr=v1.7.4:reviewer=jsquyres

This commit was SVN r29265.
2013-09-26 21:55:08 +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
Jeff Squyres
c7ff45d046 This define is not needed in mpi.h (it's private to the
implementation, and is already included in opal_config.h)

This commit was SVN r28964.
2013-07-30 21:33:19 +00:00
Nathan Hjelm
9c519c5ce8 Bump MPI version to 2.2 now that in place alltoall and reductions on MPI_C_*COMPLEX and MPI_CXX_*COMPLEX are supported
This commit was SVN r28958.
2013-07-26 15:51:38 +00:00
Nathan Hjelm
c6e586a81d MPI-3: fortran support for large counts using derived datatypes
Jeff:
 - Make sure not to go over 72 characters.  Love Fortran!
 - Ensure to include 'mpif-config.h' in Type_size_x.

This commit was SVN r28933.
2013-07-23 15:36:03 +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
Nathan Hjelm
e6e9f2c6fd Add profiling function definitions for MPI_T and add a missing type into mpi.h
This commit was SVN r28803.
2013-07-16 16:03:33 +00:00
Nathan Hjelm
d446675526 MCA: Per-RFC, add support for performance variables
This commit adds an API for registering and querying performance
variables (mca_base_pvar) in the MCA base. The existing MCA variable
system API has been updated to reflect the new API: MCA variable
groups have performance variables, and new types have been added (double,
unsigned long long) to reflect what is required by the MPI_T
interface. Additionally, the MCA variable group code has been split
into its own set of files: mca_base_var_group.[ch].

Details of the new API can be found in doxygen comments in the header:
mca_base_pvar.h.

Other changes to the variable system:

 - Use an opal_hash_table to speed up variable/group lookup.

 - Clean up code associated with MCA variable types.

 - Registered performance variables are printed by ompi_info -a. In the
   future an option should be added to control this behavior.

Changes to OMPI:

 - Added full support for the MPI_T performance variable interface.

This commit was SVN r28800.
2013-07-16 16:02:13 +00:00