1
1
Граф коммитов

218 Коммитов

Автор SHA1 Сообщение Дата
Gleb Natapov
48d348b577 Don't complete send request before we've got completion on the first rndv packet.
Sender can receive and complete PUT request before it gets completion on the first rndv packet. senreq struct may be reused for the next MPI_Send and unexpected completion mess up the things. I sometimes got SEGV and sometimes data corruption.

This commit was SVN r10301.
2006-06-12 14:00:43 +00:00
George Bosilca
7d1feffbf7 The real solution. If the sendreq->req_send.req_bytes_packed is zero then there
is no data to be trasfered. And this is the condition which lead to a non
initialized convertor.

This commit was SVN r10299.
2006-06-12 06:18:18 +00:00
George Bosilca
c959c2f214 Don't reset the convertor's position if it wasn't initialized before. This can
only happens for zero byte persistent requests.

This commit was SVN r10298.
2006-06-12 06:14:35 +00:00
George Bosilca
95d0395578 I'm skeptical about the ability of the compiler to correctly optimize the
loop local variables.

This commit was SVN r10019.
2006-05-23 03:21:15 +00:00
George Bosilca
b8ef0cc749 Minor cleanups.
This commit was SVN r10001.
2006-05-21 05:55:21 +00:00
George Bosilca
e658557d52 Move the convertor creation out of th critical path. If we expect a
message from a known peer (not MPI_ANY_SOURCE) then we can attach the
remote proc and initialize the convertor as soon as we know the data-type,
and the count (so basically in the _INIT macro). If it's not the case, then
create them in the _MATCHED macro (as in the original version). Of course,
beforeinitializing the convertor we check that there will be some data
in the message.

This commit, plus the convertor improvements from few days ago, lower the
latency for my test case environment (mvapi) by 0.1 microseconds. The convertor
now is as slim as it can be, I don't think there is anything else to
remove/improve. 

This commit was SVN r9843.
2006-05-07 21:03:12 +00:00
George Bosilca
a7542824ed Generic length computation (moved from the endpoint.h).
This commit was SVN r9842.
2006-05-07 20:54:44 +00:00
George Bosilca
569b88e093 The endpoint include is not required.
This commit was SVN r9841.
2006-05-07 20:52:55 +00:00
Rainer Keller
0f9b10ff8e - Update test dup MPI_COMM_WORLD -- so that we may
have additional Barriers for output.

This commit was SVN r9831.
2006-05-05 07:42:33 +00:00
Rainer Keller
71d328c086 - Add the PERUSE_COMM_REQ_XFER_CONTINUE for recv.
This commit was SVN r9820.
2006-05-04 19:31:33 +00:00
George Bosilca
22572940c8 Remove some useless code.
This commit was SVN r9513.
2006-04-01 07:42:43 +00:00
George Bosilca
58cd591d3b PERUSE support for OB1. There we go, now the trunk has a partial peruse implementation.
We support all the events in the PERUSE specifications, but right now only one event
of each type can be attached to a communicator. This will be worked out in the future.
The events were places in such a way, that we will be able to measure the overhead
for our threading implementation (the cost of the synchronization objects).

This commit was SVN r9500.
2006-03-31 17:09:09 +00:00
Galen Shipman
5271948ec0 --- opal object changes
add object size to opal class
no longer need the size when allocating a new object as this is stored in
the class structure

--- dr changes 
Previous rev. maintained state on the communicator used for acking duplicate
fragments, but the communicator may be destroyed prior to successfull
delivery of an ack to the peer. We must therefore maintain this state
globally on a per peer, not a per peer, per communicator basis. 
This requires that we use a global rank on the wire and translate this as
appropriate to a local rank within the communicator. 

This commit was SVN r9454.
2006-03-29 16:19:17 +00:00
George Bosilca
dabe47ca3d A function declared as static inline and who's not used directly, but
only as a pointer reference completely confuse some compilers (gcc 4.1
included). Removing the inline (it was there before when the function
was used in the same file) seems to solve the problem. However, the most
strange thing is that the bug only appear when we compile directly in
the trunk directory. It just don't happens when we're using the VPATH
build.

