The warning was indicative of overly-complex code anyway. So I
removed the "first" bool and simply use a sentinel value in seq_min to
indicate that nothing has changed. Note that this is "correct enough"
for the moment -- more fixes will come in this area with tickets #1049
and/or #1051.
This commit was SVN r15013.
single threaded builds. In its default configuration, all this does
is ensure that there's at least a good chance of threads building
based on non-threaded development (since the variable names will be
checked). There is also code to make sure that a "mutex" is never
"double locked" when using the conditional macro mutex operations.
This is off by default because there are a number of places in both
ORTE and OMPI where this alarm spews mega bytes of errors on a
simple test. So we have some work to do on our path towards
thread support.
Also removed the macro versions of the non-conditional thread locks,
as the only places they were used, the author of the code intended
to use the conditional thread locks. So now you have upper-case
macros for conditional thread locks and lowercase functions for
non-conditional locks. Simple, right? :).
This commit was SVN r15011.
1. generalize orte_rml.xcast to become a general broadcast-like messaging system. Messages can now be sent to any tag on the daemons or processes. Note that any message sent via xcast will be delivered to ALL processes in the specified job - you don't get to pick and choose. At a later date, we will introduce an augmented capability that will use the daemons as relays, but will allow you to send to a specified array of process names.
2. extended orte_rml.xcast so it supports more scalable message routing methodologies. At the moment, we support three: (a) direct, which sends the message directly to all recipients; (b) linear, which sends the message to the local daemon on each node, which then relays it to its own local procs; and (b) binomial, which sends the message via a binomial algo across all the daemons, each of which then relays to its own local procs. The crossover points between the algos are adjustable via MCA param, or you can simply demand that a specific algo be used.
3. orteds no longer exhibit two types of behavior: bootproxy or VM. Orteds now always behave like they are part of a virtual machine - they simply launch a job if mpirun tells them to do so. This is another step towards creating an "orteboot" functionality, but also provided a clean system for supporting message relaying.
Note one major impact of this commit: multiple daemons on a node cannot be supported any longer! Only a single daemon/node is now allowed.
This commit is known to break support for the following environments: POE, Xgrid, Xcpu, Windows. It has been tested on rsh, SLURM, and Bproc. Modifications for TM support have been made but could not be verified due to machine problems at LANL. Modifications for SGE have been made but could not be verified. The developers for the non-verified environments will be separately notified along with suggestions on how to fix the problems.
This commit was SVN r15007.
structures in the system. Instead of using memcmp, use the ns function.
This won't cause a problem as long as all three elements of the name are
ints, but if they have different sizes, alignment and padding rules
can cause memcmp() to compare padding space, which rarely holds a sane
value.
This commit was SVN r14998.
framework. Updated pointers to match current definitions.
* Trimmed some dead wood while I was at it:
* No need for component close function that does nothing
* Use BEGIN/END_C_DECLS
* Use recent MCA param register function
* Ditch MCA param orte_iof_debug (it wasn't used anywhere)
* Use MCA param orte_iof_override properly in the code (i.e., look
up the value once and use the cached value later)
This commit was SVN r14981.
generalized component include/exclude infrastructure. This commit
removes the oob_base_include and oob_base_exclude MCA params because
they have long-since been handled by the "oob" MCA parameter in the
MCA base.
This commit was SVN r14979.
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
A bunch of fixes from the /tmp/iof-fixes branch that fix up ''some''
(but not ''all'') of the problems that we have seen with iof:
* Reading very large files via stdin redirected to orteun (Sun saw
this)
* Reading a little bit of a large file redirected to orterun's stdin
and then either closing stdin or exiting the process
The Big Change was to make the proxy iof (the one running in non-HNP
orteds) send back a "I'm closing the stream" ACK back to the service
iof. This tells the HNP that there will be nothing more coming from
that peer, and therefore the iof forward should be removed.
Many other minor cleanups/fixes, terminology changes, and
documentation additions are included in this commit as well. However,
there are still some pretty big outstanding issues with IOF that are
not addressed either by #967 or this commit. A few examples:
* IOF was designed to allow multiple subscribers to a single stream.
We're not entirely sure that this works (for one thing, there is
nothing in the ORTE/OMPI code base that uses this functionality).
* There are also resources leaked when processes/jobs exit (per
Ralph's first comment on this ticket).
* There is no feedback to close orterun's stdin when all subscribers
to the corresponding stream have closed stdin.
This commit was SVN r14967.
The following Trac tickets were found above:
Ticket 967 --> https://svn.open-mpi.org/trac/ompi/ticket/967