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

162 Коммитов

Автор SHA1 Сообщение Дата
Ralph Castain
fa5a40070d Test the return status code from comm_dyn_start_processes - if we see an error, then let's report it and not continue on with the comm_spawn procedure!
This commit was SVN r14699.
2007-05-18 20:22:32 +00:00
Mohamad Chaarawi
bfaf9d4a12 Added new module for intercomm collectives. This will require an
autogen.

This commit was SVN r14149.
2007-03-27 02:06:42 +00:00
Jeff Squyres
3e2031e0e3 Finally commit something that has been sitting around in one of my
development trees since last year (had to wait for some intel tests to
run yesterday, so I finally took the time to finish this work):

 * Improve MPI API argument checking by also checking for NULL values
   (especially helps when invalid Fortran MPI handles are passed,
   because the various MPI_*f2c functions are supposed to return an
   "invalid" MPI handle [meaning NULL] when this happens).  So now
   OMPI will generate an MPI exception rather than a segv.
 * Removed a few redundant DATATYPE_NULL checks.
 * Also check for some other forms of "invalid" handles (e.g., already
   been freed, etc.) in some cases.  We could probably be a bit more
   stringent in this regard if we really wanted to.
 * Change MPI_Get_processor_name to zero out the string up to
   MPI_MAX_PROCESSOR_NAME characters, because the MPI spec says that
   the string must be at least that long.  We were already passing
   that length to gethostname(), anyway.

This commit was SVN r14100.
2007-03-21 11:10:42 +00:00
Josh Hursey
dadca7da88 Merging in the jjhursey-ft-cr-stable branch (r13912 : HEAD).
This merge adds Checkpoint/Restart support to Open MPI. The initial
frameworks and components support a LAM/MPI-like implementation.

This commit follows the risk assessment presented to the Open MPI core
development group on Feb. 22, 2007.

This commit closes trac:158

More details to follow.

This commit was SVN r14051.

The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
  r13912

The following Trac tickets were found above:
  Ticket 158 --> https://svn.open-mpi.org/trac/ompi/ticket/158
2007-03-16 23:11:45 +00:00
Jeff Squyres
266e805427 * Update parameter checking per MPI-1:2.4.1 and MPI-1:5.4.1 -- also
return an error if MPI_COMM_NULL is used.  
 * Minor style fixes.

This commit was SVN r14041.
2007-03-16 13:09:49 +00:00
Brian Barrett
e926bed69f Implement MPI_TYPE_CREATE_DARRAY function. Works with MPICH2 darray-pack
test, Sun's darray test, and an internal LANL test code.  I would not
assume it will work properly on other codes, as I'm still not sure I
completely understand what the standard says this function is supposed to
do.

Refs trac:65

This commit was SVN r13967.

The following Trac tickets were found above:
  Ticket 65 --> https://svn.open-mpi.org/trac/ompi/ticket/65
2007-03-08 16:33:08 +00:00
George Bosilca
4b63631535 Allow correct duplication for MPI_UB and MPI_LB. The problem is that we cannot
create a duplicate type, because any duplicate type lose the PREDEFINED flag.
An MPI_LB (respectively MPI_UB) without the PREDEFINED tag is useless, as it's
not the a marker anymore. The solution is to return the same pointer, but once
the reference count has been increased. In order for this to work, I allowed
the destruction to check for the reference count of an object before complaining
about destroying a predefined type.

This fixed ticket #317.

This commit was SVN r13942.
2007-03-06 18:21:49 +00:00
Tim Prins
74555cda51 - Re-enable MPI_Comm_spawn_multiple from singletons. It has been working for a while, but the check was never removed.
- Coding standardize some code
- Remove now unused help message

