- increase number of wqe to minimize number of RNRs
- it is better to have high watermark and post relatively small number of wqes
- increased TX queue size
This commit was SVN r28440.
MPI_COMM_SELF in reverse order during MPI_FINALIZE (well, actually,
''all'' attributes are now deleted in reverse order whenever a
communicator is destructed).
Also revamped a few things in the MPI attribute implementation:
* use a One Big Lock philosophy for making the implementation thread
safe (vs. the pair of locks we were using before). One Big Lock is
quite a bit simpler and has fewer corner cases; the code for
attributes is still complicated, but is definitely less complex
than it used to be.
* The COPY_ATTR_CALLBACKS and DELETE_ATTR_CALLBACKS macros no longer
return; they simply set a value if something went wrong. Then we
check this value after the macros complete. This simplifies
unlocking, etc.
* Added write barriers right before releasing locks to ensure memory
consistency.
* Fixed a bunch of typos in comments, and some indenting.
Many thanks to KAWASHIMA Takahiro who contributed the original patch
for attribute destruction ordering, and who helped test/debug/evolve
the patch to its final form.
Fixes trac:3123.
cmr:v1.7.2:reviewer=bosilca
This commit was SVN r28439.
The following Trac tickets were found above:
Ticket 3123 --> https://svn.open-mpi.org/trac/ompi/ticket/3123
requests. This patch fixes trac:3475.
CMR v1.6, v1.7
This commit was SVN r28431.
The following Trac tickets were found above:
Ticket 3475 --> https://svn.open-mpi.org/trac/ompi/ticket/3475
from the list (just for good measure), and then free() it (without
using _SAFE, we were accessing memory that was just free()'d to get to
the next item). Also be a little more thorough -- DESTRUCT the list
when we're all done.
This commit was SVN r28429.
(i.e., ensure that more data items get zeroed out/set to NULL) so that
if something goes wrong during initialization, we don't try to clean
up something that isn't there (and segv).
The chance of this happening on the trunk is very low (and will also
be low once the verbs improvements are brought over to v1.7). But it
can actually happen in the v1.6 branch (e.g., if no CPC is available,
we'll try to get the length of the endpoints list, but the endpoints
list is NULL).
Hence, even though the real goal is to get this functionality over to
v1.6, I figured I'd commit to the trunk/CMR to v1.7 just to try to
keep commonality in the openib between all three where possible.
This commit was SVN r28317.
This macro is only used on the failure path so the additional if statement
should not have any affect on performance.
cmr:v1.7
This commit was SVN r28292.
- Introduced configure option '--enable-fmpi'. If configuring Open MPI w/o Fortran bindings (--disable-mpi-f77/--disable-mpi-fortran), then this option (i.e. --disable-fmpi) will be implicitly passed to the VT configure to disable MPI Fortran support.
This commit was SVN r28260.
Notes:
- This commit also eliminates the need for an available components list in use
in several frameworks. None of the code in question was making use of the
priority field of the priority component list item so these extra lists were
removed.
- Cleaned up selection code in several frameworks to sort lists using opal_list_sort.
- Cleans up the ompi/orte-info functions. Expose the functions that construct the
list of params so they can be used elsewhere.
patches for mtl/portals4 from brian
missed a few output variables in openib
This commit was SVN r28241.
Features:
- Support for an override parameter file (openmpi-mca-param-override.conf).
Variable values in this file can not be overridden by any file or environment
value.
- Support for boolean, unsigned, and unsigned long long variables.
- Support for true/false values.
- Support for enumerations on integer variables.
- Support for MPIT scope, verbosity, and binding.
- Support for command line source.
- Support for setting variable source via the environment using
OMPI_MCA_SOURCE_<var name>=source (either command or file:filename)
- Cleaner API.
- Support for variable groups (equivalent to MPIT categories).
Notes:
- Variables must be created with a backing store (char **, int *, or bool *)
that must live at least as long as the variable.
- Creating a variable with the MCA_BASE_VAR_FLAG_SETTABLE enables the use of
mca_base_var_set_value() to change the value.
- String values are duplicated when the variable is registered. It is up to
the caller to free the original value if necessary. The new value will be
freed by the mca_base_var system and must not be freed by the user.
- Variables with constant scope may not be settable.
- Variable groups (and all associated variables) are deregistered when the
component is closed or the component repository item is freed. This
prevents a segmentation fault from accessing a variable after its component
is unloaded.
- After some discussion we decided we should remove the automatic registration
of component priority variables. Few component actually made use of this
feature.
- The enumerator interface was updated to be general enough to handle
future uses of the interface.
- The code to generate ompi_info output has been moved into the MCA variable
system. See mca_base_var_dump().
opal: update core and components to mca_base_var system
orte: update core and components to mca_base_var system
ompi: update core and components to mca_base_var system
This commit also modifies the rmaps framework. The following variables were
moved from ppr and lama: rmaps_base_pernode, rmaps_base_n_pernode,
rmaps_base_n_persocket. Both lama and ppr create synonyms for these variables.
This commit was SVN r28236.
- configure:
- fixed passing FCFLAGS to the Fortran compiler when building libvt-fmpi
- temporary disabled memory allocation tracing for multi-threaded applications (introduced in v5.14.1) due to broken counter values when memory is freed in a different thread than where it was allocated
- do not build the unification library when building with HP/Platform MPI (needs linking libmpiCC, even if the C++ MPI interface isn't used)
- removed 'libfmpi' from list of MPI Fortran libraries to be searched (causes that 'libvt-fmpi' will be built when configuring for HP/Platform MPI)
- do not build the MPI Fortran library 'libvt-fmpi' when building VT inside Open MPI
- Java tracing:
- minor performance improvment: call vt_java_check_error (now vt_java_error) only if a JVMTI function returns an error
This commit was SVN r28228.
that has been temporarily stored in the communicator_array should be removed
or the finalization will segfault (the same communicator will be released
twice).
This commit was SVN r28214.
At the same time, fix a minor issue where the init hook was being called twice, once by the libc malloc and once by our malloc by removing the call from our malloc.
This commit was SVN r28202.
- general: Fixed several Coverity warnings
- otfprofile: Do not show helptext if '-V' given
- otfinfo: Fixed counting of collective operations and markers
This commit was SVN r28195.
- configure: VPATH building: Moved adding of -I$top_srcdir to CPPFLAGS to the end of configure to prevent using this flags for configure checks
- VT libs: Fixed potential segmentation fault (infinite recursion) when writing intermediate statistics (VT_STAT_INTV != 0)
- vtunify: Fixed header include to disable OpenMP in the library version of vtunify (libvt-mpi-unify)
- fixed several Coverity warnings
This commit was SVN r28187.
* Don't call PMPI_* anything from our module code; that's terribly
bad form (and disallowed!). Instead, do the proper back-end stuff
to reset the error handler on the file handle.
* If we've already started to MPI_Finalize, then just give up and
don't actually perform all the file closing actions (because
ROMIO's file close calls MPI_Barrier, which will obviously fail if
MPI_Finalize has already been invoked). Bad user behavior should
be punished (by leaking resources, not closing the file properly,
etc.).
This commit was SVN r28177.
library to multiple libraries that are implicitly sucked into the executable
as a dependency of libmpi. The initialize hook isn't visible to libc on some
linux distributions when it's in libopal and libopal isn't explicity linked
into the executable. The fix is to have a duplicate initialize hook in
libmpi as well as libopal. *sigh*.
This commit was SVN r28164.
- general:
- incremented version number to 1.12.3
- updated copyright information (2012->2013)
- fixed compiler warnings occurred when NDEBUG is defined (--with-platform=optimized)
- otfprofile, LaTeX output:
- swapped x & y axis of the Message Data Rate Matrix
- adapted labels to Vampir
Changes to VT:
- general:
- incremented version number to 5.14.3
- updated copyright information (2012->2013)
- fixed compiler warnings occurred when NDEBUG is defined (--with-platform=optimized)
- configure / build system:
- do not search for the MPI lib. when an MPI compiler wrapper was found (prevents double linkage of the MPI lib. when building vtunify-mpi and vtfilter-mpi)
- prepend cross-prefix to the compiler wrappers *only* if '--with-cross-prefix[=PREFIX]' is given
- removed unnecessary sources from libvt-java
- VT libs:
- extended inoffical API for manual region tracing: allow specifying a group name
- plugin counters: Merge a set of post-mortem counters and write them under a single async key. This speeds up the unification.
- Java tracing:
- removed multiple asking for the current thread id when recording method enter/leave events
- replaced hash function (id % prime) by Jenking's recommended one ( id & (hash_table_size-1) )
- vtdyn: Do not instrument regions where inserting instrumentation would requires using a trap
- vtsetup: Fixed availability state of the exec tracing feature
This commit was SVN r28162.
A few changes were required to support this move:
1. the PMI component used to identify rte-related data (e.g., host name, bind level) and package them as a unit to reduce the number of PMI keys. This code was moved up to the ORTE layer as the OPAL layer has no understanding of these concepts. In addition, the component locally stored data based on process jobid/vpid - this could no longer be supported (see below for the solution).
2. the hash component was updated to use the new opal_identifier_t instead of orte_process_name_t as its index for storing data in the hash tables. Previously, we did a hash on the vpid and stored the data in a 32-bit hash table. In the revised system, we don't see a separate "vpid" field - we only have a 64-bit opaque value. The orte_process_name_t hash turned out to do nothing useful, so we now store the data in a 64-bit hash table. Preliminary tests didn't show any identifiable change in behavior or performance, but we'll have to see if a move back to the 32-bit table is required at some later time.
3. the db framework was a "select one" system. However, since the PMI component could no longer use its internal storage system, the framework has now been changed to a "select many" mode of operation. This allows the hash component to handle all internal storage, while the PMI component only handles pushing/pulling things from the PMI system. This was something we had planned for some time - when fetching data, we first check internal storage to see if we already have it, and then automatically go to the global system to look for it if we don't. Accordingly, the framework was provided with a custom query function used during "select" that lets you seperately specify the "store" and "fetch" ordering.
4. the ORTE grpcomm and ess/pmi components, and the nidmap code, were updated to work with the new db framework and to specify internal/global storage options.
No changes were made to the MPI layer, except for modifying the ORTE component of the OMPI/rte framework to support the new db framework.
This commit was SVN r28112.