This commit was SVN r9408.
2006-03-24 04:21:30 +00:00
Galen Shipman
e548f5f8a8 change pml_ob1_leave_pinned_pipeline param to mpi_leave_pinned_pipeline
This commit was SVN r9384.
2006-03-23 15:57:34 +00:00
Tim Woodall
12e502b10d use correct loop index
This commit was SVN r9356.
2006-03-21 18:18:22 +00:00
Galen Shipman
5600932c2f fix misc warnings
This commit was SVN r9339.
2006-03-20 15:41:45 +00:00
Tim Woodall
bd870519fd - modified convertor copy_and_prepare routines to accept an addition
flag, new flags to be included when convertor is initialized
- modified pml/btl module defs and added stub functions for diagnostic
  output routines to dump state of queues / endpoints
- updates to data reliability pml

This commit was SVN r9329.
2006-03-17 18:46:48 +00:00
George Bosilca
612570134f The request management framework has been redesigned. The main idea is
to let the PML (or io, more generally the low level request manager)
to have it's own release function (what was before the req_fini). This
function will only be called from the low level while the req_free will
be called from the upper level (MPI layer) in order to mark the request
as not used by the user anymore.

From the request point of view the requests will be marked as inactive
everytime we read their status (true for persistent as well). As 
MPI_REQUEST_NULL is already marked as inactive, the test and wait functions
are simpler. The drawback is that now we have to change in the
ompi_request_{test|wait} the req_status of the request once we get it's
status.

This commit was SVN r9290.
2006-03-15 22:53:41 +00:00
Tim Woodall
8bf6ed7a36 - corrected locking in gm btl - gm api is not thread safe
- initial support for gm progress thread
- corrected threading issue in pml
- added polling progress for a configurable number of cycles to wait for threaded case

This commit was SVN r9188.
2006-03-02 00:39:07 +00:00
Brian Barrett
1479a90b39 * assert() that endianness doesn't need to change if we are sending RDMA headers
around, since OB1 currently doesn't do the right thing there, but that should
  not happen in the near future because the R2 BML should not make any RDMA
  networks available between machines with different architectures
* Clean up the #ifs a little bit so that we don't do unneeded work when
  on big endian machines and heterogeneous support is disabled...

This commit was SVN r9184.
2006-02-28 19:54:46 +00:00
Rainer Keller
5102571c02 - Get rid of the temporary reachability bitmap.
This commit was SVN r9163.
2006-02-27 11:06:01 +00:00
Brian Barrett
285581dff2 More endian-related cleanups:
- 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.
2006-02-26 00:45:54 +00:00
Brian Barrett
2eb76ff0cd * finish the TEG/UNIQ/PTL removal
This commit was SVN r9118.
2006-02-23 00:39:01 +00:00
Brian Barrett
63be889350 * include the correct file if we are doing the component bypass thing with ob1
This commit was SVN r9111.
2006-02-22 16:16:38 +00:00
Rainer Keller
0642809967 - Trivial change:
Function mca_pml_ob1_recv_request_fin is not used anywhere

This commit was SVN r9029.
2006-02-14 09:48:24 +00:00
Rainer Keller
45e3415bb5 - With the change from MCA_PML_OB1_FREE in r8945 to the send/recv
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
2006-02-14 09:09:05 +00:00
George Bosilca
418ffa32ce Remove a strange warning from gcc 4.2:
ompi/mca/pml/ob1/pml_ob1_sendreq.h:210:96: warning: backslash and newline separated by space

This commit was SVN r9013.
2006-02-13 19:02:39 +00:00
Tim Woodall
609ad79982 change default for pipeline
This commit was SVN r9012.
2006-02-13 17:54:36 +00:00
Galen Shipman
dd00fb029f set size to bytes packed
This commit was SVN r9011.
2006-02-13 17:53:54 +00:00
Galen Shipman
fe05d1f238 use size passed,
This commit was SVN r9010.
2006-02-13 17:53:30 +00:00
George Bosilca
bbe79f7f0e Performance tunning. The OB! progress functions just call the BML one. Thus, setting the
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.
2006-02-13 16:28:25 +00:00
Brian Barrett
566a050c23 Next step in the project split, mainly source code re-arranging
- 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.
2006-02-12 01:33:29 +00:00
George Bosilca
a4619b1a11 Remove a compilation warning from the RDMA engine.
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.
2006-02-10 21:14:08 +00:00
George Bosilca
0376dce258 Keep track of the ompi_proc in the comm_proc. This avoid a lookup for the processor and
simplify the execution path. The peer proc (ompi_proc_t) is set at the matching stage.