This commit was SVN r13858.
2007-02-28 22:09:30 +00:00
Jeff Squyres
260f1fd468 Fixes trac:817
The C++ bindings were not tracking keyvals properly -- they were
freeing some internal meta data when Free_keyval() was called, not
when the keyval was actually destroyed (keyvals are refcounted in the
C layer, just like all other MPI objects, because they can live for
long after their corresponding Free call is invoked).  This commit
fixes this problem and several other things:

 * Add infrastructure on the ompi_attribute_keyval_t for an "extra"
   destructor pointer that will be invoked during the "real"
   constructor (i.e., when OBJ_RELEASE puts the refcount to 0).  This
   allows calling back into the C++ layer to release meta data
   associated with the keyval.
 * Adjust all cases where keyvals are created to pass in relevant
   destructors (NULL or the C++ destructor).
 * Do essentially the same for MPI::Comm, MPI::Win, and MPI:Datatype:
   * Move several functions out of the .cc file into the _inln.h file
     since they no longer require locks
   * Make the 4 Create_keyval() functions call a common back-end
     keyval creation function that does the Right Thing depending on
     whether C or C++ function pointers were used for the keyval
     functions.  The back-end function does not call the corresponding
     C MPI_*_create_keyval function, but rather does the work itself
     so that it can associate a "destructor" callback for the C++
     bindings for when the keyval is actually destroyed.
   * Change a few type names to be more indicative of what they are
     (mostly dealing with keyvals [not "keys"]).
 * Add the 3 missing bindings for MPI::Comm::Create_keyval().
 * Remove MPI::Comm::comm_map (and associated types) because it's no
   longer necessary in the intercepts -- it was a by-product of being
   a portable C++ bindings layer.  Now we can just query the C layer
   directly to figure out what type a communicator is.  This solves
   some logistics / callback issues, too.
 * Rename several types, variables, and fix many comments in the
   back-end C attribute implementation to make the names really
   reflect what they are (keyvals vs. attributes).  The previous names
   heavily overloaded the name "key" and were ''extremely''
   confusing.

This commit was SVN r13565.

The following Trac tickets were found above:
  Ticket 817 --> https://svn.open-mpi.org/trac/ompi/ticket/817
2007-02-08 23:50:04 +00:00
George Bosilca
eaa164d52f Don't check for the DT_FLAG_DATA. It is never set. This was intended to be
a protection against creating subarrays with MPI_LB and MPI_UB. But, I don't
think the MPI standard state anything about this.

This commit was SVN r13504.
2007-02-06 03:58:24 +00:00
Jeff Squyres
a45e8bea05 Fixes trac:830. Put in argument checking for MPI_INIT_THREAD.
This commit was SVN r13353.

The following Trac tickets were found above:
  Ticket 830 --> https://svn.open-mpi.org/trac/ompi/ticket/830
2007-01-29 21:56:15 +00:00
Rainer Keller
125ba1acfa - Reduce the amount of warnings with -Wshadow -- mainly due to
usage of index and abs in inline-fcts in header files.

This commit was SVN r13217.
2007-01-19 19:48:06 +00:00
Jeff Squyres
9073b9cd3c Ensure to use datatype_index consistently. Only a problem for
compilers where the MPI_Fint representation is not the same as int,
but still...

This commit was SVN r13141.
2007-01-17 12:34:30 +00:00
Brian Barrett
ba8c8ce92c Improve checking of origin and target datatypes when using MPI_ACCUMULATE
to pass some of the tests provided by Sun.  These will, of course, greatly
slow down calls to MPI_ACCUMULATE, but there's no way to pass the test
suite without them :/.

Refs trac:760

This commit was SVN r13117.

The following Trac tickets were found above:
  Ticket 760 --> https://svn.open-mpi.org/trac/ompi/ticket/760
2007-01-14 21:42:25 +00:00
Jeff Squyres
1bdf883277 Oops --- don't need those header files.
This commit was SVN r13000.
2007-01-05 00:08:16 +00:00
Jeff Squyres
fc3637a7c6 Take out the checks for NULL and STATUS[ES]_IGNORE -- it turns out
that a) STATUS[ES]_IGNORE *is* NULL, and b) ROMIO blindly sends its
status through to STATUS_SET_ELEMENTS, even if the status is IGNORE.
So we have some legal cases where IGNORE can be passed through here.

Well, that's what we get for trying to do good error checking.  :-(

