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.
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.
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.
functions return an invalid fortran handle (-1) if an invalid C handle
is passed in.
Just so it's logged somewhere -- it looks like commit 2 of 2 as noted
in the r9560 commit message (ok, 3 of 3 if you're really counting),
where we have to edit the C interface functions to check for NULL, is
going to be far easier than I thought -- many (but not all) of the C
interface functions already check for NULL MPI handles (either
directly or through helper functions).
Woo hoo for foresight...
This commit was SVN r9561.
The following SVN revision numbers were found above:
r9560 --> open-mpi/ompi@e00c6053dc
handling of invalid Fortran handles. Per MPI-2:4.12.4, if we get an
invalid Fortran handle, we should return an invalid C handle. Before
this commit, we checked if the fortran handle index was out of range
(i.e., <0 or >sizeof(array)). If so, we used to return MPI_*_NULL
(i.e., a valid C handle). But to be faithful to MPI-2:4.12.4, we
now return NULL (an invalid C handle).
If the fortran index is in bounds but is an index for an MPI object
that has already been freed, the code already returns NULL because the
entry in the array will be NULL (i.e., we already did what
MPI-2:4.12.4 said for this case).
Hence, this commit makes the handling of invalid fortran handles in
the MPI_*_F2C functions be uniform: we always return NULL.
Commit 2 of this will be to edit just about every C interface function
(!) to ensure that MPI handles are not NULL. Otherwise, if the user
calls a fortran interface function with an invalid handle, the fortran
interface function will call MPI_*_F2C and blindly pass the result to
the back-end C function. The C function will eventually end up trying
to dereference it -- segv. Having a run-time check for NULL and
invoking an MPI exception is far more social (e.g., the user can get a
stack trace out of MPI_ABORT) and consistent (i.e., we're already
checking for MPI_*_NULL in the C interface functions).
Since all the C interface functions have all the machinery for
run-time parameter checking, and they all already check for
MPI_*_NULL, it's easy enough to add another check for NULL.
This commit was SVN r9560.
follow the statement from the standard that make the most sense to me. In this
particular case this statement is:
If there is no active handle in the list it returns outcount = MPI_UNDEFINED.
This commit was SVN r9512.
is the last one on the list and as on C the caller "make it right" this addition
will not affect the way we handle the user defined copy functions. Only the C
version of the function has this additional parameter. As it represent the pointer
to the newly created MPI object It hold the key to allow us to modify the new
object (communicator, window or type) depending on some key stored on the initial
communicator.
This commit was SVN r9371.
flag, new flags to be included when convertor is initialized
- modified pml/btl module defs and added stub functions for diagnostic
output routines to dump state of queues / endpoints
- updates to data reliability pml
This commit was SVN r9329.
- Use the datatype-checks of bindings.h within recv.
However, for the time being disable the check for overlapped,
as it is not correctly set.
This commit was SVN r9298.
args from the old data-type. As this args are only read-only, I don't want to have several
copies around, so I add a reference count to them and simply attach them to the new
datatype. The args array now get freed only when the last reference dissapear.
This commit was SVN r9191.
you can't be in a post and a start at the same time, and that is clearly
legal to do
* Fix interptretation of when the epochs start for MPI_Fence. Only start
an epoch if communication actually occurs, otherwise it isn't actually
an epoch. I don't know who thought that wording in the MPI standard
was a good idea, but can't change it now...
This commit was SVN r9139.
MPI-2:6.3.4 says about reduction operations
* Have the point-to-point one-sided component spew a warning and return
an error if a non-predefined datatype is used with an MPI_OP other
than MPI_REPLACE. Yes, this violates the MPI standard, but it's the
best we can do until George and I implement support for figuring out
where all the locations to update are..
This commit was SVN r9134.
Note, the checksums are not enabled currently, setting to zero as the
convertor is not ready for checksums yet.
Also, we can't call unpack/pack on convertor with 0 bytes, otherwise it
crashes.
This commit was SVN r9062.
- Add more checks on the params to ensure that the user conformed to
MPI-2 (i.e., can have MPI_UNDEFINED for p *or* r in the real/complex
functions, but not both)
- Always return MPI_ERR_ARG, not MPI_ERR_OTHER -- seems to make a
little more sense here, since any errors that are returned are
solely because of the arguments that were passed into the function
This commit was SVN r9037.
- move files out of toplevel include/ and etc/, moving it into the
sub-projects
- rather than including config headers with <project>/include,
have them as <project>
- require all headers to be included with a project prefix, with
the exception of the config headers ({opal,orte,ompi}_config.h
mpi.h, and mpif.h)
This commit was SVN r8985.
* Implement win_lock and win_unlock in the pt2pt component. Not well
tested, but appears to move bits if properly motivated...
This commit was SVN r8922.
* Implement fortran handle -> c handle tracking
* Remove some unneeded locking around free lists (the free list
macros do their own locking)
* Try to be a bit more memory friendly with the w_mode setting /
checking
This commit was SVN r8865.
complete, but stable enough that it will have no impact on general development,
so into the trunk it goes. Changes in this commit include:
- Remove the --with option for disabling MPI-2 onesided support. It
complicated code, and has no real reason for existing
- add a framework osc (OneSided Communication) for encapsulating
all the MPI-2 onesided functionality
- Modify the MPI interface functions for the MPI-2 onesided chapter
to properly call the underlying framework and do the required
error checking
- Created an osc component pt2pt, which is layered over the BML/BTL
for communication (although it also uses the PML for long message
transfers). Currently, all support functions, all communication
functions (Put, Get, Accumulate), and the Fence synchronization
function are implemented. The PWSC active synchronization
functions and Lock/Unlock passive synchronization functions are
still not implemented
This commit was SVN r8836.
functionality. This is a global registration, so all components have to be made
aware of the registration -- therefore, do things at the component level, not the
module level.
This commit was SVN r8314.
This flag is inherited by all datatypes create with unavailable datatypes. Basically, we let the user create the wrong datatype but we dont let him using it for any pt2pt communications or any pack/unpack.
This commit was SVN r8069.
restoring the PMPI version. A variety of reasons for this:
- mpi.h was blinding using inline in a C header without the configrue mojo
properly set it, as mpi.h doesn't include ompi_config.h. This eventually
would have caused a borked build.
- mpi.h and mpif.h were never updated to not include PMPI_W{tick,time} as
a proper prototype
- The C++ and F90 bindings didn't do the right things when there was no
PMPI version of the C call, but profiling was enabled
- Since we only use gettimeofday, the function call overhead really doesn't
matter
This should probably go to the 1.0 branch
This commit was SVN r8014.
REDUCE_SCATTER to more thoroughly check the datatype/op combination
to see if it's valid or not. If it's not, print a meaningful error
message rather than "Invalid MPI_Op" indicating what specifically
was wrong (therefore hopefully helping users track down where in the
code the problem is, and/or telling us that there's a reduction
operation combo that we don't support that we should)
- The check for whether a datatype is intrinsic needed to be updated
-- it's not sufficient to check that dtype->id < DT_MAX_PREDEFINED;
you really need to check the PREDEFINED flag on the datatype.
Thanks to George for this fix (only intrinsics have a meaningful
value in dtype->id).
This commit was SVN r7923.
at the top-level MPI API function. This allows two kinds of
scenarios:
1. MPI_Ireduce(..., op, ...);
MPI_Op_free(op);
MPI_Wait(...);
For the non-blocking collectives that we're someday planning -- to
make them analogous to non-blocking point-to-point stuff.
2. Thread 1:
MPI_Reduce(..., op, ...);
Thread 2:
MPI_Op_free(op);
Granted, for #2 to occur would tread a fine line between a correct and
erroneous MPI program, but it is possible (as long as the Op_free was
*after* MPI_reduce() had started to execute). It's more realistic
with case #1, where the Op_free() could be executed in the same thread
or a different thread.
This commit was SVN r7870.
AM_INIT_AUTOMAKE, instead of the deprecated version.
* Work around dumbness in modern AC_INIT that requires the version
number to be set at autoconf time (instead of at configure time, as
it was before). Set the version number, minus the subversion r number,
at autoconf time. Override the internal variables to include the r
number (if needed) at configure time. Basically, the right thing
should always happen. The only place it might not is the version
reported as part of configure --help will not have an r number.
* Since AM_INIT_AUTOMAKE taks a list of options, no need to specify
them in all the Makefile.am files.
* Addes support for subdir-objects, meaning that object files are put
in the directory containing source files, even if the Makefile.am is
in another directory. This should start making it feasible to
reduce the number of Makefile.am files we have in the tree, which
will greatly reduce the time to run autogen and configure.
This commit was SVN r7211.
* don't know what I was thinking, but can't use the MCA_PML_CALL macro on
the two data values, as they don't have things that the macro can
expand into
This commit was SVN r6868.
the values to the PML structure. This will allow PMLs that want to do
hardware matching at the cost of a smaller range of valid tags and cids.
Updated all the places that used the MPI_TAG_UB_VALUE constant to instead
look at the pml struct.
This commit was SVN r6778.
Any non-blocking P2P function should set the request to something else
then MPI_REQUEST_NULL, when passed a source/dest of MPI_PROC_NULL.
Introduce a new ompi_request_empty, which returns the
MPI_SOURCE=MPI_PROC_NULL, MPI_TAG=MPI_ANY_TAG, count=0 as specified by
the MPI-standard.
This commit was SVN r6611.
the external32 conversions (as specified in the MPI standard) the other one is the local
convertor that can be used for MPI_Pack and MPI_Unpack functions.
This commit was SVN r6375.