This commit was SVN r8962.
2006-02-10 18:55:43 +00:00
Galen Shipman
44fe6c3896 allow pml pipeline to cache memory registrations
to enable this (off by default) use: 
-mca pml_ob1_leave_pinned_pipeline 1 
!!AND!!!
-mca mpool_use_mem_hooks 1 

This commit was SVN r8949.
2006-02-09 15:49:51 +00:00
George Bosilca
269fc0c13a Cleanup:
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.
2006-02-09 06:59:54 +00:00
George Bosilca
83f83e5730 Specialize the MCA_PML_OB1_FREE macro. When we call this macro we already know what kind
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.
2006-02-08 22:42:00 +00:00
George Bosilca
600f664db2 No comment !!! But this time I really remove the second lock ...
This commit was SVN r8943.
2006-02-08 21:43:46 +00:00
George Bosilca
89db0be4a8 Remove the second lock.
This commit was SVN r8940.
2006-02-08 19:19:57 +00:00
Galen Shipman
18bbb049d1 fix bsend bug, need to check that data length before packing.
This needs to go to the release branch

This commit was SVN r8937.
2006-02-08 17:39:33 +00:00
George Bosilca
0775c88a9b Remove all unused variables.--This line, and those below, will be ignored--
M    ob1/pml_ob1_recvreq.c

This commit was SVN r8934.
2006-02-08 07:20:48 +00:00
George Bosilca
e9706e6db0 Remove the macro to compute the length of the segments from the send header
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.
2006-02-08 06:03:54 +00:00
Tim Woodall
e920ec67b9 - add new send flag (MCA_PML_OB1_SEND_COMPLETE) to force local completion prior to signalling mpi completion
This commit was SVN r8907.
2006-02-06 19:51:49 +00:00
George Bosilca
eb1d2dd290 Working down the latency (0.2 micro-sec on a Xeon 2Ghz) by removing the
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.
2006-02-05 06:13:07 +00:00
Rainer Keller
60c2ae768b - Change the spacing preventing finding the struct from script.
This commit was SVN r8819.
2006-01-26 11:55:00 +00:00
George Bosilca
a2f31b2bf6 Use the MCA_PML_BASE_REQUEST_MPI_COMPLETE macro to set the completed state to true.
Add back the mutex protection around the size computations as they are not yet atomic
operations.

This commit was SVN r8812.
2006-01-25 23:17:17 +00:00
Galen Shipman
1e0ea9dd6d Major fixes for the RDMA registration cache (leave_pinned).
This commit fixes issues with HPL runs on node counts > 4. 

This commit was SVN r8793.
2006-01-23 22:51:50 +00:00
Jeff Squyres
bd2524378a Remove unused variable
This commit was SVN r8784.
2006-01-22 12:20:01 +00:00
Rainer Keller
a437fd3aaf - As with George's r8771, move lock/unlock of ompi_request_lock into the
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
2006-01-21 21:02:35 +00:00
Rainer Keller
7442a641ea - Fix locking, not related to the current deadlocks.
This commit was SVN r8777.
2006-01-21 13:43:36 +00:00
George Bosilca
2fadddebc8 Decrease the lock granularity and remove it from the path where we don't need it.
Reorder the code to get rid of some local variables.

This commit was SVN r8771.
2006-01-20 17:19:22 +00:00
George Bosilca
68b0ba0f58 We need the copyright ...
This commit was SVN r8625.
2005-12-31 15:51:57 +00:00
Jeff Squyres
06b01b3b76 Fix uninitialized variable
This commit was SVN r8605.
2005-12-23 13:02:36 +00:00
Tim Woodall
e1a49793f7 improve diagnostics when registration fails
This commit was SVN r8599.
2005-12-22 16:32:12 +00:00
Jeff Squyres
efe84971ce Correct copyrights and some typos
This commit was SVN r8588.
2005-12-22 05:37:28 +00:00
Tim Woodall
ebbac05f3c remove questionable sched_yield - probably left over from debugging
This commit was SVN r8457.
2005-12-12 16:00:27 +00:00
George Bosilca
5c8c939713 Move the comment at the right place.
This commit was SVN r8445.
2005-12-10 23:25:29 +00:00
George Bosilca
c6eb429a9a Wondows work:
- 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.
2005-12-10 21:38:48 +00:00
Tim Woodall
bce1d2e220 volatile not required for non-threaded case
This commit was SVN r8392.
2005-12-06 18:27:56 +00:00
Tim Woodall
e135f850af backed out to much :-)
This commit was SVN r8356.
2005-12-01 17:32:27 +00:00
Tim Woodall
394bf196bd back out changes to match only one probe - consensus was we should
allow this if multiple threads post multiple probes

