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

471 Коммитов

Автор SHA1 Сообщение Дата
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
b7b893b771 Need to EXTRA_DIST README.txt so that it gets included in the tarball;
the *_DATA files are not automatically picked up for inclusion into
the tarball.

This commit was SVN r13667.
2007-02-15 16:21:25 +00:00
Jeff Squyres
dd35fb73ff * Fix some "MPI:Exception" typos (needs 2 :'s)
* Update exactly how we handle MPI exceptions, particularly with
   respect to MPI-1 section 3.2.5, and how error handlers are only
   invoked for the ''first'' request that generates an exception.
 * Update the "see also" section to be consistent across all 8
   MPI_Test* and MPI_Wait* functions.
 * Fixes trac:560

This commit was SVN r13619.

The following Trac tickets were found above:
  Ticket 560 --> https://svn.open-mpi.org/trac/ompi/ticket/560
2007-02-12 18:08:42 +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
Karen Norteman
410f657d07 Fixes trac:876
This commit was SVN r13502.

The following Trac tickets were found above:
  Ticket 876 --> https://svn.open-mpi.org/trac/ompi/ticket/876
2007-02-05 22:26:02 +00:00
Terry Dontje
244fb76002 This commit fixes trac:856.
This commit was SVN r13464.

The following Trac tickets were found above:
  Ticket 856 --> https://svn.open-mpi.org/trac/ompi/ticket/856
2007-02-02 12:48:26 +00:00
Karen Norteman
59cc09fd1a Fixes trac:850, updates man pages
This commit was SVN r13456.

The following Trac tickets were found above:
  Ticket 850 --> https://svn.open-mpi.org/trac/ompi/ticket/850
2007-02-01 21:57:48 +00:00
Karen Norteman
4dc71969b1 trac bug 850
This commit was SVN r13452.
2007-02-01 21:29:06 +00:00
Karen Norteman
f545127e7d trac bug 850
This commit was SVN r13451.
2007-02-01 21:28:22 +00:00
Karen Norteman
984d764259 trac bug 850
This commit was SVN r13450.
2007-02-01 21:27:38 +00:00
Karen Norteman
8dd7e175cd trac bug 850
This commit was SVN r13449.
2007-02-01 21:26:59 +00:00
Karen Norteman
47a3f7f760 trac bug 850
This commit was SVN r13448.
2007-02-01 21:26:18 +00:00
Karen Norteman
40eeeaef39 trac bug 850
This commit was SVN r13447.
2007-02-01 21:25:35 +00:00
Karen Norteman
e304eec9dc trac bug 850
This commit was SVN r13446.
2007-02-01 21:24:37 +00:00
Karen Norteman
8a627e8957 trac bug 850
This commit was SVN r13445.
2007-02-01 21:23:54 +00:00
Karen Norteman
25b153848d trac bug 850
This commit was SVN r13444.
2007-02-01 21:23:13 +00:00
Karen Norteman
0c30c74b0a trac bug 850
This commit was SVN r13443.
2007-02-01 21:22:34 +00:00
Karen Norteman
7a60f878a9 trac bug 850
This commit was SVN r13442.
2007-02-01 21:21:43 +00:00
Karen Norteman
11b91057ec trac bug 850
This commit was SVN r13441.
2007-02-01 21:21:00 +00:00
Karen Norteman
180ff99233 trac bug 850
This commit was SVN r13440.
2007-02-01 21:20:14 +00:00
Karen Norteman
a8b066798a trac bug 850
This commit was SVN r13439.
2007-02-01 21:19:08 +00:00
Karen Norteman
e13398b68d trac bug 850
This commit was SVN r13438.
2007-02-01 21:16:43 +00:00
Karen Norteman
cea22389bb trac bug 850
This commit was SVN r13437.
2007-02-01 21:15:43 +00:00
Pak Lui
01c45b9637 * should fix the uninitialized function pointers. This is the patch to the
patch in r13391

This commit was SVN r13411.

The following SVN revision numbers were found above:
  r13391 --> open-mpi/ompi@289fbd08de
2007-02-01 05:07:53 +00:00
Pak Lui
289fbd08de * Fix the MPI::Datatype::Create_keyval() & MPI::Win::Create_keyval()
not being able to take C function pointers for either of the 
	copy or the delete fn. Fix by overloading the Create_keyval methods. 
    Fix trac #737, #738. Reviewed by jsquyres.
  *	A couple of cxx tests in ompi-tests (winkeyval.cc & typekeyval.cc) 
	will be re-enabled to regression test for this fix.

This commit was SVN r13391.
2007-01-31 15:00:41 +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
Jeff Squyres
61bc9fed3c Duh. Free the temp array when we're done with it. While we're making
this switch, use a clear variable name, too.

This commit was SVN r13347.
2007-01-29 19:04:57 +00:00
Jeff Squyres
e6a0069e95 Fix from an as-yet uncommitted test that Pak will commit shortly.
Found another places that we were incorrectly casting a C++ MPI handle
array to the corresponding C array type and hoping for the best (which
won't work at all).  This commit fixes things so that we now do the
proper conversion between C<-->C++ handles.

This commit was SVN r13346.
2007-01-29 18:44:46 +00:00
Rainer Keller
ca35881cd0 - Minor bugfixes and removed compiler warnings
This commit was SVN r13343.
2007-01-28 19:52:09 +00:00
Jeff Squyres
b9120aed6d Always make sure to create $(includedir)/openmpi, even if we were
configured with --disable-mpi-cxx so that the default -I flags in the
wrapper compilers don't point to a directory that doesn't exist.
Thanks to Martin Audet for identifying the problem.

This commit was SVN r13296.
2007-01-25 01:59:22 +00:00
Rainer Keller
3f397f3848 - Do not convert the cart_comm -- its intent is out.
This commit was SVN r13224.
2007-01-21 13:00:23 +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
Rolf vandeVaart
6a260e4a9a Fix two problems. For MPI_Buffer_detach, do not attempt to
return the buffer address from Fortran. It is not expected
behavior.  For MPI_Buffer_attach, adjust the address of
the buffer handed in so it is always aligned.  

Refs trac:750
Buffer detach reviewed by Jeff Squyres
Buffer attach alignment reviewed by George Bosilca

This commit was SVN r13205.

The following Trac tickets were found above:
  Ticket 750 --> https://svn.open-mpi.org/trac/ompi/ticket/750
2007-01-18 23:32:39 +00:00
Jeff Squyres
53c4bcccd5 Fix a problem noted by Tim Campbell: the type of the first parameter
to the F90 binding for MPI_INITIALIZED was wrong (should have been
logical, not integer).

Fixes trac:782.

This commit was SVN r13170.

The following Trac tickets were found above:
  Ticket 782 --> https://svn.open-mpi.org/trac/ompi/ticket/782
2007-01-17 22:44:47 +00:00
Jeff Squyres
a3aae09ca3 Since we've found a few MPI_Fint/MPI_Aint problems in the F77 bindings
recently, I went through and took a closer look this afternoon and
fixed a bunch more places where this problem occurred.

This commit was SVN r13166.
2007-01-17 22:17:34 +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
32bdc47816 Fix a number of places where MPI_Fint was used where the standard specifies
MPI_Aint.  On 64-bit big endian machines, these can have some unpleasent
issues.

Refs trac:734

This commit was SVN r13140.

The following Trac tickets were found above:
  Ticket 734 --> https://svn.open-mpi.org/trac/ompi/ticket/734
2007-01-17 06:41:53 +00:00
Jeff Squyres
fbeaf0919d Fixes trac:732.
The 2nd parameter in MPI_WIN_CREATE is actually an address integer,
not a regular integer.  The F77 prototype for this function was wrong,
causing Bad Things on some 64 bit platforms (on other 64 bit
platforms, we just got lucky).

This commit was SVN r13133.

The following Trac tickets were found above:
  Ticket 732 --> https://svn.open-mpi.org/trac/ompi/ticket/732
2007-01-16 22:22:08 +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
George Bosilca
53d87897c8 Once we start the C requests we have to put back their f_to_c index
in the fortran array, as we might get new C requests from the startall
function.

This commit was SVN r13079.
2007-01-11 08:39:42 +00:00
Pak Lui
ff1dd4f16d * fixes ticket #730 for supporting both of the pre-errata argument set and
post-errata argument set of MPI::Win::Get_attr

This commit was SVN r13063.
2007-01-10 16:41:21 +00:00
Pak Lui
de51464aad * fix #730 for removing an extra argument from MPI::Win::Get_attr as being
corrected in the MPI 2.0 errata.
 * initialized some variables to make our sensitive sun compiler not to 
   not warn about them when user apps are compiling.

This commit was SVN r13058.
2007-01-09 23:48:39 +00:00
George Bosilca
e72b0c1044 Some compilers (VC) don't like conversions between int and bool.
This commit was SVN r13043.
2007-01-08 22:00:49 +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
Jeff Squyres
ea2d49e55d Because of r12712, we actually need to allocate one ''more'' item than
the value of __n holds.  This is not a problem in the first case
because sizeof(int) == sizeof(MPI_Flogical), so no alloc is actually
performed (which is most compilers, and why we haven't been bitten by
this yet).  But the second case -- where sizeof(int) !=
sizeof(MPI_Flogical) -- is definitely a problem and needs the "+1" in
the alloc, or Bad Things will happen.

This commit was SVN r12953.

The following SVN revision numbers were found above:
  r12712 --> open-mpi/ompi@3e11c76d4c
2007-01-02 16:16:29 +00:00
Brian Barrett
1ba97181dc A number of MPI-2 compliance fixes for the C++ bindings:
* Added Create_errhandler for MPI::File
  * Make errors_throw_exceptions a first-class predefined exception
    handler, and make it work for Comm, File, and Win
  * Deal with error handlers and attributes for Files, Types, and Wins
    like we do with Comms - can't just cast the callbacks from C++
    signatures to C signatures.  Callbacks will then fire with the
    C object, not the C++ object.  That's bad.

Refs trac:455

This commit was SVN r12945.

The following Trac tickets were found above:
  Ticket 455 --> https://svn.open-mpi.org/trac/ompi/ticket/455
2006-12-30 23:41:42 +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
Bill D'Amico
3e11c76d4c Fixes trac:482
OMPI_ARRAY_INT_2_LOGICAL had an array bounds error - fixed this and the
analogous error in OMPI_ARRAY_LOGICAL_2_INT.

This commit was SVN r12712.

The following Trac tickets were found above:
  Ticket 482 --> https://svn.open-mpi.org/trac/ompi/ticket/482
2006-11-30 19:48:18 +00:00
Jeff Squyres
384caeacf4 More fixes similar to r12684 -- fix bad lvalues in assignments for the
case where sizeof(INTEGER) > sizeof(int).

This commit was SVN r12707.

The following SVN revision numbers were found above:
  r12684 --> open-mpi/ompi@e2c605f32a
2006-11-30 16:41:56 +00:00
Jeff Squyres
e2c605f32a Fix a problem cited by Pierre-Matthieu Anglade: some typos in the code
path in the MPI F77 API functions where sizeof(int) != sizeof(INTEGER).

This commit was SVN r12684.
2006-11-28 12:21:42 +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
922f335678 Fixes trac:624
Ensure that the new predefined MPI-2 attribute callback functions take
the proper types (INTEGER, kind=MPI_ADDRESS_KIND instead of just
INTEGER).

This commit was SVN r12639.

The following Trac tickets were found above:
  Ticket 624 --> https://svn.open-mpi.org/trac/ompi/ticket/624
2006-11-21 13:54:13 +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
Jeff Squyres
0a28212392 This is a workaround to bug in the Intel C++ compiler, version 9.1
(all versions up to and including 20060925).  The issue has been
reported to Intel, along with a small [non-MPI] test program that
reproduces the problem (the test program and the OMPI C++ bindings
work fine with Intel C++ 9.0 and many other C++ compilers).

In short, a static initializer for a global variable (i.e., its
constructor is fired before main()) that takes as an argument a
reference to a typedef'd type will simply get the wrong value in the
argument.  Specifically:

{{{
namespace MPI {
    Intracomm COMM_WORLD(MPI_COMM_WORLD);
}
}}}

The constructor for MPI::Intracomm should get the value of
&ompi_mpi_comm_world.  It does not; it seems to get a random value.

As mandated by MPI-2, annex B.13.4, for C/C++ interoperability, the
prototype for this constructor is:

{{{
class Intracomm {
public:
    Intracomm(const MPI_Comm& data);
};
}}}

Experiments with icpc 9.1/20060925 have shown that removing the
reference from the prototype makes it work (!).  After lots of
discussions about this issue with a C++ expert (Doug Gregor from IU),
we decided the following (cut-n-paste from an e-mail):

-----
> So here's my question: given that OMPI's MPI_<CLASS> types are all
> pointers, is there any legal MPI program that adheres to the above
> bindings that would fail to compile or work properly if we simply
> removed the "&" from the second binding, above?

I don't know of any way that a program could detect this change. FWIW,
the C++ committee has agreed that implementation of the C++ standard
library are allowed to decide arbitrarily between const& and by-value.
If they don't care, MPI users won't care.

When you remove the '&', I suggest also removing the "const". It is
redundant, but can trigger some strange name mangling in Sun's C++
compiler.
-----

So with this change:

 * we now work again with the Intel 9.1 compiler
 * our C++ bindings do not exactly conform to the MPI-2 spec, but
   valid/legal MPI C++ apps cannot tell the difference (i.e., the
   functionality is the same)

This commit was SVN r12514.
2006-11-09 17:34:12 +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
31e8f510fe After review with Rolf, decided to be a bit more safe and instead of
assigning status._cancelled, call MPI_STATUS_SET_CANCELLED.

This commit was SVN r12471.
2006-11-07 20:49:31 +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
6e1729cb93 Fixes trac:580
* Add MPI::Status methods Set_elements() and Set_cancelled()
 * Added a bunch of comments in various places in the MPI C++ bindings
   implementatio just to explain what's going on (because C++ can hide
   a lot from you)
 * Insert C++ callbacks for the MPI_Grequest callback functions
   registered by MPI::Grequest::Start().  These callbacks keep a
   little meta-data (created by Grequest::Start()) that allow the
   proper callback signatures from C (i.e., from ompi_grequest_<foo>()
   in libmpi.a -- C code), translate arguments as required, and then
   invoke the callbacks with proper C++ signatures (i.e., call
   user-defined callbacks with C++ function signatures).

This commit was SVN r12446.

The following Trac tickets were found above:
  Ticket 580 --> https://svn.open-mpi.org/trac/ompi/ticket/580
2006-11-06 18:42:00 +00:00
Jeff Squyres
bc93583184 Fix the SIZEOF implementation for complex's. We want to output the
size of the complex type as determined by configure; not the size of
the next larger complex type (i.e., a complex*N is 2 real*(N/2)'s, not
2 real*N's).

This commit was SVN r12421.
2006-11-03 15:52:46 +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
Rolf vandeVaart
272f766c5f Fix for ticket #219 MPI::Grequest is missing from C++ API. I did the initial implementation and Jeff fixed it up. Passes a new test in trunk/simple/basic/cxx/grequest.cc.
This commit was SVN r12264.
2006-10-23 20:17:30 +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
Brian Barrett
fdc8f69b84 * need to include iostream as well as stdio.h when doing the tricks with
MPI::SEEK_* because iostreams (well, ios_base, but I don't think that
    should be included directly) can use SEEK_* as values in an enum, which
    means that 'const int' is bad for them.
  * Remove now useless comments in the cxx example programs
  * include iostream after mpi.h so that our examples work with other MPI
    implementations that don't try to be as friendly with the constants.

Refs trac:387

This commit was SVN r12125.

The following Trac tickets were found above:
  Ticket 387 --> https://svn.open-mpi.org/trac/ompi/ticket/387
2006-10-16 14:20:31 +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
e7a7a64e4c Implement MPI::SEEK_{SET, END, POS} for the C++ bindings, working around
some issues with the C #defines SEEK_{SET, END, POS}.  The workaround
involves some hackery that should work in almost every common use case
for the C stdio constants (and all the legal issues of the MPI constants).
The one issue is that the C stdio constants are now const ints instead
of #defines, which means that #ifdef checks will fail for the constants.

Behavior can be disabled at either configure time or build time.

Refs trac:387

This commit was SVN r12121.

The following Trac tickets were found above:
  Ticket 387 --> https://svn.open-mpi.org/trac/ompi/ticket/387
2006-10-15 23:50:24 +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
77a5eb3b69 Fixes trac:236
Doing pointer math properly (e.g., incrementing by the right amount)
helps you not overflow buffers, cause random chaos, and contribute to
the heat death of the universe.  Sigh.

This commit was SVN r12015.

The following Trac tickets were found above:
  Ticket 236 --> https://svn.open-mpi.org/trac/ompi/ticket/236
2006-10-05 16:43:10 +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
Jeff Squyres
7b9b90f10a openmpi.3 was deleted; OpenMPI.3 was the one that was left.
This commit was SVN r11886.
2006-09-29 11:59:27 +00:00
Jeff Squyres
b3a35b7d1c Remove entries for files that are no longer there.
This commit was SVN r11885.
2006-09-29 11:57:08 +00:00
Andrew Lumsdaine
e187f058b7 Remove mpi.3 to fix naming conflict
This commit was SVN r11883.
2006-09-29 01:49:21 +00:00
Andrew Lumsdaine
a1ef0067e0 Remove openmpi.3 to fix naming conflict
This commit was SVN r11882.
2006-09-29 01:48:13 +00:00
Jeff Squyres
9c37afc265 Add Makefile mojo to install the MPI API man pages and include them in
the distribution tarball.

This commit was SVN r11872.
2006-09-28 19:59:28 +00:00
Rolf vandeVaart
aa7317d635 Initial man pages for all the MPI APIs. There are 304 of them. Also a general man page for mpi,openmpi,MPI, and OpenMPI. Extra work is needed so they get installed properly.
This commit was SVN r11871.
2006-09-28 18:39:36 +00:00
Jeff Squyres
a5928a2a89 Ralf W. swears to me that this is a product of a very, very old AM bug
and is no longer necessary (especially since we enforce pretty recent
Gnu tools).

This commit was SVN r11855.
2006-09-27 21:33:26 +00:00
Edgar Gabriel
4dafe7ce0d The length of the ranks-arrays can be longer than the size of the according
groups. And zero is also an acceptable value according to the MPI spec.

Fixes trac:428

This commit was SVN r11841.

The following Trac tickets were found above:
  Ticket 428 --> https://svn.open-mpi.org/trac/ompi/ticket/428
2006-09-27 11:02:47 +00:00
Jeff Squyres
afa7f53d43 Refs trac:429.
Tweak a comment to match the code.

This commit was SVN r11839.

The following Trac tickets were found above:
  Ticket 429 --> https://svn.open-mpi.org/trac/ompi/ticket/429
2006-09-27 00:04:24 +00:00
Jeff Squyres
13d5e5aab4 Refs trac:429
Fixes simple off-by-one error in the error check for
MPI_INFO_GET_NTHKEY. 

This commit was SVN r11838.

The following Trac tickets were found above:
  Ticket 429 --> https://svn.open-mpi.org/trac/ompi/ticket/429
2006-09-26 23:36:22 +00:00
Brian Barrett
58dce54513 don't use macro or it will try to use the (now destroyed) MPI_COMM_WORLD,
which isn't going to work well

Refs trac:419

This commit was SVN r11822.

The following Trac tickets were found above:
  Ticket 419 --> https://svn.open-mpi.org/trac/ompi/ticket/419
2006-09-26 15:56:51 +00:00
Jeff Squyres
a822c34ebf Ralf W. categorically told me that this kind of statement in
Makefile.am's is from a very old Automake bug which has long-since
been fixed.  Since we require very recent versions of AM, we don't
need these anymore.

This commit was SVN r11774.
2006-09-25 14:28:04 +00:00
Brian Barrett
10a230373b Add a number of missing constants to the C++ bindings
refs trac:322

This commit was SVN r11720.

The following Trac tickets were found above:
  Ticket 322 --> https://svn.open-mpi.org/trac/ompi/ticket/322
2006-09-19 22:28:21 +00:00
Jeff Squyres
713206d4f9 Updates to r11563:
* Consolidate everything inside of the same AM_CONDITIONAL that is
   used to suck in the glue convenience library in ompi/Makefile.am:
   OMPI_WANT_F77_BINDINGS.  This AM conditional is set to true if we
   want (and can support) the F77 MPI API bindings at all (And does
   not say anything about whether we are compiling the top-level or
   bottom-level f77 directory to get the bindings).
 * Clarify all the comments surrounding the [confusing!] issue.
 * The problem with r11563 was that it used the wrong AM_CONDITIONAL
   to decide whether to build the separate F77 library or not; it
   would do so only if the top-level library was being built (e.g., on
   systems like OSX where weak symbols don't work the way we need them
   to).  This patch somewhat simplifies the situation by encapsulating
   everything in one large conditional (OMPI_WANT_F77_BINDINGS, as
   described above).  Hence, libmpi_f77 will exist (and be installed)
   if F77 support is enabled overall, regardless of whether you're on
   a system with insufficient weak symbol support (e.g., OSX) or not
   (e.g., Linux).

This commit was SVN r11618.

The following SVN revision numbers were found above:
  r11563 --> open-mpi/ompi@c8f3ff71b1
2006-09-11 23:18:24 +00:00
Sven Stork
72bf1e4a25 - add parameter checks for standard compliance
This commit was SVN r11610.
2006-09-11 10:23:35 +00:00
Brian Barrett
c8f3ff71b1 Install Fortran 77 bindings as a stand-alone library, rather than as part of
libmpi.

Refs trac:248

This commit was SVN r11563.

The following Trac tickets were found above:
  Ticket 248 --> https://svn.open-mpi.org/trac/ompi/ticket/248
2006-09-08 01:35:49 +00:00
Jeff Squyres
8406746854 Fixes trac:330
Had the wrong type for one of the arguments of MPI_TYPE_GET_CONTENTS
(MPI_Fint should have been MPI_Aint).

This commit was SVN r11517.

The following Trac tickets were found above:
  Ticket 330 --> https://svn.open-mpi.org/trac/ompi/ticket/330
2006-09-01 19:58:04 +00:00
Brian Barrett
e0555889a9 * RMA_SYNC is a more appropriate error message for these than RmA_CONFLICT
* Print a warning error message if a target is not in an exposure epoch
    and an update is received.  This results in the app continuing with
    that call having never happened, rather than evil hangs.

refs trac:325

This commit was SVN r11514.

The following Trac tickets were found above:
  Ticket 325 --> https://svn.open-mpi.org/trac/ompi/ticket/325
2006-08-31 21:07:52 +00:00
Jeff Squyres
aadc7e24ef Also check for zero-length strings.
This commit was SVN r11499.
2006-08-30 11:59:02 +00:00
George Bosilca
3312aa4b0a The pack/unpack will return 1 only if all data has been packed/unpacked. We have to make
sure we provide exactly the amount of data these functions expect, otherwise they will
return 0.

This commit was SVN r11484.
2006-08-29 17:17:35 +00:00
Gleb Natapov
338134b535 run dos2unix on wtime.c and make MPI_Wtime work as it did before.
This commit was SVN r11482.
2006-08-29 10:11:48 +00:00
George Bosilca
e479951b3b And now the correct version of the timers. In fact, MPI_Wtime is supposed
to return the value on seconds not some other unit based on the resolution
of MPI_Wtick. Which I think it's the wrong solution, as instead of forcing
the user to do additional computations in order to convert when he needs
the result in seconds, force us to convert every time. Unfortunately,
converting requires a division with a double which is a costly
operation. But, MPI is a standard and we have to follow it ...

This commit was SVN r11481.
2006-08-29 04:30:33 +00:00
George Bosilca
e33c35112b Correct the conversion between int and bool. Apply it on all files except
the one that will be modified by Ralph for the ORTE 2.0. The missing ones
are in the rsh PLS.

This commit was SVN r11476.
2006-08-28 18:59:16 +00:00
George Bosilca
8673c83578 The bool type on Windows is not an integer. Therefore just casting an
int to bool is not allowed. We have to make something cleaner.

This commit was SVN r11475.
2006-08-28 18:51:09 +00:00
Gleb Natapov
40ca1dd2d4 ran dos2unix on it
This commit was SVN r11463.
2006-08-28 10:27:27 +00:00
George Bosilca
bbc2a1e4b8 The Fortran prototypes should be handled with care. OMPI_DECLSPEC
they should become.

This commit was SVN r11456.
2006-08-28 04:07:57 +00:00
Jeff Squyres
129f8a9eb8 Add a newline at the end of the file (squelch a compiler warning).
This commit was SVN r11445.
2006-08-27 12:45:54 +00:00
George Bosilca
ee75c45ec5 Use the OPAL timers toi report timers as accurately as possible.
This commit was SVN r11442.
2006-08-27 04:58:02 +00:00
Jeff Squyres
17d313f6e1 It turns out that Fortran has some specific rules about copying
strings.  Here's one: no matter how much of the string you copy, the
destination string must be space-padded for the entire remaining area.
Specifically, even if you call MPI_INFO_GET and tell MPI to only copy
a max of N characters of the value into the result string, if the
Fortran string is M characters (where M > N), MPI must space-pad the
remaining (M-N) characters to be spaces.  So you're supposed to obey
the argument to MPI_INFO_GET... sorta.

Precedents:

 * http://www.ibiblio.org/pub/languages/fortran/ch2-13.html
 * LAM/MPI
 * Sun CT MPI

This commit was SVN r11412.
2006-08-24 19:11:39 +00:00
George Bosilca
d6b6f465b6 Cast everything to make the microsoft C++ compiler happy.
This commit was SVN r11373.
2006-08-23 16:35:16 +00:00
George Bosilca
f8f2dd8e03 As class is a reserved keyword we are not supposed to have any variables
with this name.

This commit was SVN r11372.
2006-08-23 16:34:00 +00:00
Jeff Squyres
8b4b9b9a8e Oops -- in MPI_INFO_GET_NTHKEY, the key argument is an '''out'''
value, not an '''in''' value.  So the string needs to be converted
c2f, not f2c.

This commit was SVN r11367.
2006-08-23 14:43:47 +00:00
Jeff Squyres
fd9a94434d Update to r11332. This seems like a slightly safer fix.
This commit was SVN r11358.

The following SVN revision numbers were found above:
  r11332 --> open-mpi/ompi@4f984056ac
2006-08-23 13:46:05 +00:00
Jeff Squyres
523128100e A bunch of fixes for Fortran string issues. In general, ensure to
convert between fortran and C string representations properly.  In
doing so, we properly adhere to the MPI spec stating that MPI_Info
keys and values must be whitespace-trimmed when coming in from
Fortran.  Hence, this fixes bug #241.

This commit was SVN r11356.
2006-08-23 13:10:44 +00:00
Brian Barrett
4f984056ac MPI_STATUS_SIZE in Fortran is 5, so we need to jump by 5 integers instead
of 4 when we are finding the next MPI_STATUS in the array.

Refs trac:236

This commit was SVN r11332.

The following Trac tickets were found above:
  Ticket 236 --> https://svn.open-mpi.org/trac/ompi/ticket/236
2006-08-22 20:20:46 +00:00
Jeff Squyres
fbb484dea2 MPI_COMM_GET_NAME had the compiler-added extra string length parameter
(but didn't use it), but MPI_TYPE_GET_NAME and MPI_WIN_GET_NAME did
not.

This commit changes all three functions to pass the compile-added
string length parameter to clear out the remainder of the string with
spaces (i.e., the rest of the string that was not set with the name).
This is what was done in LAM/MPI, and apparently what was done in
Sun's MPI, because the test that Rolf attached now passes.

Fixes trac:274.

This commit was SVN r11301.

The following Trac tickets were found above:
  Ticket 274 --> https://svn.open-mpi.org/trac/ompi/ticket/274
2006-08-21 19:35:33 +00:00
Brian Barrett
880730fcf6 * Make sure to add the FCFLAGS_f90 variable to FCFLAGS. This is the magic
that the compiler might need to inform the compiler that a .f90 extension
  means "this is Fortran 90 code".  Fortran compilers are so weird.

  refs trac:284

This commit was SVN r11280.

The following Trac tickets were found above:
  Ticket 284 --> https://svn.open-mpi.org/trac/ompi/ticket/284
2006-08-21 14:15:55 +00:00
George Bosilca
9b4bab7d34 One step toward the create array completion.
This commit was SVN r11269.
2006-08-20 15:51:54 +00:00
Brian Barrett
1daa21e1e3 It appears that most versions of the IBM XL compiler (including the latest
releases on Linux and OS X) don't handle const_cast<> of 2-dimensional 
arrays properly.  If we're using one of the compilers that isn't friendly
to such casts, fall back to a standard C-style cast.

refs: #271

This commit was SVN r11263.
2006-08-19 22:55:59 +00:00
Brian Barrett
65fedbe3be * followup to r10972... Even if MPI_PROC_NULL is given, we should do the
full argument checking (allowing that MPI_PROC_NULL is legal, of course).
  Only after the argument checking do we shortcut.  Fixes trac:237, which
  was caused by moving the MPI_PROC_NULL test in MPI_Bsend_init, 
  but not allowing for MPI_PROC_NULL when checking rank.

This commit was SVN r11108.

The following SVN revision numbers were found above:
  r10972 --> open-mpi/ompi@31c66d92aa

The following Trac tickets were found above:
  Ticket 237 --> https://svn.open-mpi.org/trac/ompi/ticket/237
2006-08-03 04:44:03 +00:00
Brian Barrett
4176e61049 * Add support for building the F90 bindings library as a shared library
on almost all platforms (except OS X... sigh...).  This is the merge 
  of r10846 - 10894 from the tmp/f90-shared branch to the trunk.

This commit was SVN r11103.

The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
  r10846
2006-08-03 00:17:31 +00:00
Jeff Squyres
7784f1a818 Fix a problem noted by Chris Hennes that MPI_INFO_SET would mistakenly
disallow setting long info values.

This commit was SVN r11074.
2006-08-01 16:07:56 +00:00
Jeff Squyres
520147f209 Clean up the Fortran MPI sentinel values per problem reported on the
users mailing list:

  http://www.open-mpi.org/community/lists/users/2006/07/1680.php

Warning: this log message is not for the weak.  Read at your own
risk.

The problem was that we had several variables in Fortran common blocks
of various types, but their C counterparts were all of a type
equivalent to a fortran double complex.  This didn't seem to matter
for the compilers that we tested, but we never tested static builds
(which is where this problem seems to occur, at least with the Intel
compiler: the linker compilains that the variable in the common block
in the user's .o file was of one size/alignment but the one in the C
library was a different size/alignment).

So this patch fixes the sizes/types of the Fortran common block
variables and their corresponding C instantiations to be of the same
sizes/types. 

But wait, there's more.

We recently introduced a fix for the OSX linker where some C versions
of the fortran common block variables (e.g.,
_ompi_fortran_status_ignore) were not being found when linking
ompi_info (!).  Further research shows that the code path for
ompi_info to require ompi_fortran_status_ignore is, unfortunately,
necessary (a quirk of how various components pull in different
portions of the code base -- nothing in ompi_info itself requires
fortran or MPI knowledge, of course).

Hence, the real problem was that there was no code path from ompi_info
to the portion of the code base where the C globals corresponding to
the Fortran common block variables were instantiated.  This is because
the OSX linker does not automatically pull in .o files that only
contain unintialized global variables; the OSX linker typically only
pulls in a .o file from a library if it either has a function that is
used or have a global variable that is initialized (that's the short
version; lots of details and corner cases omitted).  Hence, we changed
the global C variables corresponding to the fortran common blocks to
be initialized, thereby causing the OSX linker to pull them in
automatically -- problem solved.  At the same time, we moved the
constants to another .c file with a function, just for good measure.

However, this didn't really solve the problem:

1. The function in the file with the C versions of the fortran common
   block variables (ompi/mpi/f77/test_constants_f.c) did not have a
   code path that was reachable from ompi_info, so the only reason
   that the constants were found (on OSX) was because they were
   initialized in the global scope (i.e., causing the OSX compiler to
   pull in that .o file).

2. Initializing these variable in the global scope causes problems for
   some linkers where -- once all the size/type problems mentioned
   above were fixed -- the alignments of fortran common blocks and C
   global variables do not match (even though the types of the Fortran
   and C variables match -- wow!).  Hence, initializing the C
   variables would not necessarily match the alignment of what Fortran
   expected, and the linker would issue a warning (i.e., the alignment
   warnings referenced in the original post).

The solution is two-fold:

1. Move the Fortran variables from test_constants_f.c to
   ompi/mpi/runtime/ompi_mpi_init.c where there are other global
   constants that *are* initialized (that had nothing to do with
   fortran, so the alignment issues described above are not a factor),
   and therefore all linkers (including the OSX linker) will pull in
   this .o file and find all the symbols that it needs.

2. Do not initialize the C variables corresponding to the Fortran
   common blocks in the global scope.  Indeed, never initialize them
   at all (because we never need their *values* - we only check for
   their *locations*).  Since nothing is ever written to these
   variables (particularly in the global scope), the linker does not
   see any alignment differences during initialization, but does make
   both the C and Fortran variables have the same addresses (this
   method has been working in LAM/MPI for over a decade).

There were some comments here in the OMPI code base and in the LAM
code base that stated/implied that C variables corresponding to
Fortran common blocks had to have the same alignment as the Fortran
common blocks (i.e., 16).  There were attempts in both code bases to
ensure that this was true.  However, the attempts were wrong (in both
code bases), and I have now read enough Fortran compiler documentation
to convince myself that matching alignments is not required (indeed,
it's beyond our control).  As long as C variables corresponding to
Fortran common blocks are not initialized in the global scope, the
linker will "figure it out" and adjust the alignment to whatever is
required (i.e., the greater of the alignments).  Specifically (to
counter comments that no longer exist in the OMPI code base but still
exist in the LAM code base):

- there is no need to make attempts to specially align C variables
  corresponding to Fortran common blocks
- the types and sizes of C variables corresponding to Fortran common
  blocks should match, but do not need to be on any particular
  alignment 

Finally, as a side effect of this effort, I found a bunch of
inconsistencies with the intent of status/array_of_statuses
parameters.  For all the functions that I modified they should be
"out" (not inout).

This commit was SVN r11057.
2006-07-31 15:07:09 +00:00
Rolf vandeVaart
45719b7de9 Submitted by: Rolf vandeVaart
Reviewed by: Jeff Squyres

Fix for ticket #220.  Missing a few C++ methods.
 MPI::Datatype::Create_indexed_block
 MPI::Datatype::Create_resize
 MPI::Datatype::Get_true_extent

This commit was SVN r11010.
2006-07-26 20:27:14 +00:00
Rainer Keller
ee27f7e2c7 - As according to MPI-1.2, sec 3.2.5, p22, single request
functions MPI_Test, MPI_Testany, MPI_Wait, MPI_Waitany
   should not reset the status.MPI_ERROR as passed by user.
 - This needed implementing the MPI_Waitsome and MPI_Testsome.

This commit was SVN r10980.
2006-07-25 15:29:37 +00:00
Rainer Keller
31c66d92aa Minor fixes to match standard -- and run strict test of mpi_test_suite:
- bsend_init: use *request after error-checking
 - Always reset the status->cancelled
 - cancel, wait: need to check *request for MPI_REQUEST_NULL, not
   NULL...
   (actually ompi_request_wait handles MPI_PROC_NULL, so no need
   to check&set of status_empty in wait.c)

This commit was SVN r10972.
2006-07-24 16:59:01 +00:00
Jeff Squyres
0c102e6e5b Fix OSX linker problems with the Fortran bindings:
- ensure to initialize the values that we use for fortran constants
  (even tough their *values* don't matter -- only their *addresses* do,
  but initializing them or not has implications for the OSX linker)
- move the fortran constants to a file with functions in it, because
  the OSX linker sometimes does not import global variables from
  object files that do not have functions (I'm not even going to
  pretend to get all the subtle details about the OSX linker right
  here -- it's just "better" to have global variables in object files
  with functions that otherwise get pulled in during linker
  resolution).

This commit was SVN r10908.
2006-07-20 19:48:03 +00:00
Jeff Squyres
7899057d4e Add a check for now that invokes an MPI exception if you try to
SPAWN[_MULTIPLE] from a singleton (and displays a pretty help message
explaining that you need to use mpirun).  This can be removed when
fixes for ORTE come over that allow SPAWN[_MULTIPLE] from singletons. 

This commit was SVN r10898.
2006-07-20 14:27:13 +00:00
Rainer Keller
ac58e85c83 - Add the missing collective (and other) functions to mpi.f03
- Correct intent(out) to inout for various recvbufs to match
   standards possibility for MPI_IN_PLACE.

This commit was SVN r10868.
2006-07-18 18:12:09 +00:00
Brian Barrett
2759212e16 * use LN_S instead of ln -s, in case ln -s doesn't work...
This commit was SVN r10839.
2006-07-15 22:02:19 +00:00
Brian Barrett
7dd1112d07 * implement missing MPI::Is_finalized() function
This commit was SVN r10482.
2006-06-22 19:40:54 +00:00
Jeff Squyres
9a679644c2 Arf. Don't output the body of the WTICK or WTIME functions in the
module header if we're not doing small.

This commit was SVN r10475.
2006-06-22 13:20:01 +00:00
Jeff Squyres
723b6e50a9 George suggested a better way to make WTICK and WTIME -- be consistent
with the other methodology even if there are no choice buffers and no
special constants.  But it keeps the Makefile.am simple and the
methodology consistent.

This commit was SVN r10462.
2006-06-21 19:07:09 +00:00
Jeff Squyres
48e9a72c47 Add the missing files -- they're svn:ignored because of all the
generated files.

This commit was SVN r10451.
2006-06-21 14:11:12 +00:00
Jeff Squyres
720f38efc5 Fix for MPI_WTICK / MPI_WTIME F90 bindings issue. The previous hope
was that declaring the type of MPI_WTICK and MPI_TIME in mpif-common.h
would allow the F90 bindings to call through to the back end f77
function and have the right return type.  But upon reflection, that's
silly -- we were just declaring the variables MPI_WTICK and MPI_WTIME
that were of type double precision.  Duh.

So add some fixed (non-generated) wrapper F90 functions to call the
back-end *C* MPI_WTICK and MPI_TIME functions (vs. the back end *F77*
functions).  We have to call the back-end C functions because there's
a name conflict if we try to call the back-end F77 functions -- for
the same reasons that we can't "implicitly" define MPI_WTIME and
MPI_WTICK in the f90 module, we can't call such an implicitly-defined
function.  So we had to add new back-end C functions that are directly
callable from Fortran, the easiest implementation of which was to
provide 4 one-line functions for each (rather than muck around with
weak symbols).

This commit was SVN r10448.
2006-06-21 13:44:20 +00:00
George Bosilca
5cfa775ef9 Pedantic ...
This commit was SVN r10365.
2006-06-15 03:22:28 +00:00
George Bosilca
7d2ce68c2a Correctly compute the boundaries for the Fortran matrix style.
This commit was SVN r10364.
2006-06-15 03:21:54 +00:00
Jeff Squyres
4d337baccf Fix for ticket ticket #119. Do not check the type of the errhandler
-- always return a value c2f translation if it's a valid errhandler.

This commit was SVN r10357.
2006-06-14 19:42:39 +00:00
George Bosilca
e8e30dcc8c And now the final correct version of the subarray function. The problem
with the last one was that the resized function only set the soft lb and ub
markers without actually moving the usefull data up to the correct
displacement. Using a struct instead solve the problem. Anyway, as defined
in the MPI standard we have to set the lower bound and the upper bound
of the new type to the correct values too.

This commit was SVN r10328.
2006-06-13 07:42:23 +00:00
George Bosilca
a3c93df20c As I'm unable to correctly compute the size in multiple of the datatype, let me do
it in the simplest way: multiple of the original datatype + the h version of the
vector function.

This commit was SVN r10313.
2006-06-12 22:08:33 +00:00
Brian Barrett
480ffd3045 Fix issue that came up with testing some LANL romio applications.
MPI_FILE_GET_INFO should return the info currently in use, not the one
used to create the file handle.  ROMIO adds a bunch of keys, so you can
create a file handle with MPI_INFO_NULL and have MPI_FILE_GET_INFO return
something totatlly different.

This commit was SVN r10312.
2006-06-12 21:45:48 +00:00
George Bosilca
57bdb323b0 Initialize the extent before using it.
This commit was SVN r10309.
2006-06-12 19:38:52 +00:00
George Bosilca
20c34a53f7 Set the lb and extent for the case when the dimension is 1 and make
sure the last_type is defined when we go outside the loop.

This commit was SVN r10297.
2006-06-11 21:27:28 +00:00
George Bosilca
386a02d2ae Rewrite the subarray strictly following the MPI standard. Set the lb and ub
as it should be. I hope I get it right this time ...

This commit was SVN r10293.
2006-06-11 19:57:49 +00:00
Jeff Squyres
8b8bf363c4 Add missing svn:executable property
This commit was SVN r10283.
2006-06-10 10:59:01 +00:00
Jeff Squyres
02d8a46d5f Fix for ticket #89.
* Change the type of Fortan's MPI_STATUSES_IGNORE to double complex
so that it will never possibly be mistaken for a real status (i.e.,
integer(MPI_STATUS_SIZE)), particularly in the F90 bindings.  See
comment in mpif-common.h explaining this (analogous argument to
MPI_ARGVS_NULL for MPI_COMM_SPAWN_MULTIPLE).
 * Add second interfaces for the following functions that take a double
complex (i.e., MPI_STATUSES_IGNORE).  This required adding the second
interface in mpi-f90-interfaces.h[.sh] and then generating new wrapper
functions to call the back-end F77 function for each of these four, so
we added 4 new files in ompi/mpi/f90/scripts/ and updated the various
Makefile.am's to match:
   * MPI_TESTALL
   * MPI_TESTSOME
   * MPI_WAITALL
   * MPI_WAITSOME

The XSL is now not in sync with the scripts.  Although I suppose that
that is becoming less and less important (because it does not impact
the end user at all -- to be 100% explicit, no release should ever be
held up because the XSL is out of sync), but it will probably be
important when we go to fix the "large" interface; so it's still worth
fixing... for now...

This commit was SVN r10281.
2006-06-09 23:40:20 +00:00
Sven Stork
0084c9469a use correct free methode for additional allocated memory
This commit was SVN r10241.
2006-06-07 10:24:28 +00:00
George Bosilca
a64a80dff4 If the user type has a size of zero let's return zero. We will have a consistent behavior
with MPICH.

This commit was SVN r10230.
2006-06-06 19:51:42 +00:00
George Bosilca
7d7e801f15 External pack/unpack fixes.
This commit was SVN r10223.
2006-06-06 03:26:32 +00:00
George Bosilca
07fb4b8012 Allow a block indexed type with a count of zero. Be user friendly and set the ub, lb,
true_lb as well as the true_ub to zero in this case.

This commit was SVN r10208.
2006-06-05 21:16:57 +00:00
George Bosilca
5c2d2fc02a Match size is supposed to return Fortran types.
This commit was SVN r10206.
2006-06-05 21:07:48 +00:00
George Bosilca
e50cdeb927 Allow the creation of strcutres with count zero. And try to have a more friendly behavior
(even if I don't agree with it) by setting the lb, ub, true_lb and true_ub to zero.

This commit was SVN r10205.
2006-06-05 21:07:16 +00:00
Craig E Rasmussen
8a22272ffb Changed to use procedure alias (when names too long).
This commit was SVN r10145.
2006-05-31 15:06:44 +00:00
Craig E Rasmussen
4cd13f07c4 Changed to use procedure alias (when names too long).
This commit was SVN r10144.
2006-05-31 15:04:38 +00:00
Jeff Squyres
5f356edb64 Bring over changes from the /tmp/fortran-stuff series:
- Make the F90 bindings compile and link properly with gfortran 4.0,
  4.1, Intel 9.0, PGI 6.1, Sun (don't know version offhand -- the most
  current as of this writing, I think), and NAG 5.2, although some
  have limitations (e.g., NAG can't seem to handle the medium and
  large sizes)
- Building the F90 "small" module size is now the default, even for
  developers
- Split up mpif.h into multiple files because parts of it were toxic
  to the F90 bindings
- Properly specify unsized/unshaped arrays to make the bindings work
  on all known compilers
- Make ompi_info show Fortran 90 bindings size
- XML somewhat lags the generated scripts as of this commit, but
  functionality was my main goal -- the XML can be updated later (if
  at all).

This commit was SVN r10118.
2006-05-30 14:37:41 +00:00
Jeff Squyres
faf63c68f8 Merge over from the /tmp/fortran-stuff branch
- split mpif.h into mpif.h and mpif-common.h[.in]
- mpif-common.h is included by various f90 things and contains output
  from configure
- mpif.h defines some f77-specific stuff and then includes
  mpif-common.h 

This commit was SVN r9997.
2006-05-20 02:15:49 +00:00
Jeff Squyres
299f4fdb2c Oops -- fix the comment. A victim of cut-n-paste.
This commit was SVN r9971.
2006-05-18 18:10:12 +00:00
Jeff Squyres
942f9e8f8d Fixes for ticket:14. Lengthy discussion is on that ticket and in a
comment in ompi_comm_invalid() in
source:/trunk/ompi/communicator/communicator.h.

Short version:
- ompi_comm_invalid() returns TRUE for MPI_COMM_NULL
- therefore MPI_COMM_C2F needs to explicitly check for MPI_COMM_NULL
  (because it uses ompi_comm_invalid())
- make ~20 MPI functions only call ompi_comm_invalid() instead of
  calling ompi_comm_invalid() *and* checking for MPI_COMM_NULL (~40 MPI
  functions already only called ompi_comm_invalid() -- we should be
  consistent)
- similar issue for ompi_win_invalid(), so I added a cross-referencing
  comment in win.h and fixed MPI_WIN_SET_NAME to only call
  ompi_win_invalid() (and not check for MPI_WIN_NULL)

This commit was SVN r9970.
2006-05-18 18:05:46 +00:00
Jeff Squyres
800ba39152 Fixes for:
- make dist
- proper inclusion of files between trivial and small
- vpath

This commit was SVN r9964.
2006-05-18 11:26:52 +00:00
Jeff Squyres
a7c854f878 Add some comments explaining why these functions have an interface but
no definition.

This commit was SVN r9962.
2006-05-17 22:22:29 +00:00
Jeff Squyres
c3aeaed77b SPAWN_MULTIPLE should actually be in the "small" size, not the
"medium" size.

This commit was SVN r9961.
2006-05-17 21:58:48 +00:00
Craig E Rasmussen
94f463c924 Changes to remove attr_fn functions from the mpi namespace/module.
This commit was SVN r9960.
2006-05-17 21:31:04 +00:00
Jeff Squyres
95c1f12b97 Missed this one yesterday
This commit was SVN r9958.
2006-05-17 16:31:25 +00:00
Jeff Squyres
1f8cc1af65 Add an extra -I so that compilers can find mpi-f90-interfaces.h in a
vpath build.

This commit was SVN r9937.
2006-05-16 17:30:42 +00:00
Jeff Squyres
d3ff507bc2 Add explicit path to mpi-f90-interfaces.h.sh. Blast; I could have
sworn that I committed this yesterday.

This commit was SVN r9935.
2006-05-16 15:00:23 +00:00
Jeff Squyres
3e60cd163e Ensure that mpi_sizeof.f90 is added to the build
This commit was SVN r9925.
2006-05-15 19:32:01 +00:00
Jeff Squyres
332954e168 Spell the AC_SUBST'ed names properly
This commit was SVN r9924.
2006-05-15 19:31:38 +00:00
Jeff Squyres
171585ff34 Ensure to put implicit none *before* the header file includes
This commit was SVN r9923.
2006-05-15 19:31:01 +00:00
Craig E Rasmussen
13c113b39c Changed INOUT to IN in MPI_*_SET_ATTR functions.
This commit was SVN r9922.
2006-05-15 17:13:20 +00:00
Craig E Rasmussen
a547a64f93 Changed INOUT to IN in MPI_*_SET_ATTR functions.
This commit was SVN r9916.
2006-05-15 16:00:04 +00:00
Edgar Gabriel
7e99dc4301 - fix in comm_spawn_multiple: we cannot check for the errorcodes array
being null, if the constant MPI_ERRCODES_IGNORE is defined as (void *)
NULL;
- the communicator in file open has to be an intra-communicator.

This commit was SVN r9893.
2006-05-11 13:23:53 +00:00
Jeff Squyres
87a2458bb1 Make sure to use the C version of the string.
This commit was SVN r9796.
2006-05-03 03:29:06 +00:00
Brian Barrett
1aa13c1e5c * do proper fortran string handling for the MPI-IO functions that take string
arguments.  Thanks to Bernard Knaepen for bringing this to our attention.

This commit was SVN r9792.
2006-05-02 14:39:11 +00:00
Craig E Rasmussen
8a16f844ec Changes MPI_Intercomm_merge high variable from integer to logical
This commit was SVN r9783.
2006-05-01 18:58:35 +00:00
Craig E Rasmussen
0c584d783e Changes MPI_Intercomm_merge high variable from integer to logical
This commit was SVN r9782.
2006-05-01 18:58:05 +00:00
Jeff Squyres
22dbda116e Add in oodles of missing files
This commit was SVN r9767.
2006-04-28 02:22:19 +00:00
Craig E Rasmussen
888c19b9ee Changed bool Fortran type to logical
This commit was SVN r9766.
2006-04-27 22:49:06 +00:00
Craig E Rasmussen
bd77c2b212 Changed bool Fortran type to logical
This commit was SVN r9765.
2006-04-27 22:48:07 +00:00
Craig E Rasmussen
9333a2628b Added counter to output name and changed bool Fortran type to logical
This commit was SVN r9764.
2006-04-27 22:46:48 +00:00
George Bosilca
29fe545451 Remove all references to the ompi_mpi_long_long variable. The MPI_LONG_LONG is now
a synonym to MPI_LONG_LONG_INT.

This commit was SVN r9703.
2006-04-24 22:15:42 +00:00
Jeff Squyres
0556c129df Fix MPI_*_GET_ATTR flag parameter to be of type logical. Thanks to
Michael Kluskens for pointing this out.

This commit was SVN r9676.
2006-04-21 04:31:49 +00:00
Craig E Rasmussen
6de9755919 Added counter to output macro name
This commit was SVN r9675.
2006-04-20 21:30:28 +00:00
Craig E Rasmussen
8646604497 Fixed to match Jeff S's changes to mpi-f90-interfaces.h.sh
This commit was SVN r9674.
2006-04-20 21:18:04 +00:00
Craig E Rasmussen
65d5e18e9b Fixed to match Jeff S's changes to mpi-f90-interfaces.h.sh
This commit was SVN r9673.
2006-04-20 21:17:09 +00:00