Some MPI C interface files saw some spacing changes to conform to the coding standards of Open MPI.
Changed MPI C interface files to use {{{OPAL_CR_ENTER_LIBRARY()}}} and {{{OPAL_CR_EXIT_LIBRARY()}}} instead of just {{{OPAL_CR_TEST_CHECKPOINT_READY()}}}. This will allow the checkpoint/restart system more flexibility in how it is to behave.
Fixed the configure check for {{{--enable-ft-thread}}} so it has a know dependance on {{{--enable-mpi-thread}}} (and/or {{{--enable-progress-thread}}}).
Added a line for Checkpoint/Restart support to {{{ompi_info}}}.
Added some options to choose at runtime whether or not to use the checkpoint polling thread. By default, if the user asked for it to be compiled in, then it is used. But some users will want the ability to toggle its use at runtime.
There are still some places for improvement, but the feature works correctly. As always with Checkpoint/Restart, it is compiled out unless explicitly asked for at configure time. Further, if it was configured in, then it is not used unless explicitly asked for by the user at runtime.
This commit was SVN r17516.
* Include all the stuff that is necessary for running autogen.sh in a
distribution tarball.
* Remove from config/Makefile.am's EXTRA_DIST that which is
automatically included in the tarball in recent versions of
Automake (i.e., all the m4 files that are acincluded).
* Make ROMIO's configure script look for something that is actually
included in the tarball.
Fixes trac:1025.
This commit was SVN r17505.
The following Trac tickets were found above:
Ticket 1025 --> https://svn.open-mpi.org/trac/ompi/ticket/1025
for dynamic selection of cpc methods based on what is available. It
also allows for inclusion/exclusions of methods. It even futher allows
for modifying the priorities of certain cpc methods to better determine
the optimal cpc method.
This patch also contains XRC compile time disablement (per Jeff's
patch).
At a high level, the cpc selections works by walking through each cpc
and allowing it to test to see if it is permissable to run on this
mpirun. It returns a priority if it is permissable or a -1 if not. All
of the cpc names and priorities are rolled into a string. This string
is then encapsulated in a message and passed around all the ompi
processes. Once received and unpacked, the list received is compared
to a local copy of the list. The connection method is chosen by
comparing the lists passed around to all nodes via modex with the list
generated locally. Any non-negative number is a potentially valid
connection method. The method below of determining the optimal
connection method is to take the cross-section of the two lists. The
highest single value (and the other side being non-negative) is selected
as the cpc method.
svn merge -r 16948:17128 https://svn.open-mpi.org/svn/ompi/tmp-public/openib-cpc/ .
This commit was SVN r17138.
<prog>`}}} in `configure`. It is preferable to simply using {{{`which
<prog>`}}} because backticks (`) (aka backquotes) invoke a sub-shell
which may source a "noisy" `~/.whatever` file, and we do not want the
error messages to be part of the assignment in {{{foo=`which
<prog>`}}}.
This commit was SVN r16955.
cover the case where a subdirectory is also built that needs to be
removed.
Note that there are other macros that we don't control (AC, AM, and/or
LT) that also exhibit this problem that we cannot fix. :-\
Fixes trac:1180.
This commit was SVN r16669.
The following Trac tickets were found above:
Ticket 1180 --> https://svn.open-mpi.org/trac/ompi/ticket/1180
methods (in order of precedence):
1. #pragma ident <ident string> (e.g., Intel and Sun)
1. #ident <ident string> (e.g., GCC)
1. static const char ident[] = <ident string> (all others)
By default, the ident string used is the standard Open MPI version string. Only
the following libraries will get the embedded version strings (e.g., DSOs will
not):
* libmpi.so
* libmpi_cxx.so
* libmpi_f77.so
* libopen-pal.so
* libopen-rte.so
* Added two new configure options:
* `--with-package-name="STRING"` (defaults to "Open MPI username@hostname
Distribution"). `STRING` is displayed by `ompi_info` next to the "Package"
heading.
* `--with-ident-string="STRING"` (defaults to the standard Open MPI version
string - e.g., X.Y.Zr######). `%VERSION%` will expand to the Open MPI
version string if it is supplied to this configure option.
This commit was SVN r16644.
{{{
OMPI_VAR_SCOPE_PUSH([var1 var2 var3])
...use $var1 $var1 and $var3
OMPI_VAR_SCOPE_PUSH([var4 var5 var6])
...use $var1 $var1 and $var3
...use $var4 $var5 and $var6
OMPI_VAR_SCOPE_POP
...use $var1 $var1 and $var3
OMPI_VAR_SCOPE_POP
}}}
The PUSH macro does a simple sanity check to ensure that the variables
listed are not already set with other values. If they are set, it
will abort configure, assuming that this is a programming error. If
none of the names are set as environment variables containing values,
the names are saved for later POP'ing. The POP will unset all the
variables from a corresponding PUSH.
As the names imply, these macros effect a stack-like behavior. So a
POP must correspond to a PUSH, etc.
These macros are intended to be simple sanity checks for OMPI
configure programmers, and also help keep the environment clean by
unsetting variables when they are no longer used.
This commit was SVN r16592.
config/ompi_check_visibility.m4 (OMPI_CHECK_VISIBILITY):
Rename ompi_vc_cc_fvisibility to ompi_cv_cc_fvisibility, so
that it will be cached.
This commit was SVN r16435.
1. --with-sge, always builds
2. --without-sge, never builds
3. if neither is specified, build if and only if either SGE_ROOT is set or "qrsh" is found in the path
This commit was SVN r16422.
The commit has been tested for C/R and Cray operations, and on Odin (SLURM, rsh) and RoadRunner (TM). I tried to update all environments, but obviously could not test them. I know that Windows needs some work, and have highlighted what is know to be needed in the odls process component.
This represents a lot of work by Brian, Tim P, Josh, and myself, with much advice from Jeff and others. For posterity, I have appended a copy of the email describing the work that was done:
As we have repeatedly noted, the modex operation in MPI_Init is the single greatest consumer of time during startup. To-date, we have executed that operation as an ORTE stage gate that held the process until a startup message containing all required modex (and OOB contact info - see #3 below) info could be sent to it. Each process would send its data to the HNP's registry, which assembled and sent the message when all processes had reported in.
In addition, ORTE had taken responsibility for monitoring process status as it progressed through a series of "stage gates". The process reported its status at each gate, and ORTE would then send a "release" message once all procs had reported in.
The incoming changes revamp these procedures in three ways:
1. eliminating the ORTE stage gate system and cleanly delineating responsibility between the OMPI and ORTE layers for MPI init/finalize. The modex stage gate (STG1) has been replaced by a collective operation in the modex itself that performs an allgather on the required modex info. The allgather is implemented using the orte_grpcomm framework since the BTL's are not active at that point. At the moment, the grpcomm framework only has a "basic" component analogous to OMPI's "basic" coll framework - I would recommend that the MPI team create additional, more advanced components to improve performance of this step.
The other stage gates have been replaced by orte_grpcomm barrier functions. We tried to use MPI barriers instead (since the BTL's are active at that point), but - as we discussed on the telecon - these are not currently true barriers so the job would hang when we fell through while messages were still in process. Note that the grpcomm barrier doesn't actually resolve that problem, but Brian has pointed out that we are unlikely to ever see it violated. Again, you might want to spend a little time on an advanced barrier algorithm as the one in "basic" is very simplistic.
Summarizing this change: ORTE no longer tracks process state nor has direct responsibility for synchronizing jobs. This is now done via collective operations within the MPI layer, albeit using ORTE collective communication services. I -strongly- urge the MPI team to implement advanced collective algorithms to improve the performance of this critical procedure.
2. reducing the volume of data exchanged during modex. Data in the modex consisted of the process name, the name of the node where that process is located (expressed as a string), plus a string representation of all contact info. The nodename was required in order for the modex to determine if the process was local or not - in addition, some people like to have it to print pretty error messages when a connection failed.
The size of this data has been reduced in three ways:
(a) reducing the size of the process name itself. The process name consisted of two 32-bit fields for the jobid and vpid. This is far larger than any current system, or system likely to exist in the near future, can support. Accordingly, the default size of these fields has been reduced to 16-bits, which means you can have 32k procs in each of 32k jobs. Since the daemons must have a vpid, and we require one daemon/node, this also restricts the default configuration to 32k nodes.
To support any future "mega-clusters", a configuration option --enable-jumbo-apps has been added. This option increases the jobid and vpid field sizes to 32-bits. Someday, if necessary, someone can add yet another option to increase them to 64-bits, I suppose.
(b) replacing the string nodename with an integer nodeid. Since we have one daemon/node, the nodeid corresponds to the local daemon's vpid. This replaces an often lengthy string with only 2 (or at most 4) bytes, a substantial reduction.
(c) when the mca param requesting that nodenames be sent to support pretty error messages, a second mca param is now used to request FQDN - otherwise, the domain name is stripped (by default) from the message to save space. If someone wants to combine those into a single param somehow (perhaps with an argument?), they are welcome to do so - I didn't want to alter what people are already using.
While these may seem like small savings, they actually amount to a significant impact when aggregated across the entire modex operation. Since every proc must receive the modex data regardless of the collective used to send it, just reducing the size of the process name removes nearly 400MBytes of communication from a 32k proc job (admittedly, much of this comm may occur in parallel). So it does add up pretty quickly.
3. routing RML messages to reduce connections. The default messaging system remains point-to-point - i.e., each proc opens a socket to every proc it communicates with and sends its messages directly. A new option uses the orteds as routers - i.e., each proc only opens a single socket to its local orted. All messages are sent from the proc to the orted, which forwards the message to the orted on the node where the intended recipient proc is located - that orted then forwards the message to its local proc (the recipient). This greatly reduces the connection storm we have encountered during startup.
It also has the benefit of removing the sharing of every proc's OOB contact with every other proc. The orted routing tables are populated during launch since every orted gets a map of where every proc is being placed. Each proc, therefore, only needs to know the contact info for its local daemon, which is passed in via the environment when the proc is fork/exec'd by the daemon. This alone removes ~50 bytes/process of communication that was in the current STG1 startup message - so for our 32k proc job, this saves us roughly 32k*50 = 1.6MBytes sent to 32k procs = 51GBytes of messaging.
Note that you can use the new routing method by specifying -mca routed tree - if you so desire. This mode will become the default at some point in the future.
There are a few minor additional changes in the commit that I'll just note in passing:
* propagation of command line mca params to the orteds - fixes ticket #1073. See note there for details.
* requiring of "finalize" prior to "exit" for MPI procs - fixes ticket #1144. See note there for details.
* cleanup of some stale header files
This commit was SVN r16364.
static builds for OMPI components that required extra LIBS or LDFLAGS
(e.g., the openib BTL).
Fixes trac:1155.
This commit was SVN r16314.
The following SVN revision numbers were found above:
r15900 --> open-mpi/ompi@50941ec389
The following Trac tickets were found above:
Ticket 1155 --> https://svn.open-mpi.org/trac/ompi/ticket/1155
Minor change to ompi_mca.m4 to move AC_CONFIG_FILES(framework/makefile) in autogen process (instead of configure process), where we still now the actual framework path (instead of guessing using $project/mca/$framework).
This have shown no side effects in our testing. Let us know if this breaks one of your components in some exotic context.
This commit was SVN r16146.
used at nce (up to one unique collective module per collective function).
Matches r15795:15921 of the tmp/bwb-coll-select branch
This commit was SVN r15924.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r15795
r15921
only static libraries. Previously, we were linking the libraries into
directly into the common, btl, and mtl code. This seemed to work fine
for me on my Opteron Fedora box, but caused Lisa some issues (PtlNIInit
would succeed, but the network handle would fail when used with
PtlEQAlloc).
Instead, link the portals libraries directly into libmpi and not at
all into the common, btl, or mtl components. THen use some linker
tricks to force the linker to bring in the public interface for the
reference implementation (which thankfully is pretty small).
This commit was SVN r15902.
disable the building of the udapl BTL on Linux by default. On every
other OS, the udapl configury will attempt to find udapl's
header/library files, etc. by default.
You can specify --with-udapl on the configure command line (on any OS)
to force OMPI to try to configure/build udapl (i.e., look for udapl's
header/library files, etc.).
This commit was SVN r15894.
1. Galen's fine-grain control of queue pair resources in the openib
BTL.
1. Pasha's new implementation of asychronous HCA event handling.
Pasha's new implementation doesn't take much explanation, but the new
"multifrag" stuff does.
Note that "svn merge" was not used to bring this new code from the
/tmp/ib_multifrag branch -- something Bad happened in the periodic
trunk pulls on that branch making an actual merge back to the trunk
effectively impossible (i.e., lots and lots of arbitrary conflicts and
artifical changes). :-(
== Fine-grain control of queue pair resources ==
Galen's fine-grain control of queue pair resources to the OpenIB BTL
(thanks to Gleb for fixing broken code and providing additional
functionality, Pasha for finding broken code, and Jeff for doing all
the svn work and regression testing).
Prior to this commit, the OpenIB BTL created two queue pairs: one for
eager size fragments and one for max send size fragments. When the
use of the shared receive queue (SRQ) was specified (via "-mca
btl_openib_use_srq 1"), these QPs would use a shared receive queue for
receive buffers instead of the default per-peer (PP) receive queues
and buffers. One consequence of this design is that receive buffer
utilization (the size of the data received as a percentage of the
receive buffer used for the data) was quite poor for a number of
applications.
The new design allows multiple QPs to be specified at runtime. Each
QP can be setup to use PP or SRQ receive buffers as well as giving
fine-grained control over receive buffer size, number of receive
buffers to post, when to replenish the receive queue (low water mark)
and for SRQ QPs, the number of outstanding sends can also be
specified. The following is an example of the syntax to describe QPs
to the OpenIB BTL using the new MCA parameter btl_openib_receive_queues:
{{{
-mca btl_openib_receive_queues \
"P,128,16,4;S,1024,256,128,32;S,4096,256,128,32;S,65536,256,128,32"
}}}
Each QP description is delimited by ";" (semicolon) with individual
fields of the QP description delimited by "," (comma). The above
example therefore describes 4 QPs.
The first QP is:
P,128,16,4
Meaning: per-peer receive buffer QPs are indicated by a starting field
of "P"; the first QP (shown above) is therefore a per-peer based QP.
The second field indicates the size of the receive buffer in bytes
(128 bytes). The third field indicates the number of receive buffers
to allocate to the QP (16). The fourth field indicates the low
watermark for receive buffers at which time the BTL will repost
receive buffers to the QP (4).
The second QP is:
S,1024,256,128,32
Shared receive queue based QPs are indicated by a starting field of
"S"; the second QP (shown above) is therefore a shared receive queue
based QP. The second, third and fourth fields are the same as in the
per-peer based QP. The fifth field is the number of outstanding sends
that are allowed at a given time on the QP (32). This provides a
"good enough" mechanism of flow control for some regular communication
patterns.
QPs MUST be specified in ascending receive buffer size order. This
requirement may be removed prior to 1.3 release.
This commit was SVN r15474.
VxWorks. Still some issues remaining, I'm sure.
Refs trac:1010
This commit was SVN r15320.
The following Trac tickets were found above:
Ticket 1010 --> https://svn.open-mpi.org/trac/ompi/ticket/1010
types and add STOP_AT_FIRST_PRIORITY type for framework configuration,
which allows all components at the highest priority that succeeds to
succeed
* Use STOP_AT_FIRST_PRIORITY type for gpr framework, so that the null
component isn't built when the replica and proxy components are
available.
This commit was SVN r15286.
libsysfs headers are required for libibverbs v1.0 (i.e., OFED 1.0 and
OFED 1.1), meaning that <infiniband/verbs.h> would #include
<sysfs/libsysfs.h>. Hence, if the libsysfs headers did not exist on a
system, including <verbs.h> would fail.
With older versions of Autoconf, we would simply test for the
''presence'' of the <infinband/verbs.h> and not actually try to
''use'' it. This could leave OMPI in a weird situation on systems
that did not have the sysfs headers installed: configure would
complete successfully, but the build of the openib btl would fail.
Some users complained, thinking that there was a real compile error in
the OMPI code base.
Hence, we decided that it would be better to AC_CHECK_HEADER for the
sysfs header files in configure. If the sysfs header files were not
found, configure would abort. Users generally understand when
configure aborts, and know how to read the output and fix the
underlying problem; it was ''much'' more obvious than having the OMPI
build fail for nebulous reasons much later.
Note that we also checked for / added -lsysfs, but that wasn't
necessary because libibverbs already run-time linked to it (i.e.,
libibverbs couldn't have been installed if the sysfs libraries weren't
installed).
However, there are now two reasons why the check for sysfs's header
files is no longer necessary:
* Newer versions of Autoconf are now used for OMPI tarballs that
check for both the presence '''and''' usability of header files.
Hence, AC_CHECK_HEADER for <infiniband/verbs.h> will actually try
to ''use'' it, so if the sysfs header files are not installed,
AC_CHECK_HEADER will (rightfully) fail.
* libibverbs v1.1 (i.e., OFED 1.2 and beyond) does not require
libsysfs at all (headers or libraries).
When checking for the sysfs header files, OMPI's configure ''forces''
you to have sysfs installed, even though it may not be needed (e.g.,
libibverbs v1.1 and beyond). Clearly, this is not good (especially
since the sysfs software package is now deprecated, and some Linux
distros no longer install it by default).
So this commit simply removes the check for the sysfs header files and
libraries, allowing OMPI to be build on systems with libibverbs >=1.1 that
do not have sysfs installed.
For systems with libibverbs 1.0, if they do not have the sysfs headers
installed, we'll still fail AC_CHECK_HEADER and therefore still fail
configure properly. I expanded the warning message to say that if
libibverbs 1.0 is being used, check to ensure that sysfs is installed,
yadda yadda yadda.
This commit was SVN r14971.
The following Trac tickets were found above:
Ticket 1045 --> https://svn.open-mpi.org/trac/ompi/ticket/1045
have the SRQ interface.
* Instead of setting AC_DEFINEs per MCA component, set per test. THe
answers can never be difference, and this will speed sed just a teeny
bit
This commit was SVN r14856.
-I for ${includedir}/openmpi. Solves many problems, and with just a tad
bit of hackery. Don't know why I didn't just do this earlier.
Refs trac:542
This commit was SVN r14853.
The following Trac tickets were found above:
Ticket 542 --> https://svn.open-mpi.org/trac/ompi/ticket/542
an issue on Solaris where /usr/bin/grep doesn't understand -q. The
grep that AC_PROG_GREP finds (/usr/xpg4/bin/grep), which is POSIX
compliant and understands -q. Also fix one instance where egrep was
used instead of $EGREP.
This commit was SVN r14829.
* Require Autoconf 2.60 or higher and remove some cruft
required for AC 2.59 or the AC 2.59 / AC 2.60 mix
* Remove a bunch of now unnecessary AC_SUBST calls
* Use the libtool-provided variables for the -I and
library to use when compiling against ltdl
Fixes trac:1000
This commit was SVN r14652.
The following Trac tickets were found above:
Ticket 1000 --> https://svn.open-mpi.org/trac/ompi/ticket/1000
* Have _ompi_check_package_lib set LIBS, similar to how
_ompi_check_package_include sets CPPFLAGS. Fixes an
issue discovered by Don
* Need to restore flags after end of TM testing.
This commit was SVN r14602.
The following SVN revision numbers were found above:
r14552 --> open-mpi/ompi@e63346a633
via the visibility feature that is provided by some compilers.
Per default this feature is disabled, to enable it you need to
configure with --enable-visibility and obviously you need a compiler
with visibility support. Please refer to the wiki for more information.
https://svn.open-mpi.org/trac/ompi/wiki/Visibility
This commit was SVN r14582.
able to compile tm support, but is still "odd" in terms of the way AC
macros are normally structured. Brian says that he will fix it
properly someday.
This commit was SVN r14573.
* Remove duplicate calls to ompi_check_package by poking at the
internals just a bit. Possibly should make those officially
exposed, but whatever.
* Don't build OpenIB with PTMalloc2 and no thread support, as
this will always lead to badness.
* minor formatting cleanups
This commit was SVN r14552.
Thank God for google-able mailing list archives:
http://www.mail-archive.com/bug-libtool@gnu.org/msg00899.html
We ran into this exact bug in Libtool that was causing the C++
bindings library to be compiled incorrectly (therefore causing static
initializers to not fire properly when in a shared library, which is
the default installation configuration). Putting in some libtool
patches to fix the problem -- will be mailing the Libtool crowd
shortly to ask for a better fix...
This commit was SVN r14454.
The following Trac tickets were found above:
Ticket 982 --> https://svn.open-mpi.org/trac/ompi/ticket/982
finally brings in functionality that is already on the 1.2 branch, and
was developed and tested in the v1.2ofed branch (and other places).
Short version of new features:
* Support for ibv_fork_init()
* Automatically fill in the openib BTL bandwidth value by
querying the HCA port
* Installdirs functionality
* Fixes to always use -I in the Fortran wrapper compilers (#924)
* Gleb's mpool updates
* Remove some kruft in btl/openib/configure.m4, therefore
fixing the harmless warnings noted in #665
* Bunches of updates to the Linux RPM spec file
I.e., effectively the same thing that r14411 brought to the v1.2
branch.
Also effectively brought in r14432 and r14433 (some fixes on top of
the original r14411 commit to v1.2). Still need to bring in the moral
equivalent of r14445 after this commit (fixes to installdirs).
This commit was SVN r14449.
The following SVN revision numbers were found above:
r14411 --> open-mpi/ompi@83b31314ae
r14432 --> open-mpi/ompi@a48f160595
r14433 --> open-mpi/ompi@68f346d2bc
r14445 --> open-mpi/ompi@13d366b827
* If pbs-config can be found (either in the PATH or the
--with-tm=<dir> directory tree), use that to search for the relevant
compiler / linker flags to get TM support.
* Fix a long-standing bug that if --without-tm is supplied, we'll
still try to look for tm support
This commit was SVN r14372.
This merge adds Checkpoint/Restart support to Open MPI. The initial
frameworks and components support a LAM/MPI-like implementation.
This commit follows the risk assessment presented to the Open MPI core
development group on Feb. 22, 2007.
This commit closes trac:158
More details to follow.
This commit was SVN r14051.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r13912
The following Trac tickets were found above:
Ticket 158 --> https://svn.open-mpi.org/trac/ompi/ticket/158
private scope. Solves the problem of Red Hat-provided OFED not
working properly because the libibverbs plugins are not linked
against libibverbs.
This commit was SVN r13926.
- Set ompi-specific autoconf cache-variables
- Implement one function to check for availability of an
attribute with the possibility for a cross-check.
- Do cross-checks for
__attribute__(format)
__attribute__(nonnull)
__attribute__(sentinel)
__attribute__(warn_unused_result)
- Grep the compilers warnings for keywords regarding ignored
attributes.
- Include also the no_instrument_function
This commit was SVN r13556.
go and have proper casting.
Tested with linux gcc-4, icc-9.0, pathcc-2.2.1 and pgi-6.2.5
(icc warns on several attributes, that they are ignored;
same for pathcc and pgi)
This commit was SVN r13485.
Check both the c and cpp compilers for support of attributes, and then check for support for each individual attribute with both compilers. Only if both compilers support a given attribute will we enable it.
This commit was SVN r13483.
remote nodes. It will also kill off rogue orteds and orterun
processes. The killing of processes is ifdef'ed out for Windows
since I do not know how to do it there. Note that this change
will requite an autogen.
This commit was SVN r13477.
most common attributes. Useful attributes may be:
- optimization (pure, const, malloc--restrictness)
- data layout (packed)
- interface definition, API (deprecated, visibility, weak alias)
- compiler hint for code analysis and debugging (nonnull, format)
This commit was SVN r13369.
Sorry for the configure change -- hopefully it's early enough in the
morning that it won't affect people... (new approach won't have a
configure change).
Refs trac:739.
This commit was SVN r13080.
The following Trac tickets were found above:
Ticket 739 --> https://svn.open-mpi.org/trac/ompi/ticket/739
been fixed in the 7.0 PGI series, but is unlikely to be fixed in the
6.2 series:
* Add a configure test looking for the bad behavior (the PGI compiler
chokes on C code where structs containing bool's are copied by
value)
* Set OMPI_BOOL_STRUCT_COPY to 1 if it's ok, 0 if it's not (i.e., PGI
6.2 series will have this value set to 0)
* In two places in the code base -- orte-clean and btl_openib_ini.h,
we have a struct that contains a bool that is copied by value. In
these two places, check OMPI_BOOL_STRUCT_COPY and if it's 1, use
the "int" type instead of "bool".
Fixes trac:739
This commit was SVN r13076.
The following Trac tickets were found above:
Ticket 739 --> https://svn.open-mpi.org/trac/ompi/ticket/739
the data was buffered by the MX library. If it's the case then we declare
the send as completed and disable the completion event for the mx request.
This commit was SVN r12935.
protocol over the MX BTL. Now, we have only one matching, the one in Open
MPI.
The problem is that when the unexpected handler is triggered, not all the
message is on the host memory. In the best case we get one MX fragment (internal
MX fragment), in the worst we get NULL. The only way to fit this with the
design of the PML is to force the eager protocol at the MX internal fragment
size, and to limit the send/receive protocol at the same size. Tests show
the outcome is not far from optimal (if the pipeline depth is increased
a little bit).
Set MX_PIPELINE_LOG in order to allow MX to use internal fragments of 4K.
This commit was SVN r12930.
* Check that the C++, Fortran 77, and Objective C comilers emit code
that can link against object files emitted by the C compiler.
Moves some built / run time errors to configure time, which is
nice and should help with the debugging
* Remove unneeded -F option when building the XGrid components,
which started causing problems with LT 2.0.
* Try to use the XGridFoundation library, rather than just seeing
if we can give -framework XGridFoundation. Should make the
test slightly more accurate
* Don't assume XGrid is unavailable on 64 bit platforms, as that
won't be true on Leopard
* Require AM 1.10 or newer if using AC 2.60 or newer, so that
we don't have a split of AC supporting Objective C and AM
not doing so
This commit was SVN r12701.
they might require special tools (not sure if sed with multiple -e
arguments is totally portable)
- ignore the opalcc.1 man page. Couldn't do this in the previous
man page commit (r12192) because I was removing opalcc.1 in that
commit.
This commit was SVN r12194.
The following SVN revision numbers were found above:
r12192 --> open-mpi/ompi@581a4b0a4e
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
remove requirements on .la files on wrapper scripts
Ticket: #374
extend compilers to support 32 bit and 64 bit in one version of the wrapper
Submitted by: Dan Lacher
Reviewed by: Rolf Vandevaart
This commit was SVN r11908.
8 bytes. Adjust the configure tests to allow for this case.
Refs trac:427
This commit was SVN r11859.
The following Trac tickets were found above:
Ticket 427 --> https://svn.open-mpi.org/trac/ompi/ticket/427
the component is configured successfully. Otherwise, we can end up
trying to run make in the romio directory without any Makefiles. This
really only happens on the targets that recurse into DIST_SUBDIRS - ie
dist, maintainer-clean, and distclean
refs trac:411
This commit was SVN r11807.
The following Trac tickets were found above:
Ticket 411 --> https://svn.open-mpi.org/trac/ompi/ticket/411
* Use $31 instead of mnemonic zero for the gcc inline
assembly test, as the GNU assembler doesn't like
zero, but both Tru64 and GNU assembler should be fine
with $31
* Disable Linux timer component on Alpha. The CPU timer
rolls over every 10 seconds or less, so it's kinda
worthless for our needs.
* Fix some escaping issues when local functions are
denoted with a $
* Remove C++ comments from the Alpha assembly.
* Add base assembly code for the non-inlined functions
on Alpha
This commit was SVN r11764.
CXXFLAGS are set to -Wall -Werror. Thanks to Ralf for the patch.
refs trac:290
This commit was SVN r11762.
The following Trac tickets were found above:
Ticket 290 --> https://svn.open-mpi.org/trac/ompi/ticket/290
LoadLeveler only sets LOADL_PROCESSOR_LIST when there are 128 or less tasks allocated to a job. The POE RAS relied on this variable so I created a new RAS which uses the LoadLeveler API instead of relying on the environment variable. This still needs some testing, so for now we use the POE RAS whenever LOADL_PROCESSOR_LIST, otherwise we fall back on this component.
Unfortunately, this will require an autogen...
This commit was SVN r11732.
so that we include all the ev series on platforms that report more than
just "alpha". Fixes one of many issues on Alpha reported by a user.
refs trac:380
This commit was SVN r11683.
The following Trac tickets were found above:
Ticket 380 --> https://svn.open-mpi.org/trac/ompi/ticket/380
Add --enable-orterun-prefix-by-default (and a synonym:
--enable-mpirun-prefix-by-default) to make orterun always behave as if
"--prefix $prefix" was given on the command line (where $prefix is the
value given to the --prefix option to configure). This prevents many
rsh/ssh users from needing to modify their shell startup files to set
the LD_LIBRARY_PATH for Open MPI (they will still need to set PATH or
otherwise find the OMPI executables to mpicc/mpirun/etc. their MPI
applications).
Also added --noprefix option to orterun to disable this behavior.
Finally, note that even if --enable-orterun-prefix-by-default is
specified, if the user specifies --prefix or /path/to/mpirun, these
options will override the default value of the prefix ($prefix).
This commit was SVN r11669.
The following Trac tickets were found above:
Ticket 377 --> https://svn.open-mpi.org/trac/ompi/ticket/377
This provides support for the Infinipath interconnect using the PSM API.
Of note:
This version has a "hackaround" we always return 1 or greater from
the MTL PSM progress function, this should be examined further.
This commit was SVN r11655.
for prefetch and branch prediction work. A non-happy compiler could
just think these were functions and we wouldn't get the error, because
we didn't try to link.
Refs trac:287
This commit was SVN r11333.
The following Trac tickets were found above:
Ticket 287 --> https://svn.open-mpi.org/trac/ompi/ticket/287
before checking if we are able to compile the test program. This is required
for windows as the C++ conftest.c file generated by configure cannot be
compiled with the Microsoft cl.exe compiler (because of the exit function
prototype). So if we detect a vendor equal to microsoft we will assume
that the compiler is correctly installed (which is true on Windows most
of the time anyway).
This commit was SVN r11268.
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.
to cause them to miscompile TCP-related code.
refs trac:276
This commit was SVN r11258.
The following Trac tickets were found above:
Ticket 276 --> https://svn.open-mpi.org/trac/ompi/ticket/276
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
.proc/.endp-declarations for functions in order to be able to
link successfully.
Currently used in configure, only.
There has not been found another arch, where this is necessary.
So asm-data.txt and base/default.conf has not been changed.
This commit was SVN r11068.
of send/receives outstanding.
Use ibv_cq_resize if available after initial creation of completion queue if
cq_size is too small (based on number of peers).
This commit was SVN r11053.
libevent-1.1a.
svn merge -r10917:11006 https://svn.open-mpi.org/svn/ompi/tmp/libevent-update
This commit was SVN r11022.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r10917
r11006
than $(LN_S). This causes problems with with Windows and probably
elsewhere (re: #200). So use a slightly different trick to get the
right header selected for the MEMCPY and TIMER components.
* Using the same trick used to solve the AC_CONFIG_LINKS problem,
stop using a separate header file for direct calling in the
PML and MTL. This lets me remove some icky code in ompi_mca.m4
that was more fragile than I really liked.
This commit was SVN r10841.
We have repeatedly seen users inadvertantly try to use a C compiler
for $CXX (e.g., using icc instead of icpc in recent versions of the
Intel compiler). Unfortunately, this would "sorta work", meaning that
configure would complete successfully and the build would fail much
later in the process (when $CXX was used to try to link a C++
compiler). This was further compounded by the fact that many C
compilers will switch into "C++ mode" when they compile files that end
in .cc -- meaning that they'll *compile* C++ codes properly, but they
won't *link* properly. Hence, users would get all the way down to
compiling the C++ MPI bindings or ompi_info (i.e., very late in the
build process) before the problem became evident.
We already have a test in configure that tries to compile, link, and
run a sample C++ program. This helped ensure that $CXX was a valid
compiler, but it did not catch if the user accidentally supplied a C
compiler instead of a C++ compiler because the test program was simply
"return 0". This commit updates the test program to use some
C++-specific constructs (std::string) so that if the user supplies a C
compiler in $CXX, the program may *compile*, but it will definitely
fail to *link*.
Hence, the process will fail early in configure (with a descriptive
message about how the compiler failed to work properly) rather than
late in the build.
This commit was SVN r10829.
interconnects that provide matching logic in the library.
Currently includes support for MX and some support for
Portals
* Fix overuse of proc_pml pointer on the ompi_proc structuer,
splitting into proc_pml for pml data and proc_bml for
the BML endpoint data
* bug fixes in bsend init code, which wasn't being used by
the OB1 or DR PMLs...
This commit was SVN r10642.
on platforms without a 32-bit compare and swap implementation. There isn't
such a thing on Sparc v8 chips, so we can't support those platforms right
now. Should be possible to make opal_atomic_lifo less atomic on these
platforms, but not in the time allotted.
This commit was SVN r10407.
are 3 arguments: the pointer to the memory location to prefetch, the type of
operation that will be done on the memory (read or write) and the expected
locality.
This commit was SVN r10294.
whether an if statement is likely to be taken and for prefetching memory.
Current macros:
OPAL_LIKELY(expression)
OPAL_UNLIKELY(expression)
OPAL_PREFETC(address)
This commit was SVN r10278.
support for progress threads, so we shouldn't build them or try to use
them when support for progress threads has been requested. The TCP, GM,
SELF, and SM BTLs should have progress thread support, so they aren't
disabled. The Portals BTL isn't compiled on platforms with threads,
so it doens't need to be updated.
This commit was SVN r10156.
the pthreads library that don't do anything but are there when no special
options are given. Both the GNU compiler and the Sun compiler could
sometimes ignore the -K* options, causing badness when building with
posix threads. Don't try those options ;).
We still try -pthread and -pthreads because the compilers *do* error
when they see those options and some versions of the GNU compiler do
understand those flags (and do all the right things in that case).
This commit was SVN r10126.
- 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.
else than a quite recent version. Using this option prevent gdb from accessing
the contents of some of the structures. The error message is:
Unexpected type (0) encountered for integer constant.
This commit was SVN r9994.
Sorry for committing configure changes during the day, but this is
necessary for some testing via multiple people at different sites.
This commit was SVN r9926.
in San Jose. Allow the configure option --disable-binaries to build OMPI,
but not build or install the support binaries (so basically, just build
the libraries).
This commit was SVN r9777.
- Add a lengthy comment explaining why we don't get F90 data type
alignments
- Remove config/f90_check.m4 and its entry in acinclude.m4
This commit was SVN r9707.
The following SVN revision numbers were found above:
r9698 --> open-mpi/ompi@e57300da4c
only uses the F77 alignments anyway. Plus, it is currently unknown
how to reliably get the F90 alignments because compilers *may* reorder
things and/or give different alignments than the f77 tests.
This commit was SVN r9698.
- include stdlib.h for tests that call exit(), as AC no longer
prototypes exit in 2.60
- Fix a compile issue in our cross-compiling test for C/C++
alignment checks, matching what AC did for 2.60.
This commit was SVN r9634.
svn merge -r 9453:9609 https://svn.open-mpi.org/svn/ompi/tmp/f90-stuff .
Several improvements over the current F90 MPI bindings:
- The capability to make 4 sizes of the F90 bindings:
- trivial: only the F90-specific MPI functions (sizeof and a few
others)
- small: (this is the default) all MPI functions that do not take
choice buffers
- medium: small + all MPI functions that take one choice buffer
(e.g., MPI_SEND)
- large: all MPI functions, but those that take 2 choice buffers
(e.g., MPI_GATHER) only allow both buffers to be of the same type
- Remove all non-standard MPI types (LOGICAL*x, CHARACTER*x)
- Remove use of selected_*_kind() and only use MPI-defined types
(INTEGER*x, etc.)
- Decrease complexity of the F90 configure and build system
This commit was SVN r9610.
* Don't do the .in -> .tmp -> header thing for the prefixes and versions.
It causes some severe cleanup issues all to save 4 files from rebuilding
when configure is run.
* Clean up some makefiles so it's clear what is being installed/disted
This commit was SVN r9260.
SLURM. Currently, this includes AIX and Linux. If the user wants to build
SLURM on another platform, they can specify --with-slurm.
* Enable/disable the SLURM sds component using the same logic as the PLS and
RDS components.
This commit was SVN r9259.
installation directories) in configure, the files that depend on this
information are not properly rebuilt. If you need this information,
don't setup a -D in the Makefile.am - instead, include
opal/install_dirs.h.
* Use the : option in AC_CONFIG_FILES to avoid needing to expose that
we are playing around with temporary files with our headers to avoid
rebuilding
* Clean up the version file information a bit, and like the install
directory stuff, make sure that there is a dependency so that
ompi_info gets rebuilt properly when a version number changes.
This commit was SVN r9256.
now-default GNU debug flags (-g3) don't accidentally cause the
configure system to add -O3 to the build flags (because it didn't
recognize that -g3 was a debugging flag).
This commit was SVN r9207.
source tree that are named .f95, and b) it sets the future file
extension for Fortran AC tests to be .f95. This is not a problem for
gfortran, but other compilers (e.g., ifort) don't like that.
This commit was SVN r9040.
- Make the F90 checks use the identical types to the F77 checks (e.g.,
INTEGER*4, as opposed to potential selected_int_kind() equivalents)
- Comment out the F77 and F90 alignment check failure -- there is some
confusion here; some vendors apparently told Craig R. yesterday that
they change the alignments of types based on whether the instance is
a standalone variable, in an array, or a member of a struct.
More investigation is needed (and potentially clarification for MPI
users -- this could be quite problematic!), but this alignment test is
otherwise hosing the nightlies, so it needs to be taken out for the
moment.
This commit was SVN r9031.
changes. The two Big Changes are elegance (much more re-use of code
rather than cut-n-pasting the same code over and over and over and...)
and enabling cross-compilation for F77 and F90 (because we actually
have to *run* some compiled F77 and F90 programs for some of the
tests, which obviously won't work in a cross-compilation environment
-- so enable the use of config.cache to load such values in
cross-compiling environments).
This commit was SVN r8991.
- 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.
situations) before going on to tests that run executables with the
compiler. Print a friendly error message if it fails. Hopefully, this
will help people with borked compilers.
This commit was SVN r8898.
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.
- fall back to compile test for windows paffinity component
when cross compiling
- fall back to platform guess when checking for threads having
different pids with pthreads (yes on linux, no elsewhere)
- pass the proper host, target, and build flags to the
ROMIO configure script
With these changes, cross-compiling should be possible with the exception
of the Fortran 77 and Fortran 90 bindings. Fortran 77 can be cross-
compiled if cache values are provided for type sizes and alignment.
This commit was SVN r8702.
- Borrow configure.m4 from the mvapi btl. One of the uDAPL headers emits a
warning when -pedantic is enabled, so strip it out.
- Change function check in ompi_check_dapl.m4 from dat_ia_open to
dat_registry_list_providers.. dat_ia_open wasn't working right
- Make the references to prepare_dst, put, and get NULL for now
- Add opal_output() calls in all the udapl interface functions for debugging
- Add evd_qlen component parameter to control event dispatcher queue length
- First stab at component_init and module_init
- Misc cleanups - whitespace, dead code removal
- Update copyrights to 2006
This commit was SVN r8701.
r8698), with changes below:
- Split wrapper flags into those required for each of the three projects,
and cleaned up some cruft (including the LIBMPI_EXTRA_*FLAGS) through-
out the build system
- Added opal_init_util and opal_finalize_util to allow init / cleanup
of all the opal code that doesn't require the MCA system
- Create standalone key=value file parser, based on the one that used
to be in the mca param parser, so that it can be shared in multiple
places
- Add wrapper datafiles for opal, orte, and ompi wrappers, and add
wrapper compiler with support for all the old features
This commit was SVN r8699.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r8690
r8698
the failure wasn't being properly propogated up from ompi_find_type and
resulting in bad #define values in ompi_config.h
* Fix issue where we could emit illegal sh code if we were checking for a
type with no corresponding C types listed. Thanks to Ralf for tracking
this one down.
* Fix a couple more messages to match all the others.
This commit was SVN r8685.
determine values like Fortran alignment (which can only be determined by
running a program) when cross-compiling. By providing cache values, the
programs will not be run at all, and life will be good. Also clean up
some macro interfaces so that they are a bit easier to use, at the cost
of horrid internals ;).
This commit was SVN r8684.
information on Windows with the CL compiler. We don't use it, and we
were running into trouble with the compiler on some tests
This commit was SVN r8558.
* Make sure --without-BTL works for all BTLs
* Fix copy-n-paste error in aix timer configrue help string
This should go to the v1.0 branch
This commit was SVN r8554.
- don't fail to configure if threads aren't found, since
we don't have thread support on windows
- rather than setting the asm file name to none in asm-data,
special case windows w/ CL in the ompi_config_asm macros.
Otherwise, there were some warnings during make dist and
configure that didn't need to be there.
This commit was SVN r8502.
- add the right asm format
- add checks for some constants / fields that cygwin
doesn't have in the stacktrace code
- fix for slightly more verbose libtool 2 betas that
have multiple lines for link output
This commit was SVN r8501.
value that is not internally translated). In order to make all the version
of libtool happy, the simplest way is to have the source file at the end of
the command line.
This commit was SVN r8451.
is a short name usually the one that the compiler have. If we are using
wrappers around a compiler the flavor will be the real name of the compiler.
The vendor is a short name for the maker of the compiler. The GNU compilers
get gnu and the microsoft one get microsoft.
These 2 macros provide a simple way to check for specific brand of compilers
and to generate the correct code to test with the autoconf macros. They are
not yet completed, I add just some of the compilers/vendors but feel free to
add more if you need/want.
This commit was SVN r8417.
x86_64 as most opterons do. So add test to see how many bytes a long is,
and if it's 8 bytes, assume we're on an AMD64 instead of an IA32 for the
purposes of assembly.
This commit was SVN r8384.
- since we now have three places where we need to add a -l<foo> if
and only if it isn't already in something in LIBS that provides
symbol bar...
This commit was SVN r8370.
features. Now it works with gfortran as well.
The problem was that the cast between LOGICAL and INTEGER is not a Fortran language feature. The easiest solution around this problem is to have a C function that print the value. We set the value in fortran and then call the C function to print it out.
This commit was SVN r8266.
case of:
sizeof(MPI_Flogical) != sizeof (int)
and
Fortran value of .TRUE. != 1
as is often the case.
- Check in configure the value of .TRUE., the C-type coresponding to
logical and check, that fortran compiler does not do something strange
with arrays of logicals
- Convert all occurrences of logicals in the fortran wrappers, only
in case it is needed.
*Please note* Implementation of MPI_Cart_sub needed special treatment.
- Output these value in ompi_info -a
- Clean up the prototypes_mpi.h to just have a single definition and
thereby deleting the necessity for prototypes_pmpi.h
- configured, compiled and tested with F90-program, which uses
MPI_Cart_create and MPI_Cart_get:
linux ia32, gcc (no testing, as no f90)
linux ia32, gcc --disable-mpi-f77 --disable-mpi-f90 (had a bug there)
linux ia32, icc-8.1
linux opteron, gcc-3.3.5, pgcc, pathccx/pathf90 (tested just
pgi-compiler)
linux em64t, gcc, icc-8.1 (tested just icc)
This commit was SVN r8254.
component/base Makefile.am files, reducing the time configure spends
stamping out Makefiles at the end
* Install base_impl.h file when devel-headers are being installed
This commit was SVN r8200.
options as part of the --with-wrapper-{*flags,libs} options to configure,
we'll eat one of them, which can have unintended issues. For example,
--with-wrapper-ldflags="-Wl,-rpath -Wl,pathA -Wl,-rpath -Wl,pathB"
will result in us removing the second -Wl,-rpath, which will result
in wrapper ldflags of -Wl,-rpath -Wl,pathA -Wl,pathB which doesn't
really do what the user intended. We now always pass the user-
specified flags completely unmodified, bypassing the OMPI_UNIQ
routine
This commit was SVN r8193.
it doesn't support it -- the compiler will automatically convert the
unsupported type to a type that it *does* support. For example, if
you try to use INTEGER*16 and the compiler doesn't support it, it may
well automatically convert it to INTEGER*8 for you (!). So we have to
check the actual size of the type once we determine that the compiler
doesn't error if we try to use it (i.e,. the compiler *might* support
that type). If the size doesn't match the expected size, then the
compiler doesn't really support it.
The F77 configure code actually handled this properly. The F90 code
did not quite do it right. This patch brings the F90 code up to the
same structure as the F77 code, albiet not m4-ized properly. I also
added a comment to config/f77_check.m4 that explains *why* we do this
extra size check (because no explanation was given).
The impetus for this was that xlf* on OS X 10.3 was not recognizing
that INTEGER*16 was not supported, and mpi-f90-interfaces.h was being
assembled incorrectly. This patch fixes this problem.
There is still one more problem, but waiting for some help from Craig
R on that (function pointers in F90 declarations).
This commit was SVN r8107.
the component's LIBS if the library was found in the default search paths.
However, it would also add -Is for default search paths and other nasty things,
so it seemed best to convert it to the OMPI_CHECK_PACKAGE macro so that it
behaved like all the other packages out there.
This commit was SVN r8007.
--enable-mpi-{cxx,f77,f90} so that people aren't confused about what
they are actually disabling.
This should go to the 1.0 branch
This commit was SVN r7851.
really crappy job of trying to emulate the inline assembly mode of GCC (and will
completely rewite the assembly, which seems to be bad in my opinion). GCC and
the AIX assembler don't see eye-to-eye on what GCC emits when doing inline
assembly. That's two compilers and no actual working support. So just punt and
fall back to XLC inline assembly or non-inlined assembly.
This commit was SVN r7800.