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.
linked into libmpi
* add --enable-mca-direct to specify components that should be directly
called (instead of going through component structs and the like). The
components and component frameworks must explicitly support this.
Currently, only the TEG PML does so.
* Updated all the calls to the PML to use a macro so that they can either
be direct called or called through function pointer interfaces (aka
the component infrastructure)
This commit was SVN r5291.
dimensions the f90 MPI bindings should support (they are strongly
typed, and the number of dimensions of choice arguments must be
specified -- it cannot be arbitrary). The default is four.
Note that even though increasing this value has essentially a linear
effect on the code, the multiplier constant is fairly large (only a
small number of functions have 2 choice buffers, so the exponential
factor is relatively small). Increasing this value increases the
amount of time f90 compilers will spend compiling src/mpi/f90/mpi.f90
(some compilers will crash if it is too big).
This commit was SVN r5268.
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.
* 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.
threads (defaults to use MPI threads, disable progress threads). This
allows us to have MPI threaded support, but without progress threads
and all that fun stuff.
This commit was SVN r4443.
the test barfs on AIX, since it has some strange non-mangling of the
labels in the inline assembly that all the other platforms seem to be
ok making right. *sigh*
This commit was SVN r4365.
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.
test for the pthread-library fails, due to pthread_t th
not being initialized.
Fix remaining warnings (hopefully correctly casted).
Spelling buglet in help-output for mpirun
This commit was SVN r4272.
looks like we need to do the same thing for UltaSparc / MIPS machines
* The atomic_cmpset_64 bit code made some assumptions about calling
convention that wouldn't be true if the function was inlined. Fix
those assumptions, so we should work fine whether GCC inlines
the function or not.
This commit was SVN r4249.
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.
from themselves -- but doesn't look valid. For example, it's legal to
have $FC and $F77 to both be ifort (intel fortran compiler).
This commit was SVN r4148.
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.
which was resulting in the pthreads functions never getting linked in.
Which would cause false positives on the threading tests. Make sure
that there is a call chain from main() -> pthread_create(), which should
be enough to make the test happy.
This commit was SVN r3998.
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.
#if OMPI_WANT_MPI2_ONE_SIDED and some automake conditionals. Also had
to add some AC_SUBSTs to eliminate part of mpif.h (otherwise the
"external" statements would have made undefined symbols).
All the MPI-2 one-sided functionality (including the skeleton
top-level MPI API functions that only invoke an MPI exception) can be
re-enabled with --enable-mpi2-one-sided.
This commit was SVN r3802.
the Open MPI tree. This fixes bug 1015.
- Eliminate some confusion/inconsistencies through the tree; we only
use MCA_<type>_<name>_VERSION now, not ..._FULL_VERSION
- coll demo component is ready
- ROMIO io component had a VERSION file but wasn't using it, so now
it's using it properly
- Updated autogen.sh and mca_make_configure.pl to generate version
header templates upon demand
This commit was SVN r3267.
If set to 1, the relevant .m4 files will be copied to the component
directory, allowing "make dist" to fully bundle up everything needed
to build the component (thereby allowing the distribution tarball to
be built outside the Open MPI tree).
This commit was SVN r3258.
have some nasty side effect we don't know about, make it a configure
option for now. Also add a harmless signal handler to the pcm open
(since pcm_open will have a signal handler eventually for SIGCHLD, I
think). Use --enable-event-signals / --disable-event-signals to
control behavior.
This commit was SVN r2748.
to the docs in src/utl/output.h from the last commit, might as well do
this one. No real rush to update to this, but you'll need to
re-autogen.sh, etc.
Fixes an old, small bug that caused the static-components.h files to
always be regenerated, even if they didn't change. This caused
several files to be unnecessarily recompiled if you ran the following:
./configure
make
./configure
make
Granted, this is a small error, but a) we have it Right in other
places, b) AC does the Right things for AC_CONFIG_HEADER, so we should
do the Right things too.
This commit was SVN r2638.
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.
mojo in common/*/Makefile.am files. Also don't traverse into
src/mca/common and don't snarf the common convenience library if we're
not building staticly (remember: there is no "base" in common).
This commit was SVN r2323.
* 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.
because "svnversion" may emit a version number with ":" in it (duh!).
This fixes the problem where, depending on the status of your svn
checkout, you could get a string in a MAJOR version number instead of
an integer (i.e., "1234M" instead of "10"). This was caused by
extraneous ":" in the output, causing autogen.sh to grab the wrong
field.
This commit was SVN r1991.
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.
from the "LAM/MPI" -> "Open MPI" name change that didn't convert
properly. So this commit fixes all instances of "OMPI/MPI" to "Open
MPI".
This commit was SVN r1924.
* 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.
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.
--disable-mca-dso to build MCA components statically as part of
libmpi, or --enable-mca-dso=LIST to only build some components as DSOs
(see ./configure --help for more details).
This commit was SVN r1521.
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.
"{version}svn" instead of assigning a potentially meaningless SVN r
number (because the developer's copy may not be entirely consistent
with that r number)
This commit was SVN r993.
new config.guess/config.sub files (!), but a) the code is smart enough
to know this, and b) when they become available again, the Right
Things will happen.
Also, I left the example code in there how to add man pages to the
relevant Makefile's on the thought that we'll need it when we
eventually get around to making man pages (assumedly through
doxygen).
This commit was SVN r985.
- 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.
MPI_PARAM_CHECK, intended to be used as
if (MPI_PARAM_CHECK) {
/* ...do MPI param checks in here... */
}
MPI_PARAM_CHECK will be 0, 1, or lam_mpi_param_check.
This commit was SVN r785.
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.
- Add --enable-mem-debug to enable/disable aux functions for malloc/free
(i.e., ditch LAM_MALLOC/LAM_FREE and simply #define malloc and free to be
lam_malloc/lam_free)
This commit was SVN r671.
- always build src/libmpi.la (may contain all of liblam)
- sometimes build src/liblam.la
- ensure libwhatever is build before traversing src/tools
This commit was SVN r487.
to relative libraries -- need these to be variables because configure may
decide to compile them both as libmpi (and therefore there is no libmpi).
Correct usage is to use *ONE* of these two macros when adding it to LIBADD
lines in Makefile.am's -- if you use $(LIBMPI_LA), it will automatically
include liblam if it needs it.
This commit was SVN r400.
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 r136.