This commit was SVN r12999.
2007-01-04 23:03:36 +00:00
Jeff Squyres
75df4ca602 Minor fixes for MPI-level aborting:
- Fix some fpritnf's in ompi_mpi_abort() that incorrectly assumed that
  we were always being invoked from MPI_ABORT (ompi_mpi_abort() may be
  invoked from a bunch of different places)
- Also try to opal_backtrace_print() if opal_bactrace_buffer() is not
  supported. 
- Print a message in MPI_ABORT if we're aborting.

This commit was SVN r12998.
2007-01-04 22:30:28 +00:00
Edgar Gabriel
dc532577db Adding more accurate checking of the input parameters for the
add_error_class and add_error_code files. Also fixed the update of the
lastusedcode attribute, all of work according to my tests pretty fine.

Please note: the testcode attached to the bug 683 still reports some bugs. I
am however pretty sure that the testcode is wrong at that points:
 - the standard says that the attribute MPI_LASTUSEDCODE has to be updated for
 a new error_class or a new error_code. The test currently assumes, that only
 the add_error_code call changes the attribute value.
 - you have to comment out the two lines 73 and 74 in order to make the
 test finish, since these lines check for the error string of non-existent
 codes.
- line 126 the error-string of MPI_ERR_ARG is not "invalid argument" but a
little bit more, so the test thinks the output is wrong. So probably the test
has to be update to match the according error string of MPI_ERR_ARG.

Fixes trac:682

This commit was SVN r12913.

The following Trac tickets were found above:
  Ticket 682 --> https://svn.open-mpi.org/trac/ompi/ticket/682
2006-12-21 19:36:31 +00:00
Rainer Keller
b99e5a71d1 - Help message in case of MPI-application with two init or
calling init functions after finalize.

This commit was SVN r12858.
2006-12-14 19:58:04 +00:00
Dan Lacher
e3f749acc4 Ticket: #673
Submitted by: Dan Lacher

This commit was SVN r12844.
2006-12-13 20:01:16 +00:00
Jeff Squyres
c7282855e7 Fixes trac:659
This commit fixes several aspects regarding MPI conformance of requests.

 * Eliminate the last argument of ompi_errhandler_request_invoke(); we
   ''always'' want to invoke the back-end exception handler with the
   real error code.
 * Make it clear in comments that we only invoke the ''first''
   exception in a given array of requests, even if there's more than
   one request with a non-MPI_SUCCESS value for MPI_ERROR.
 * Defer the freeing of requests upon exception in the back-end
   functions to MPI_WAIT* and MPI_TEST* until later; the requests are
   kept so that we know what handler to invoke when we actually invoke
   the exception.  After figuring that out, ''then'' we free requests
   with pending exceptions on them.
 * Clean up return codes from the back-end MPI_TEST* and MPI_WAIT*
   functions.
 * Slightly modify ompi_errcode_get_mpi_code() to return unity if it
   receives an MPI error code (vs. an OMPI error code).

This commit was SVN r12810.

The following Trac tickets were found above:
  Ticket 659 --> https://svn.open-mpi.org/trac/ompi/ticket/659
2006-12-09 14:20:08 +00:00
Edgar Gabriel
1359ba9b13 Rewriting much of the errorcode and errorclass code, since
- we have to be able to attach a string to an error class, not just to an
 error code
 - according to MPI-2 the attribute MPI_LASTUSEDCODE has to be updated
  everytime you add a new code or a new class. Thus, you have to have single
  list for both. 

Thus, we got rid of the error_class structure. In the error-code structure, we
can distinguish whether we are dealing with an error code or an error class by
looking at the err->code element of the structure. In case its value is
MPI_UNDEFINED, the according entry is a class, else it is an error code. All
predefined error codes have the code and the class field set to the same
value.

The test MPI_Add_error_class1 passes now.

Fixes trac:418

This commit was SVN r12764.

The following Trac tickets were found above:
  Ticket 418 --> https://svn.open-mpi.org/trac/ompi/ticket/418