This commit was SVN r8353.
2005-12-01 17:17:06 +00:00
Tim Woodall
53a33f3bed dont allow fragment to match more than one probe
This commit was SVN r8352.
2005-12-01 17:06:40 +00:00
Tim Woodall
d7c1c23e3f corrections for handling probe with out of order delivery
- 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.
2005-11-30 17:57:59 +00:00
George Bosilca
c4e843ae08 A little add to the comment.
This commit was SVN r8143.
2005-11-13 23:01:41 +00:00
Tim Woodall
607f62accd - pass a flag to the peer indicating wether data is contiguous at the soure
- only attempt to schedule rdma if contiguous at both src/dst
- need to review this for next release 

This commit was SVN r8119.
2005-11-11 15:33:25 +00:00
Tim Woodall
4c7c277b0a improve the scalability of MPI_Waitall ...
note that any code that sets a request to a completed state must
now increment a counter for every completed request

This commit was SVN r8073.
2005-11-10 00:45:27 +00:00
Tim Woodall
2f6d50e0c6 init rdma count
This commit was SVN r8071.
2005-11-10 00:04:25 +00:00
Tim Woodall
78c98386d7 should reset the count (for persistent requests)
This commit was SVN r8064.
2005-11-09 22:02:48 +00:00
Tim Woodall
58b46d2da0 return mpool resources when request completes rather than in free
This commit was SVN r8063.
2005-11-09 21:59:01 +00:00
Jeff Squyres
42ec26e640 Update the copyright notices for IU and UTK.
This commit was SVN r7999.
2005-11-05 19:57:48 +00:00
Tim Woodall
e45f4744ee do not return these descriptors to cache
This commit was SVN r7986.
2005-11-03 23:20:38 +00:00
Tim Woodall
26003bc952 fix from release branch - don't use get protocol if more
than one btl is available

This commit was SVN r7984.
2005-11-03 20:52:56 +00:00
George Bosilca
d916e0c5b4 The (I hope) final solution for the convertor problem. As all the PML inherit
the base send and receive request from the pml_base, we can solve our problem
if we construct the convertor attached to any request in the pml_base_construct
function. At the end of the life time for each request (here life time is 
related to one utilisation, without taking in account the cache) we release
all information attached to the convertors in the _FINI macro by calling the
ompi_convertor_cleanup.

This commit was SVN r7910.
2005-10-28 03:26:36 +00:00
Brian Barrett
bf67c9387b * initialize send request convertor with the correct type (convertor instead
of request).  This fixes at least the bug with NetPIPE in 64bit land that
  Troy was seeing. 

This commit was SVN r7904.
2005-10-27 23:08:27 +00:00
Tim Woodall
4fc5b2105a this is currently an int - we shouldn't restrict it unless required
This commit was SVN r7895.
2005-10-27 17:06:58 +00:00
George Bosilca
1d75b7972f Solve thee problem with the reference count on the datatype (RT bug 1492). The problem is that the
convertor (when prepared) increase the reference count on the used datatype. This reference count
will be released only when the OBJ_DESTRUCT is called on a convertor. However, having to call
OBJ_CONSTRUCT and OBJ_DESTRUCT on each request every time we want to use it (even when it come
from the cache) is an expensive operation. This can be avoided is the OBJ_DESTRUCT will leave the
convertor in exactly the same state as OBJ_CONSTRUCT. With this approach we just have to call
OBJ_CONSTRUCT for each convertor once when we initially create the request.

This commit was SVN r7813.
2005-10-19 20:57:39 +00:00
Jeff Squyres
f9974f72e0 construct/destruct convertor when requests are
constructed and allocated to free lists

This commit was SVN r7791.
2005-10-18 12:19:43 +00:00
Edgar Gabriel
5d7fbd9d2e minor change in bml_r2_add_procs: the memory for the bml_endpoints structure
has to be allocated outside of the routine. Thus, the update version of pml/ob1/oml_ob1.c

