* If we are on solaris, don't use the system qsort(), as it appears to be
broken in 64 bit mode on Solaris 8 (there are bugs about this in
SunSolve). Instead, use ompi_qsort(), which is taken from FreeBSD.
A #define in ompi_config_bottom.h makes this invisible to most of the
OMPI source tree.
* Fix memory badness in ompi_progress_register where we were reallocing the
array to be number of elements long instead of number of elements *
sizeof(element). Found while using bcheck to track down our problems in
64 bit on big endian machines.
* The debugging output code in session_dir.c could pass NULL as a value for a %s,
which will turn into "(null)" automagically on glibc, but causes segfaults for
older libcs (like those on Solaris). Check for this case in session_dir.c and
don't pass NULL as a %s value into ompi_output().
* Fix missing header file in convertor.c
This commit was SVN r6186.
I'm contributing patches for configure.ac and f90_check_type.m4.
The problem was that f90_check_type returned an exit code
and not all compilers actually do this. The fix tries to compile the
type and fails if it can't. The problem is that some compilers will
happily return a default kind if the particular kind is not supported.
So the real test is whether the size of the datatype is as expected.
This commit was SVN r6101.
- Fully support REAL*N, INTEGER*N, and COMPLEX*N in the MPI_Op
reduction operations.
- Update ddt to fully support these types as well, to include using
the results of sizes and alignments determined by configure
- Discover the goodness of m4 and consolidate a LOT of configure code
(i.e., remove a lot of essentially duplicated code and
m4-subroutine-ize it). The big kicker was figuring out how to
parameterize AC_DEFINE_UNQUOTED, which you can do if you use m4
properly.
- If we don't support a given INTEGER*N, REAL*N, or COMPLEX*N, don't
error. Just set the right flags so that we don't support them in
the MPI layer.
This commit was SVN r5788.
1. Added a new function to launch head node processes on remote nodes.
2. Added new tool "orteprobe" that checks to see if a daemon is running on a node. If so, it reports the contact info back to the requestor. If not, it will (eventually - but not now) fork/exec a daemon on the node, report the contact info back to requestor, and then die.
3. Modified orted to handle universe name parameters, and added separate command line flags for debugging the daemon and saving daemon debugging output in a file. The "debug" flag now turns on the runtime debug info instead of the daemon debug - thus, you can now just get daemon debug info if you like.
4. Fix the dps to handle zero length strings correctly.
5. Modify the fork and rsh launchers to pass required environmental variables to the daemons and processes
6. Pulled the redirection of stdin/stdout/stderr for the daemon out of orted and put it into the daemon_init function to simplify orted logic.
7. Modified sys_info to correctly deal with passed mca param
8. Modified univ_info to parse incoming universe location information.
This commit was SVN r5705.
- Check for icc-8.1 segfaulting with varargs.
- Add check for size of REAL*4,8,16 types and purge,
if smaller
- Fix configure-output with regard to checking for c-types
for the REAL*-types.
This commit was SVN r5661.
for the size. If it does not fit, purge from the list, i.e. reset all
values to zero.
Fixes pgf90 problem, which silently accepts INTEGER*16, but internally
using INTEGER...
This commit was SVN r5594.
Merged in from:
svn merge -r5506:5553 https://svn.open-mpi.org/svn/ompi/tmp/hetero .
This commit was SVN r5552.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r5506
r5553
Merged in from:
svn merge -r5448:5496 https://svn.open-mpi.org/svn/ompi/tmp/hetero .
This commit was SVN r5550.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r5448
r5496
from:
svn merge -r5440:5448 https://svn.open-mpi.org/svn/ompi/tmp/hetero .
This commit was SVN r5549.
The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
r5440
r5448
MPI_COMPLEX*x, and some optional C datatypes in MPI reduction
operations. These types are not technically supported by the letter
of the MPI standard, but are implied by the spirit of it (and there
are definitely users that use them in real applications)
- Add checks in configure for back-end C types for MPI_INTEGER*x and
MPI_REAL*x
- Create C data structs for MPI_COMPLEX*x
- Fixed typo for MPI_INTEGER8 in mpi.h
- Updated configure macros to create MPI_FORTRAN_INTEGER* defines, as
opposed to MPI_FORTRAN_INT, which was causing [me] lots of confusion
(between C "*_INT" names and Fortran "*_INT" names). This caused
some trivial updates in ddt, ompi_info, and the MPI layer to match.
- Update ompi_info to show whether we have each MPI_INTEGER*x,
MPI_REAL*x, and MPI_COMPLEX*x
- Extended reduction operations for optional datatypes:
- "C integer" now includes long long int, long long, and unsigned
long long
- "Fortran integer" now includes MPI_INTEGER*x
- "Floating point" now includes MPI_REAL*x
- "Complex" now includes MPI_COMPLEX*x
This commit was SVN r5511.
we are part of the source tree and not defined otherwise, we are going
with an always defined if ompi_config.h is included policy. If
ompi_config.h is included before mpi.h or before OMPI_BUILDING is set,
it will set OMPI_BUILDING to 1 and enable all the internal code that
is in ompi_config_bottom.h. Otherwise, it will only include the
system configuration data (enough for defining the C and C++ interfaces
to MPI, but not perturbing the user environment).
This should fix the problems with bool and the like that the Eclipse
folks were seeing. It also cleans up some build system hacks that
we had along the way.
Also, don't use int64_t as the default size of MPI_Offset, because it
requires us including stdint.h in mpi.h, which is something we really
shouldn't be doing.
And finally, fix a ROMIO Makefile that didn't set -DOMPI_BUILDING=1,
as ROMIO includes mpi.h, but not ompi_config.h
This commit was SVN r5430.
having it in config/ompi_setup_cxx.m4
2. Adding --enable-coverage option. This will add teh flags -ftest-coverage
and -fprofile-arcs to the flags. Also, one needs to compile with
debug and static only to enable code coverage
3. Adding the coverage flag options to WRAPPER_*_FLAGS so that mpicc and co.,
will add these to teh executables when they are compiled
This commit was SVN r5416.
Monday with Craig:
- split two f90 modules into two separate .f90 files so that
dependencies can be satisfied properly in parallel builds (i.e.,
mpi_kinds.f90 can be compiled and its f90 module can be generated
before any others are compiled, because it is needed by all of the
other f90 source files).
- rename mpi.i.h* to be mpi-f90-interfaces.h, just to be a little more
clear and less name-confusing with mpi.h and mpif.h
- update the build process in src/mpi/f90, including printing out a
warning that compiling mpi.f90 may take quite a while :-\
- update the wrapper compilers to add in the Right Things for
compiling F90 MPI applications
- add a check in configure to find what flag the F90 compiler uses to
identify where f90 module files live
This commit was SVN r5297.
- remove all tabs from source code (replace with spaces)
- use size of size_t and int to determine some equivalent ORTE types
in a header file so that it's always done consistently (at compile
time)
- be consistent about using size_t for number of elements that are
packed
- don't assume that size_t is uint32_t (it is uint64_t on some
platforms)
- simplify some logic
- implement packing/unpacking for INT64 and UINT64 (so that we can do
size_t on platforms where it's 64 bits)
This commit was SVN r5172.
- the dirent.dt_type field is non-portable. Use stat() if there isn't
a dt_type field in the dirent struct
- Make sure -laio is added to LIBS in the romio component configure
script so that static builds don't result in missing symbols
- Add missing header file for the signal constants in pls_fork_module
This commit was SVN r5152.
more obvious (and documented)
- VERSION now has lots of comments in it
- separate out whether we want the SVN r number in the version and
what the SVN r number is
- clearly describe the process for building the full version number
string
- make ompi info have a separate line item specifically for the SVN r
number, regardless of what the version number is
- update "make dist" process to substitute in the SVN r version
This commit was SVN r5022.
build / run. Only things that actually build / run right now are the
asm and class tests. The mca tests probably will with a static build
but that hasn't been verified
This commit was SVN r4979.
* SPARC Assembly fixes:
- Use SPARC assembly type only when not able to use the SPARC v9
instruction set (instead of previous whenever sizeof(void*) == 4
- Use SPARCV9_32 (aka sparc v8plus) and SPARCV9_64 (aka sparc v9) when
possible. Already were doing so for the 64bit, but on 32bit we
were falling back to SPARC.
- Implemented SPARCV9_32 atomic operations
- Emit warning if user is going to get SPARC atomic, as that probably
isn't what the user wants for best performance.
* Started shell of MIPS assembly. Does not work, but wanted something
so that everyone would only have to re-autogen once today....
This commit was SVN r4465.
- Use fcntl.h, not sys/fcntl.h (man pages on every platform I could find
say fcntl.h and solaris/AIX don't provide sys/fcntl.h)
- Make timeradd macro available on platforms where sys/time.h exists but
timeradd macro doesn't (Solaris)
- Include util/printf.h from ompi_config_bottom.h so that ompi_asprintf
and friends are always available.
This commit was SVN r4441.
* Make sure the update.sh scripts all use OMPI_WANT_SMP_LOCKS
* Add sparc (32bit) assembly
- Memory barriers
- spinlocks
- emulate add/sub using the spinlock table with hashed lookups, as
suggested by the linux kernel folk (better than the other option,
requiring the counters only use 24 bits)
This commit was SVN r4429.
script in components and distributes them as appropriate throughout
the tree (previously, we only did WRAPPERS_* flags). These flags are
*only* used when libmpi is being build statically (--disable-shared
--enable-static).
I also added another classification of flags -- LIBMPI_ALWAYS_* and
WRAPPERS_ALWAYS_* for flags that should always be added to the libmpi
/ wrapper linker lines, not just when compiling libmpi statically.
This commit was SVN r4322.
- Fix up the checks for selected_[int|real]_kind so that we only check
for their sizes/alignment if the compiler actually supports them
This commit was SVN r4279.
during testing. In particular, we can't have a cmpset macro that can
deal with pointers without some really evil voodoo. So have a
different macro for pointers
* Add more detailed testing of the atomics using AM's test framework.
More to come...
This commit was SVN r4191.
of assembler format
* Fix minor bugs in AMD64, PPC, and IA32 assembly for atomic operations
* Clean up the #defines to look for when examining level of atomic operation
support
This commit was SVN r4183.
after MPI-startup.
For this a new mpirun-parameter "mpi_signal" is added, one may specify a
comma-separated list of signals to grab, e.g. mpirun --mca mpi_signal 8,11
will check for SIGFPE and SIGSEGV.
It only finds the first fault (SA_ONESHOT), as after the return the same
fault will occur again.
As printout, the data provided by siginfo_t is printed to STDOUT (yes,
it calls printf ,-]).
Additionally, with glibc, it uses backtrace and backtrace_symbols to
print the calling stack up to the function in which the signal was raised:
(Rank:0) Going to write to RD_ONLY mmaped shared mem
Signal:11 info.si_errno:0(Success) si_code:2(SEGV_ACCERR)
Failing at addr:0x4020c000
[0] func:/home/rusraink/ompi-gcc/lib/libmpi.so.0 [0x40121afe]
[1] func:./t0 [0x42029180]
[2] func:./t0(__libc_start_main+0x95) [0x42017589]
[3] func:./t0(__libc_start_main+0x49) [0x8048691]
This commit was SVN r4170.
Note: in bringing this across, I have obeyed the mca-prefix-rule in defining functions and variables. However, I left the name of the component call as "orte_errmgr.xxx" so that any use of the code will directly "merge" with the new RTE branch without changes.
This commit was SVN r4099.
the src/mca/soh/base/*.c files out of the default build because
they're uncompilable right now -- don't want to step on any of Ralph's
local changes.
This commit was SVN r3837.
MPI_Offset
- Make the ROMIO IO component use MPI_Offset for the back-end type for
ADIO_Offset
- Removed some extra verbage from configure warnings
- Add some logic to configure to deduce an MPI datatype that
corresponds to MPI_Offset (because ROMIO needs it). This is a bit
of an abuse (i.e., ROMIO's configure should figure this out), but
it's not too gratuitous because a) the ROMIO component is included
in Open MPI, and b) other io components to be defined in the future
could also use this information
- Rename MCA: MPI Component Architecture -> Modular Component
Architecture
This commit was SVN r3742.
that the C compiler may support bool with no help from <stdbool.h>.
So add another configure test and adjust ompi_config_bottom.h as
appropriate. Since the #if logic in ompi_config_bottom.h got a little
complicated w.r.t. bool, I indented to make the conditionals clear.
This commit was SVN r3291.
that's good. Go ahead -- commit that." But then as soon as you read
the diff on the mailing list, you realize how borked it was. [sigh]
- add MPI_INTEGER16 at George's request
- don't forget to commit acinclude.m4
- correctly name the REAL checks (accidentally had 2 sets of INTEGER
checks)
This commit was SVN r2936.
only be used if the RTE init functions have been called. Not quite as
flexible as the real waitpid() function (no -1 support), but all I need
for the SSH / BProc / RMS pcms. This code is not yet turned on by
default (need to add the init / finalize calls to ompi_rte_init?? and
ompi_rte_finalize()
This commit was SVN r2860.
Ensure that OMPI_F77_* are always defined, even if a) a f77 compiler
is not found, or b) the user disables the f77 MPI bindings.
This commit was SVN r2618.
that was generated by it (i.e., if you're in a developer checkout or
if you're in a distribution tarball). If you don't have the .c file
and lex/flex, error.
This commit was SVN r2312.
- added shell detection code
- start of bootproxy start code
- infrastructure to make search life better.
NOTE NOTE NOTE: You will have to autogen and all that because I had to add
some header file checks to the configure script. Sorry!
This commit was SVN r2239.
In order to get consistent behaviour on linux with various gcc versions,
I am defining _GNU_SOURCE in ompi_config.h and changing the definition
of asprintf, etc.
Problems:
1) autoconf was defining _GNU_SOURCE for its tests, but we were not
setting it
2) g++ sets it by default (I think)
3) some version of gcc set it by default
If somebody knows a consistent solution for these problems then we can
revert to not setting it.
This commit was SVN r2230.
* add env pcmclient, which builds client data out of environment variables
* improved rsh infrastructure a little bit - almost able to get to calling
fork()
* Removed instance information for llm - it should be burried in the pcm,
not exposed
*** YOU MUST RUN AUTOGEN / CONFIGURE / etc AFTER UPDATING ***
This commit was SVN r2191.
or rsh/ssh stdin/stdout, even includes a test case
* add base function for use when PCMs can't provide uniqueness strings, so
that we all have the same value
This commit was SVN r2082.
abstraction a little clearer.
* Include mpiruntime.h instead of runtime.h in errhandler.h since only the
MPI stuff was needed - speeds compile times greatly when working on the
RTE...
This commit was SVN r1948.
horizontal integration
- Move the mpool_sm_mmap.[ch] files to a new sm common code area, and
rename to common_sm_mmap.[ch]
- update sm ptl and mpool to refer to the sm common code area for the
mmap code
This commit was SVN r1930.
* Add hostfile component for the LLM (reads hostfiles, returns array of
node identifiers
NOTES:
- This will require the full autogen / configure / make.
- You now need flex to build Open MPI from Subversion. The versions
available on most Linux boxen and OS X is more than new enough. You
do *not* need flex to build from a nightly or release tarball.
This commit was SVN r1890.
(e.g., Portland compilers don't have/know about <stdbool.h>, but
AC_CHECK_HEADERS will typically find the GNU/gcc <stdbool.h>).
Reviewed by Brian.
This commit was SVN r1889.
-in some cases failed to call complete function when the message
was sent.
-was freeing the wrong iovec in the base recv function
-added a first cut of a oob test
This commit was SVN r1849.
code base.
- many (most) mca type names have "component" or "module" in them,
as relevant, just to further distinguish the difference between
component data/actions and module data/actions. All developers
are encouraged to perpetuate this convention when you create
types that are specific to a framework, component, or module
- did very little to entire framework (just the basics to make it
compile) because it's just about to be almost entirely replaced
- ditto for io / romio
- did not work on elan or ib components; have to commit and then
convert those on a different machine with the right libraries and
headers
- renamed a bunch of *_module.c files to *_component.c and *module*c
to *component*c (a few still remain, e.g., ptl/ib, ptl/elan, etc.)
- modified autogen/configure/build process to match new filenames
(e.g., output static-components.h instead of static-modules.h)
- removed DOS-style cr/lf stuff in ns/ns.h
- added newline to end of file src/util/numtostr.h
- removed some redundant error checking in the top-level topo
functions
- added a few {} here and there where people "forgot" to put them in
for 1 line blocks ;-)
- removed a bunch of MPI_* types from mca header files (replaced with
corresponding ompi_* types)
- all the ptl components had version numbers in their structs; removed
- converted a few more elements in the MCA base to use the OBJ
interface -- removed some old manual reference counting kruft
This commit was SVN r1830.
- Updated autogen.sh and friends to be more flexible and allow
components to be configured and built outside of the Open MPI tree
- Removed $(LIBOMPI_LA) from all component Makefile.am's -- it's
unnecessary
This commit was SVN r1566.
real commit of the collectives. MPI_SCAN and MPI_EXSCAN are still not
implemented, but lots of other things are in the critical path and
holding up other people, so it's ok to commit without them:
- better checks for sizes in configure, and add defaults for fortran
sizes if we don't have a fortran compiler
- fix some logic that was accidentally broken for size checks for the
file type offset_t
- add some C equivalent types for fortran's complex and double complex
(for use in internal reduction/op functions)
- additionals and slight reorganization of ompi_mpi_init()
ompi_mpi_finalize()
- fully implement all top-level MPI collective calls, including all
param checking for both intra- and inter-communicators (woof)
- change the communicator_t type for stuff that we need in coll, and
update all references throughout the code base to match
- all kinds of updates to the coll framework base
- next cut of the basic coll module -- has all intracommunicator
collectives implemented except scan and exscan (see note above).
All intercommunicator functions return ERR_NOT_IMPLEMENTED.
- MPI_Op is a fixed implementation -- not component-ized yet. So
there are generic C loops for all implementations.
This commit was SVN r1491.
- moved mem/free_list.h to class/ompi_free_list.h
- moved mem/malloc.h to util/malloc.h
- added src/mca/mpool component type
This commit was SVN r1274.
flags to LAM_WANT_F77_BINDINGS and LAM_WANT_F90_BINDINGS. Also
changed the compiler flag for the Fortran 90/95/whatever compiler to
FCFLAGS to match what AC was already doing.
This commit was SVN r996.
- Add THREAD_*FLAGS to all the relevant places
- Propagate THREAD_*FLAGS to the wrappers
- Add src/mpi/win/Makefile to AC_OUTPUT
This commit was SVN r868.
speed of autogen.sh and configure: find modules that don't need to have
a separate configure script during autogen.sh and set them up to be
part of LAM's build process. This means that we don't have to run the GNU
tools nearly as much during autogen.sh and that we don't have to run
nearly as many sub-configure scripts during configure.
This works fine for statically-built MCA modules, but doesn't seem to work
properly yet for dynamically-built modules. More coming soon, but I wanted
to get this in for others to use.
This commit was SVN r756.
and WANT_PMPI_BINDINGS_LAYER. These determine whether src/mpi/interface/c and
src/mpi/interface/c/profile are built. Makefile.am's were changed to reflect
the same change. Now the top layer always builds MPI bindings and the lower
layer always builds PMPI bindings
: ----------------------------------------------------------------------
This commit was SVN r393.
get a good enough environment to have the COFS stuff run. Still far from
perfect, but allows me to start testing the PCM code
This commit was SVN r367.
directly
* Update pcm, oob, and registry mca module headers to match changes Jeff
and I talked about tonight to do checkpoint/restart and all that
This commit was SVN r197.
Rather trying to reinvent this very complex macro, take the easy way
out: Create a real lam_stdint.h which includes stdint.h, inttypes.h or
sys/types.h when possible, and otherwise uses SIZEOF_ macros generated
by configure to fill in the undefined types. A little more work for
cpp if stdint.h is not present.
This commit was SVN r135.