2006-12-05 19:07:02 +00:00
Brian Barrett
657168a74c A couple of Window related error handling cleanups:
* Always invoke the error handler on MPI_COMM_WORLD for
    invalid windows (except in win_create, which should 
    instead be on the given communicator).
  * Allow get_errhandler in addition to set_errhandler
    on MPI_WIN_NULL

Refs trac:647

This commit was SVN r12718.

The following Trac tickets were found above:
  Ticket 647 --> https://svn.open-mpi.org/trac/ompi/ticket/647
2006-12-01 20:05:06 +00:00
Brian Barrett
63e5668e29 Number of one-sided fixes:
* use one-sided datatype check instead of send/receive and check both
    the origin and target datatypes
  * allow error handler to be set on MPI_WIN_NULL, per standard
  * Allow recursive calls into the pt2pt osc component's progress
    function
  * Fix an uninitialized variable problem in the unlock header

This commit was SVN r12667.
2006-11-27 03:22:44 +00:00
Jeff Squyres
8a08b092f6 Check to see if we need to do anything. If we don't (i.e., if all the
rcounts are 0), then just return MPI_SUCCESS.

This commit was SVN r12525.
2006-11-09 23:21:34 +00:00
George Bosilca
eab1776e9a Explicit casts for our friendly Windows environment...
This commit was SVN r12496.
2006-11-08 17:02:46 +00:00
Jeff Squyres
25dab9700f * Add some error checking to GET_ELEMENTS and STATUS_SET_CANCELLED
* Move the check for STATUS_IGNORE in STATUS_SET_ELEMENTS up into the
   error checking block

