- moved hton64 and ntoh64 from the bunch of places it had been copied
into one header file
- properly set and use the btl_tcp's nbo option to put things in
network byte order on the wire if both sides don't have the same
endianness
- Put the OB1 PML's headers (with a couple exceptions I need to discuss
with Tim) in network byte order on the wire if both sides don't have
the same endianness
- since it was needed for the TCP BTL, move the orte_process_name_t
HTON and NTOH macros from the TCP OOB to ns_types.h
This commit was SVN r9145.
working on creating a uniform retransmission mechanism otherwise each type of
send ends up needing a special case for retransmission.
Removed NACK for individual transmissions, we just aggregate these and send
them at the end of a vfrag
This commit was SVN r9141.
you can't be in a post and a start at the same time, and that is clearly
legal to do
* Fix interptretation of when the epochs start for MPI_Fence. Only start
an epoch if communication actually occurs, otherwise it isn't actually
an epoch. I don't know who thought that wording in the MPI standard
was a good idea, but can't change it now...
This commit was SVN r9139.
MPI-2:6.3.4 says about reduction operations
* Have the point-to-point one-sided component spew a warning and return
an error if a non-predefined datatype is used with an MPI_OP other
than MPI_REPLACE. Yes, this violates the MPI standard, but it's the
best we can do until George and I implement support for figuring out
where all the locations to update are..
This commit was SVN r9134.
for a Get request and the reply came in before the local completion
callback was fired from the btl.
* Silence some more debugging output for the moment
This commit was SVN r9130.
when running an MPI job spanning a node that has two TCP NICs and a
node that has one TCP NIC. Previously, for the 2 NIC/module process,
we would return the first peer IP address if we couldn't find a subnet
match with any of the peer's published IP addresses -- this was to
support running OMPI across subnet boundaries. Changed the behavior
to only do that behavior if the IP address we're trying to match is
public (i.e., not 10.x.y.z, 192.168.x.y, or 172.16.x.y) *and* any of
the remote peer's addresses are public (working on the assumption that
if we both have public addresses, they're routable to each other).
This definitely will not work in all scenarios, such as when we go to
WAN kinds of executions, and will need to be revisited at that time.
This commit was SVN r9119.
* fix a silly bug where we weren't adding a long accumulate message to
the pending long messages list, so we hung if a long accumulate
occurred. Still having some memory issues on one of the tests I'm
running - need to move over to Linux and Valgrind after some sleep.
This commit was SVN r9108.
what is going on
* Fix a dumb error where if a lock was released and another was pending, I
would send a lock *request* to the queued process, rather than giving
him the lock and sending him a lock *ack*. Turns out requests and
acks are different things :)
This commit was SVN r9103.
Note, the checksums are not enabled currently, setting to zero as the
convertor is not ready for checksums yet.
Also, we can't call unpack/pack on convertor with 0 bytes, otherwise it
crashes.
This commit was SVN r9062.
counterparts, the reset to MPI_REQUEST_NULL of the upper
struct ompi_request_t was broken. Nightly mpi_test_suite
failed, e.g.
mpirun -np 2 ./mpi_test_suite -t "Ring Isend"
This commit was SVN r9028.
The following SVN revision numbers were found above:
r8945 --> open-mpi/ompi@83f83e5730
progress function in the mca_pml to the BML progress one, avoid having a cascade of
call to the progress function and speed up a little bit the execution.
This commit was SVN r9007.
run-time support, as it appears to be doing bad things to memory. Update
the hack to get the local nid to match the recent TCP nal changes, and
update the P3RT api useage
This commit was SVN r9005.
as needed for the modified source tree layout. Since we don't include
anything but mpi.h in the ROMIO build, we don't need most of the flags
anyway...
This commit was SVN r8995.
- 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.
- Start filling in the progress function, focusing on connection establishment.
- Initialize udapl mpool and free lists
- Create/destroy a protection zone with each IA
- Misc organization as I learn how things work
This commit was SVN r8969.
Correct the problem introduced by the commit 8933 (thanks Tim). In order to avoid to much
trafic on the bus we do not compute the bytes_delivered (require an atomic size_t add)
we have to set it in the begining or otherwise we will report the wrong count in the
MPI status.
This commit was SVN r8968.
1. remove all useless macros from the proc header file
2. merge 2 of the match macros (they share the same logic except one list)
This commit was SVN r8946.
of request we are playing with (send or receive). Therefore, it's useless to have another
switch inside this macro and make the code bigger. Now, we have 2 versions
MCA_PML_OB1_SEND_REQUEST_FREE and MCA_PML_OB1_RECV_REQUEST_FREE.
This commit was SVN r8945.
and add a new macro that can be used for both sends and receives.
Move to atomic operations to manage the length of the sended or received
status. There is one instance where the atomic operation is not required
as the code can cannot be executed in same time by 2 differents threads.
This commit was SVN r8933.
* Implement win_lock and win_unlock in the pt2pt component. Not well
tested, but appears to move bits if properly motivated...
This commit was SVN r8922.
* rework the thread locking so that it at least makes sense to me. Still
need to do a bunch of testing before I'm happy with it, but it's a tad
bit closer...
This commit was SVN r8918.
second instance of the ompi_proc from the send and receive request. This
information is already available on the base request, so there is no
need for duplication. The drawback is that now (in order to avoid a
second lookup in the communicator array of procs) we have to set the base
proc in the PML's _ALLOC macro.
This commit was SVN r8900.
be locally completing. for now using synchronous calls until the new functionality is available. then will change
the code to use the new PML send flags.
This commit was SVN r8867.
* Implement fortran handle -> c handle tracking
* Remove some unneeded locking around free lists (the free list
macros do their own locking)
* Try to be a bit more memory friendly with the w_mode setting /
checking
This commit was SVN r8865.
a subset of win's group, so this should never happen. But users have
been known to screw up before, so return a reasonable error.
This commit was SVN r8855.
some point, I realized having a variable name "new" might cause some
problems for those people using a C++ compiler to compile C code ;).
This commit was SVN r8846.
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.
It's still not very clean as we still lock the mvapi_btl mutex inside a critical section
protected by the endpoint mutex ...
This commit was SVN r8810.
- Remove printing of CFLAGS in configure.m4
- Set MCA_BTL_FLAGS_SEND flag
- Improved error handling during module initialization
- Extract the address of each interface with dat_ia_query
- Start playing around with fragment stuff - probably wrong
- Misc code cleanup (removal of GM-specific code)
This commit was SVN r8801.
if-clause, getting rid of local schedule variable.
This commit was SVN r8778.
The following SVN revision numbers were found above:
r8771 --> open-mpi/ompi@2fadddebc8
the descriptors to vanish. The PML was thinking that they are in the btl_cache when they
weren't ... It lead to memory consumption on most environments when compiled with
thread enabled. After modification the latency went down by nearly 0.5 microseconds.
Simple way to trigger the bug: limit the number of maximum items in the free list and run
any communication intensive application (like Netpipe).
This commit was SVN r8741.
- Move mca_btl_udapl_error/mca_btl_module_init to mca_btl_udapl.c and rename it
- White space cleanups
- Free the uDAPL evd and ia handles in mca_btl_udapl_finalize
This commit was SVN r8705.
- 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.
this was implemented using a chain (tree followed with pipeline) by setting the chain fanout to a factor of size etc but the chain datastructure was fixed in length and if exceeded the topo create returned a null which isn't helpfull in cid next function of comdup...
Anyway two fixes, first we do have a real linear function so changed the decision function and second altered the
topo chain create to force chain fanouts of less than 1 to 1 and fanouts bigger than max to max.
next check in will change chain to dynamically allocd array (reallocable) but we shouldn't ever use a chain fanout for a linear tree anyway.
(lession must rerun all tests for all data sizes when changing decision functions)
This commit was SVN r8662.
As the common part is the one that create the shred memory file it seems
logical to make it destroy the file as well. Therefore, the code for
unmapping the file is in a common place.
This commit was SVN r8622.
On some systems (like windows) qsort can modify the order of modules when the
comparaison function return 0. As we expect to have the
mca_btl_sm_add_procs_same_base_addr called before mca_btl_sm_add_procs we have
force the qsort to return the SM modules in the correct order. Giving to the
same_addr module a slightly higher priority solve this problem.
This commit was SVN r8620.
(apparently we've been doing this in opal and orte, but not in ompi
yet). All public symbols begin with "ompi_coll_tuned_" (not
mca_coll_tuned_) except the component struct. Now this component
passes the illegal symbol report with no hits.
This commit was SVN r8589.
testing. Note that this effectively replaces the "basic" component as
the baseline collective component. Please report any problems with
this component.
If you run into problems with this component, you can disable it with:
--mca coll_tuned_priority 0
This commit was SVN r8575.
- Copied the template BTL and renamed everything
- Compiles and shows up correctly in ompi_info, not tested past that
- Should be ignored for everyone but me
This commit was SVN r8544.
deallocation came from the allocator (malloc, fee, etc) or somewhere
else (the user calling mmap/munmap, etc). Going to be used by Galen
to determine if it is worth searching the allocations tree
Set flag if it is possible to intercept mmap (not always possible
due to a circular dependency between mmap, dlsym, and calloc)
This commit was SVN r8521.
Get the diff down as close as possible, so only whitespace and a few
rearrangements of code (in mca_pml_teg_add_procs, uniq is nicer to
read), so awked diff of both is minimal.
This commit was SVN r8489.
- remove windows socket initialization (it's already in the TCP component)
- protect all used header files
- remove the unused ones.
This commit was SVN r8434.
empty for non threaded builds, but somehow just by moving the code a
little bit around and removing 2 call to lock/unlock the latency for TCP
went down by 2 micro-seconds ...
This commit was SVN r8426.
number of recv system call by caching the data. Each endpoint has a buffer
(the size is an MCA parameter) that can be use as a cache. Before each receive
operation this buffer is added at the end of the iovec list. All data that are
not expected by the fragment will go in this cache. If the cache contain data
all subsequent receive will just memcpy the data into the BTL buffers.
The only drawback is that we will spin around the receive_handle until all the
cached data is readed by the PML layer. This limitation come from the fact that
the event library is unable to call us if there is no events on the socket.
Therefore we are unable to keep the data in the cache until the next loop
into the progress engine.
This commit was SVN r8398.
the script did not complete successfully
- ROMIO likes to default to using the system compiler if no compiler is
specified. This can lead to using a different compiler for ROMIO as
for Open MPI, which is not always a good thing. Reset the default to
behave the same way Open MPI does.
This commit was SVN r8380.
- when processing out of order list - reset match to null on each iteration
- check matched request type and if probe - complete probe and queue fragment
on unexpected list
This commit was SVN r8339.
functionality. This is a global registration, so all components have to be made
aware of the registration -- therefore, do things at the component level, not the
module level.
This commit was SVN r8314.
increase the previous connection code was broken. It can take as much as 60 seconds to connect
64 processes. Now we do not create the connections when we add the procs but only when we send
them the first message. Now it take only 1.6 seconds to setup a 64 procs MPI job over MX (doing a 2 steps barrier in order to insure that we create all the connections).
This commit was SVN r8252.
displacement (for both the inter and intra-communicator version). The
displacements in scatterv are given in multiples of the sendtype.
This fix should probably make to v1.0.1 as well?
This commit was SVN r8251.
* turns out (duh!) that there was a reason that the <projectdir>dir
variable was set in the AM conditional. If not, stupid directories
are created and not needed... duh.
This commit was SVN r8205.
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.
is labeled as internal so the users will not see it but it is not read-only so we can still
play with it (that's for our internal tests). This is supposed to dissapear later after the
next (or next next) release of the MX library, but we need it now as a quick fix before the
release.
This commit was SVN r8161.
- Add big comment about a general overview of what the sm btl is doing
- random small code cleanups
- fix instances of mca_btl_sm[0] to mca_btl_sm[1] where relevant
- remove a lot of unused, confusing, and incorrect interface functions
from ompi_fifo.h and ompi_circular_buffer.h. These functions, if
they were used, would not work properly with the scheme that the sm
btl uses with the fifos (i.e., receiver makes right -- if necessary)
- add some missing offset computations in the fifo and circular buffers
- change the types of offsets to be ssize_t, not size_t
- remove an offset parameter from a function that didn't need it
This commit was SVN r8135.
- Ensure to convert base_shared_mem_flags to be a relative offset in
the global storage, and then to convert that back to an absolute
virtual address before we try to use it
- Don't double increment n_local_procs when calculating the peer rank
during bootstrapping of the different base address case
Something else is still wrong; if mmap() returns a different base
address, things don't work (i.e., segv or hang forever when you try to
send a message). More specifically, the bootstrapping now seems to
correctly handle the case when mmap() base addresses are different,
but the message passing does *not* -- it always assumes that the
mmap() base addresses are the same.
Still working on the fix for that -- want to checkpoint what has been
done so far to facilitate working on different machines...
This commit was SVN r8134.
Lots of misc fixes: printfs->opal_output, handles fanin/out correctly for forced ops
unused vars, correct calculations on meaning of 'msgsize' for decision functions
(varies depending on algorithm), etc
This commit was SVN r8113.
When compiling C++ code that includes something that looks for the C++
header file "memory" (stupid C++ headers not having .h extensions), it
goes through the header file search path, which includes $(topsrcdir)/opal,
so it finds the directory $(topsrcdir)/opal/memory/ and tries to load
that as the memory header file and all goes downhill.
This commit was SVN r8111.
- first we setup the connections in the begining with all the peers
- MX does not handle well the case where several peers make connections to the same
destination simultaneously.
So I change the order in which we connect. First we compute our rank in the array,
then in a round-robin fashion we setup connection starting with our left neighboard.
This commit was SVN r8075.