This commit was SVN r7739.
2005-10-12 20:59:25 +00:00
Tim Woodall
22f460bdc5 merge in changes from release branch
This commit was SVN r7737.
2005-10-12 20:24:43 +00:00
Tim Woodall
6da9561ea8 merge in correction from v1.0
This commit was SVN r7732.
2005-10-12 16:40:52 +00:00
Tim Woodall
d859855dea merge in changes from 1.0
This commit was SVN r7728.
2005-10-12 15:54:35 +00:00
Tim Woodall
4a71621410 merge in scheduling changes from release branch
This commit was SVN r7699.
2005-10-11 20:41:51 +00:00
Brian Barrett
b7ef094766 * the cid in the header is only 16 bits, so limit our max cid to what can fit in there.
This commit was SVN r7639.
2005-10-05 15:43:28 +00:00
George Bosilca
f8355ec104 Cast the right side member to void* before assignment.
This commit was SVN r7608.
2005-10-04 12:37:23 +00:00
Tim Woodall
c05ef28f6e - added routine to ompi_pointer_array to remove array contents
- corrected memory hook callback to catch all allocations (need to optimize this)
- don't attempt to consolidate allocations

This commit was SVN r7600.
2005-10-03 23:29:26 +00:00
Galen Shipman
67d38b7896 Add multi-nic support to openib
Fix connection establishment race in openib 
Other misc 

This commit was SVN r7570.
2005-09-30 22:58:09 +00:00
Galen Shipman
05e6e51fec re-reg from min of bases and max of bounds
add byte counting for total registered memory 

This commit was SVN r7546.
2005-09-29 21:28:54 +00:00
Galen Shipman
c1f5543f62 need to call mpool_release on all registrations obtained in the pml.
sanity checks 

This commit was SVN r7530.
2005-09-28 04:49:40 +00:00
Galen Shipman
b9b78f8f5d modify rcache_rb to find registrations in the middle of a base and bound
This commit was SVN r7528.
2005-09-28 02:11:35 +00:00
Galen Shipman
0fc17cedee change order of ops on register
This commit was SVN r7525.
2005-09-27 21:43:41 +00:00
Galen Shipman
3c97b3f722 Modified the registration to include a base_align and bound_align for
searching the tree. Modified the memory callback to search the tree at each
page boundary for registrations. This is necessary as an application may
malloc memory and send out of any portion of that memory, even discontiguous
regions. 

This commit was SVN r7510.
2005-09-27 02:01:21 +00:00
Galen Shipman
9fe5844071 decrement ref count on removal of registration from mru and tree.
add misc asserts to check for proper reference counting. 

ugly hack 1 -- use mallopt to never release memory ala sbrk - this is
commented out in mca_btl_mvapi_component_init

ugly hack 2 -- test registrations comming out of the tree via rcache_find, for
an unknown reason the tree is returning registrations where the address is not
within the base or bound of the registration. If this happens, we return
NULL. 

comment out code to enable mem hooks if leave_pinned is set, note we can do
this via an mca param and will default it to leave_pinned with mem_hooks when
we iron out these issues. 

I am adding a unit test for the rcache. Note that we have a unit test for the
rb tree but the compare function is significantly different than that used for
registrations. After we have tracked down the issues with rcache_rb we will
remove the above hacks. 

This commit was SVN r7499.
2005-09-24 00:24:49 +00:00
Andrew Friedley
555ae37255 Add lib{opal,orte,mpi}.la to appropriate LIBADD's, some whitespace cleanup as well.
This commit was SVN r7477.
2005-09-22 12:28:54 +00:00
Tim Woodall
9791c066e8 dont attempt to pin the receive buffer if data has
already been received

This commit was SVN r7475.
2005-09-21 23:23:47 +00:00
Tim Woodall
a74ca0062a reductions to initial memory footprint
This commit was SVN r7455.
2005-09-21 19:10:56 +00:00
Galen Shipman
4296e723c9 default free_lists to smaller size..
This commit was SVN r7454.
2005-09-21 18:55:07 +00:00
Tim Woodall
782e5b21cc cleanup
This commit was SVN r7451.
2005-09-21 15:34:45 +00:00
Tim Woodall
9b96ecf9b1 correction for rdma case - currently rdma entire message
This commit was SVN r7392.
2005-09-15 19:36:56 +00:00
Tim Woodall
6ae2ae4d1a - code cleanup
- correct mpi semantics

This commit was SVN r7390.
2005-09-15 18:47:59 +00:00