This commit was SVN r12460.
2006-11-07 02:47:35 +00:00
Jeff Squyres
431f940a52 Fixes trac:496
* Add some more error checking to GREQUEST_START
 * Move the error checking in GREQUEST_COMPLETE up to inside the
   MPI_PARAM_CHECK block, where it belongs
 * Invoke the gen request query_fn in all the Right spots (per MPI-2:8.2)
 * Distinguish between grequests created from C and Fortran
 * Use the OBJ system to reference count to release the grequest at
   the Right time and invoke the grequest free_fn properly (see
   lengthy comment in grequest.c above the destructor)
 * Have ompi_grequest_complete() call ompi_request_complete() rather
   than [poorly] copy the contents of ompi_request_complete()
 * Fix Fortran function callback pointer typedefs to use proper
   Fortran types
 * Edit ompi_request_test* and ompi_request_wait* to properly handle
   generalized requests.  This adds an "if" statement in the critical
   path for all the back-end test* and wait* functions :-(,
   but fortunately George took out two "if" statements from the
   critical path last week.  So we're still ahead.  :-)
 * Move ompi_request_test() out of request.h and into request.c (all
   other test* and wait* functions were already in the .c file -- and
   ompi_request_test() was too long to be statically inlined anyway)

This commit was SVN r12402.

The following Trac tickets were found above:
  Ticket 496 --> https://svn.open-mpi.org/trac/ompi/ticket/496
2006-11-02 03:34:53 +00:00
Jeff Squyres
2f936c4597 Fixes trac:549
Had group discussion about this on the weekly call.  The decision was
that we should pass the real error code to the back-end exception
handler because it's pretty useless to pass MPI_ERR_IN_STATUS to the
back-end exception handler (because exception handlers don't have
access to the request or the status - this has potential issues for
fault tolerance kinds of scenarios).  So in TESTALL, TESTSOME,
WAITALL, and WAITSOME, we examine the error code and if it's not
MPI_SUCCESS, return MPI_ERR_IN_STATUS.

This commit was SVN r12389.

The following Trac tickets were found above:
  Ticket 549 --> https://svn.open-mpi.org/trac/ompi/ticket/549
2006-11-01 19:31:43 +00:00
George Bosilca
a711a58410 Add a function to handle the MPI_Status_set_elements correctly. The current
implementation was just wrong !!!

This commit was SVN r12380.
2006-10-31 23:02:42 +00:00
Jeff Squyres
63155bca09 Refs trac:496
Have no idea why this function always returns a failure.  It should
always return SUCCESS (provided the status is value).

This commit was SVN r12364.

The following Trac tickets were found above:
  Ticket 496 --> https://svn.open-mpi.org/trac/ompi/ticket/496
2006-10-30 22:44:23 +00:00
Jeff Squyres
0b2616173a Fixes trac:549
* For MPI_TEST, MPI_TESTANY, MPI_WAIT, and MPI_WAITANY (i.e., the
   TEST/WAIT functions that return up to exactly one completed
   request), return the actual error code.
 * For MPI_TESTALL, MPI_TESTSOME, MPI_WAITALL, MPI_WAITSOME, (i.e.,
   the TEST/WAIT functions that can return more than one completed
   request), return MPI_ERR_IN_STATUS.

This commit was SVN r12355.

The following Trac tickets were found above:
  Ticket 549 --> https://svn.open-mpi.org/trac/ompi/ticket/549
2006-10-30 19:50:09 +00:00
Jeff Squyres
2de51fca63 Need to return the error code.
This commit was SVN r12351.
2006-10-30 14:15:44 +00:00
Jeff Squyres
020efdf1f9 Refs trac:250
This commit essentially caches the invoking comm/win/file on the
ompi_request_t. This, paired with the req_type field, allows us to
retrieve the invoking MPI object and invoke the proper errhandler.

The patch is missing most updates for the MPI-2 one-sided stuff (i.e.,
the patch mainly fixes comms and files); I didn't really understand
that code and didn't want to hazard trying to figure it out when Brian
can probably do it much more quickly.

So #250 will still stay open, pending MPI-2 one-sided updates for this
stuff.

This commit was SVN r12339.

The following Trac tickets were found above:
  Ticket 250 --> https://svn.open-mpi.org/trac/ompi/ticket/250
2006-10-27 12:35:27 +00:00
Jeff Squyres
e02114dcf3 Fixes trac:529.
* Create a new request type: NOOP (described below)
 * For all MPI_*_INIT functions, OBJ_NEW an ompi_request_t and set its
   type to NOOP
 * Ensure that the NOOP requests are OBJ_RELEASE'd when they are done
 * MPI_START looks at the request type; if NOOP, just return success. If
   not, call the PML start() function
 * MPI_STARTALL always pass the entire array of requests back to the PML
   (see next point)
 * Make the PMLs only process PML requests (i.e., ignore/skip anything
   that isn't of type PML -- such as the NOOP requests)
 * Add a little more param error checking in STARTALL

This commit was SVN r12338.

The following Trac tickets were found above:
  Ticket 529 --> https://svn.open-mpi.org/trac/ompi/ticket/529
2006-10-27 12:32:36 +00:00
George Bosilca
126a68dc9a Big datatype commit. Remove all unused features of the datatype engine. As the memory
allocation logic is completely done outside the data-type engine (in the PML) there is
no need for any special case inside the data-type engine. There is less arguments for
the ompi_convertor_pack and ompi_convertor_unpack as well (the last field free_after is
not required anymore as there is no memory allocated in the engine itself). This change
affect all components using datatypes. I test most of them, but it might happens that I
miss some ... If it's the case please let me know (don't shoot the pianist!!).

This commit was SVN r12331.
2006-10-26 23:11:26 +00:00
Sven Stork
5861ed865d - Add parameter checking as required by the standard.
This commit was SVN r12318.
2006-10-26 09:18:21 +00:00
Sven Stork
9024c5be4b - Fix wrong error values.
This commit was SVN r12317.
2006-10-26 08:26:03 +00:00
George Bosilca
2d17f0fa9d First step on supporting full external32 conversion on both operations
pack and unpack.

This commit was SVN r12299.
2006-10-25 14:33:06 +00:00
George Bosilca
06563b5dec Last set of explicit conversions. We are now close to the zero warnings on
all platforms. The only exceptions (and I will not deal with them
anytime soon) are on Windows:
- the write functions which require the length to be an int when it's
  a size_t on all UNIX variants.
- all iovec manipulation functions where the iov_len is again an int
  when it's a size_t on most of the UNIXes.
As these only happens on Windows, so I think we're set for now :)

This commit was SVN r12215.
2006-10-20 03:57:44 +00:00
George Bosilca
c9da782804 Keep only one function to get the size of a datatype.
This commit was SVN r12170.
2006-10-18 17:33:01 +00:00
George Bosilca
8852c00c36 Look like a big commit but in fact it address only one issue. The way we're working with
size and diplacement of data-type. After this patch all data can contain size_t bytes
and the displacements are defined as ptrdiff_t. All of the files I was able to compile
have been modified to match this requirement.

This commit was SVN r12146.
2006-10-17 20:20:58 +00:00
George Bosilca
e116a37482 My last commit was wrong. Here is the correct version.
This commit was SVN r12131.
2006-10-17 02:45:03 +00:00
George Bosilca
01f5b4007b Check the count. It has to be a positive number.
This commit was SVN r12130.
2006-10-17 02:40:17 +00:00
Jeff Squyres
0ebe687ed8 Refs trac:502, #503. This commit as a result of review of r12122.
* Update comments in some MPI_FILE_* functions to reflect that the
   MPI specs have different page numbers in the ps and pdf (woof!).
 * Update comments to say "Retain" where we meant retain (not "return)
 * Add a check in MPI_ERRHANDLER_FREE to raise an MPI exception if the
   user attempts to free an intrinsic errhandler *and* the refcount is
   1 (meaning that it would actually free the intrinsic).  This
   protects erroneous programs from segv'ing.
 * Remove lengthy comment from comm_get_errhandler.c which is no
   longer valid (because of the MPI-2 errata that says that users *do*
   have to call MPI_ERRHANDLER_FREE).

This commit was SVN r12128.

The following SVN revision numbers were found above:
  r12122 --> open-mpi/ompi@407b3cb788

The following Trac tickets were found above:
  Ticket 502 --> https://svn.open-mpi.org/trac/ompi/ticket/502
2006-10-17 00:18:35 +00:00
Jeff Squyres
407b3cb788 Fix some problems with errhandlers:
* Fix MPI-2 page number in comments for a specific reference in the
   spec
 * Allow getting/setting the errhandler on MPI_FILE_NULL
 * Allow freeing of intrinsic errhandlers, per MPI-2 errata (if you GET
   an errhandler on a communicator, you must be able to FREE it, even
   if it's an intrinsic).

Thanks to Lisandro Dalcin for reporting these problems.

This commit was SVN r12122.
2006-10-16 12:58:40 +00:00
Brian Barrett
14f338b7df Fix for lock/unlock epoch issues. Previously, we did not handle the case
where a window was in both the passive and active side of a lock sequence.

Refs trac:488

This commit was SVN r12112.

The following Trac tickets were found above:
  Ticket 488 --> https://svn.open-mpi.org/trac/ompi/ticket/488
2006-10-12 22:52:13 +00:00
Ralph Castain
1f7a5da3ce Bring singleton comm_spawn online.
This commit was SVN r12081.
2006-10-10 23:59:48 +00:00
Jeff Squyres
e08c6e81f5 * Fixes trac:338: Only look at root-significant values at the root (e.g.,
recvbuf in MPI_GATHER).
 * Minor style updates (constants on the left of == and !=)
 * Fix a minor buglet that crept in r11904: had a recvbuf where it
   should have been recvcount.  Thankfully, this would have only
   affected erroneous programs.  ;-)

This commit was SVN r11980.

The following SVN revision numbers were found above:
  r11904 --> open-mpi/ompi@17539dc154

The following Trac tickets were found above:
  Ticket 338 --> https://svn.open-mpi.org/trac/ompi/ticket/338
2006-10-04 22:36:01 +00:00
Jeff Squyres
17539dc154 Fixes trac:430. Fix a few places where optimization checking conflicted
with the use of MPI_IN_PLACE, and make some optimization checks more
correct.  Thanks to Lisandro Dalcin for reporting the problems.

This commit was SVN r11904.

The following Trac tickets were found above:
  Ticket 430 --> https://svn.open-mpi.org/trac/ompi/ticket/430
2006-09-29 22:49:04 +00:00