- 03 Nov, 2014 1 commit
-
-
Split RMA functionality into smaller files, and move functions to where they belong based on the file names. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
- 01 Nov, 2014 2 commits
-
-
Xin Zhao authored
req->dev.user_buf points to the data sent from origin process to target process, and for FOP sometimes it points to the IMMED area in packet header when data can be fit in packet header. In such case, we should not free req->dev.user_buf in final request handler since that data area will be freed by the runtime when packet header is freed. In this patch we initialize user_buf to NULL when creating the request, and set it to NULL when FOP is completed, and avoid free a NULL pointer in final request handler. Signed-off-by:
Min Si <msi@il.is.s.u-tokyo.ac.jp>
-
The original implementation includes an optimization which allows Win_unlock for exclusive lock to return without waiting for remote completion. This relys on the assumption that window memory on target process will not be accessed by a third party until that target process finishes all RMA operations and grants the lock to other processes. However, this assumption is not correct if user uses assert MPI_MODE_NOCHECK. Consider the following code: P0 P1 P2 MPI_Win_lock(P1, NULL, exclusive); MPI_Put(X); MPI_Win_unlock(P1, exclusive); MPI_Send (P2); MPI_Recv(P0); MPI_Win_lock(P1, MODE_NOCHECK, exclusive); MPI_Get(X); MPI_Win_unlock(P1, exclusive); Both P0 and P2 issue exclusive lock to P1, and P2 uses assert MPI_MODE_NOCHECK because the lock should be granted to P2 after synchronization between P2 and P0. However, in the original implementation, GET operation on P2 might not get the updated value since Win_unlock on P0 return without waiting for remote completion. In this patch we delete this optimization. In Win_free, since every Win_unlock guarantees the remote completion, target process no longer needs to do additional counting works to detect target-side completion, but only needs to do a global barrier. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
- 01 Oct, 2014 3 commits
-
-
Xin Zhao authored
at_completion_counter is used to indicate if all Active Target operations have completed on this target. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
For GET-like operations, We should increment the Active Target counter when the process of sending back data is not completed immediately on target and a response request is created. We should decrement the counter when the process of sending back data is completed on target side. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
In the original implementation, for GACC/FOP/CAS, the function MPIDI_CH3_Finish_rma_op_target (includes operations that should be performed on target when that operation finishes on target) is not called when that operation real finishes, but is called after starting send back data. Here we fix it to make the function called after sending process on target is completed. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
- 28 Sep, 2014 1 commit
-
-
Xin Zhao authored
For Active Target synchronization, the original implementation does not guarantee the completion of all ops on target side when Win_wait / Win_fence returns. It is implemented using a counter, which is decremented when the last operation from that origin finishes. Win_wait / Win_fence waits until that counter reaches zero. Problem is that, when the last operation finishes, the previous GET-like operation (for example with a large data volume) may have not finished yet. This breaks the semantic of Win_wait / Win_fence. Here we fix this by increment the counter whenever we meet a GET-like operation, and decrement it when that operation finishes on target side. This will guarantee that when counter reaches zero and Win_wait / Win_fence returns, all operations are completed on the target. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
- 18 Jul, 2014 1 commit
-
-
Pavan Balaji authored
This reverts commit 274a5a70.
-
- 17 Jul, 2014 1 commit
-
-
Pavan Balaji authored
We were creating duplicating information in the operation structure and in the packet structure when the message is actually issued. Since most of the information is the same anyway, this patch just embeds a packet structure into the operation structure. Signed-off-by:
Xin Zhao <xinzhao3@illinois.edu>
-
- 22 May, 2014 1 commit
-
-
Wesley Bland authored
There are quite a few places where the request cleanup is done via: MPIU_Object_set_ref(req, 0); MPIDI_CH3_Request_destroy(req); when it should be: MPID_Request_release(req); This makes the handling more uniform so requests are cleaned up by releasing references rather than hitting them with the destroy hammer. Fixes #1664 Signed-off-by:
Ken Raffenetti <raffenet@mcs.anl.gov>
-
- 30 Dec, 2013 1 commit
-
-
Antonio J. Pena authored
Mark those variables exclusively being used for assertions as potentially unused to avoid compiler warnings when the assertion macro does nothing. These show up with --enable-fast. Signed-off-by:
Pavan Balaji <balaji@mcs.anl.gov>
-
- 31 Oct, 2013 1 commit
-
-
Also includes random fixes to `-Wshorten-64-to-32` warnings which might need to be teased out. Signed-off-by:
Pavan Balaji <balaji@mcs.anl.gov>
-
- 26 Sep, 2013 1 commit
-
-
Pavan Balaji authored
The check was originally in the ch3 layer, but doesn't seem to use any ch3 specific information. This macro will be useful at the upper layers for optimizations, e.g., in the localcopy routine. Signed-off-by:
Xin Zhao <xinzhao3@illinois.edu>
-
- 28 Jul, 2013 1 commit
-
-
If "alloc_shm" is set, it may happen that the target process is doing a RMA operation from a remote process concurrently with a local process is also doing a RMA operation on the same target and on overlapping memory location. Signed-off-by:
Pavan Balaji <balaji@mcs.anl.gov>
-
- 21 Feb, 2013 4 commits
-
-
James Dinan authored
The single_op_opt flag in the request object was previously used to track whether an operation is a lock-op-unlock type, for the purposes of completion. Tracking this state has been merged into the packet header flags, so the single_op_opt flag is no longer needed. Reviewer: goodell
-
James Dinan authored
This patch uses packet header flags to piggyback the unlock operation on other RMA operations. For most operations, there is no net change. However, FOP and GACC, unlock piggybacking was previously not implemented. Reviewer: goodell
-
James Dinan authored
This patch consolidates the synchronization and tracking of RMA operations into a single routine that is called whenever we complete an operation. The only exception are lock-op-unlock operations that are completed from within the lock operation processing code. This code is pretty ugly, but it will get cleaner once packet flags are been added. Reviewer: goodell
-
James Dinan authored
Partially reverted [0b364068] in preparation for incorporating new piggybacking infrastructure. This temporarily re-introduces that bug and it will be fixed again with the new piggybacking patch. Reviwer: goodell
-
- 05 Feb, 2013 1 commit
-
-
James Dinan authored
GACC operations were both piggybacking the unlock message to the origin, and sending back a PT done packet. This was causing the origin to be unlocked twice. When another lock operation was performed between the GACC and PT done unlock operations, there was a synchronization race.
-
- 24 Jan, 2013 1 commit
-
-
James Dinan authored
-
- 05 Nov, 2012 2 commits
-
-
James Dinan authored
Fetch-and-op has been updated to ignore the origin data and perform no operation when the given op is MPI_NO_OP. Reviewer: goodell
-
James Dinan authored
Reviewer: buntinas
-
- 11 Oct, 2012 1 commit
-
-
James Dinan authored
Reviewer: goodell
-
- 10 Oct, 2012 1 commit
-
-
David Goodell authored
By setting "indent-tabs-mode:nil" we should hopefully begin to slowly squeeze out hard tabs from the source without a disruptive (to downstream projects) whitespace-fixing change. No reviewer.
-
- 20 Sep, 2012 1 commit
-
-
James Dinan authored
Updated the fetch_and_op implementation to have two data transfer paths; one where data can be embedded in the packet header and one where it is sent separately. With this change, the header size is back to 40 bytes. Reviewer: buntinas
-
- 23 Aug, 2012 1 commit
-
-
James Dinan authored
Pulled bit manipulation arithmetic into macros for converting handles to indices in MPIR_Op and MPIR_Op_check_dtype function pointer tables. Reviewer: buntinas
-
- 06 Apr, 2012 1 commit
-
-
Pavan Balaji authored
No reviewer.
-
- 04 Nov, 2011 1 commit
-
-
Pavan Balaji authored
-
- 06 Nov, 2010 1 commit
-
-
William Gropp authored
[svn-r7416] Major improvement to RMA performance for long lists of operations, an immediate mode accumulate for single ints, store the MPID_Comm within the window, and added a basic performance instrumentation interface that was extensively used to improve the RMA performance (enabled with --enable-g=instr). With these fixes, MPICH2 can run the one-sided version of the Graph500 benchmark at a respectable if not great rate
-
- 06 Oct, 2010 1 commit
-
-
William Gropp authored
[svn-r7312] Correct use of MPI_ERR_NO_MEM (should be MPI_ERR_OTHER) for out-of-memory that does not pertain to MPI_Alloc_mem and add detail to error messages about out-of-memory
-
- 08 Sep, 2010 1 commit
-
-
Darius Buntinas authored
[svn-r7186] Fixes to allow job to continue with a node failure. VCs associated with the failed process enter a failed state, and cannot be used for communication, but communication is still allowed with other processes. Reviewed by goodell@.
-
- 29 Jul, 2010 1 commit
-
-
Darius Buntinas authored
-
- 24 Sep, 2009 1 commit
-
-
William Gropp authored
[svn-r5368] Use the correct type in the segment calls - it must be an MPI_Aint, not an MPIDI_msg_sz_t, particularly when the size of MPI_Aint is changed to match MPI_Offset (the segment calls specify an MPI_Aint at the last argument, for example. This is part of the changes needed to make attributes work properly when --with-aint-size=8 is selected
-
- 24 Jul, 2009 1 commit
-
-
David Goodell authored
This ticket also converts the MPIDI_Request_recv_pending macro into two macros which have slightly clearer names and usages. The side effect of the old macro was very confusing. Reviewed by buntinas@.
-
- 13 Mar, 2009 1 commit
-
-
Jayesh Krishna authored
[svn-r4062] 1) Modifying the datatype code to find the number of contig blocks in an instance of an MPI derived datatype - Since finding the real number of contig blocks is not easy we find a reasonable upper bound instead. This also fixes the case where the number of contig blocks was uninitialized for contiguous datatypes. Refer ticket #428 for details (2) Adding a test case, test1_dt.c, to test the fix - Review @ rross, thakur
-
- 12 Mar, 2009 1 commit
-
-
David Goodell authored
No reviewer.
-
- 31 Dec, 2008 1 commit
-
-
William Gropp authored
[svn-r3717] Added ATTRIBUTE((unused)) in several places; removed unused variables and code; added some fixmes
-
- 09 Oct, 2008 1 commit
-
-
William Gropp authored
[svn-r3275] Updates for brief-global thread cs support (still requires updates to MPIR_Localcopy) and for new match structure defintion where used within debugging statements
-
- 02 Sep, 2008 1 commit
-
-
William Gropp authored
[svn-r3070] Added ATTRIBUTE((unused)) (which is defined to work with gcc and disappear for other compilers only to the functions whose arguments are defined by a general pattern (such as a request handler) and thus must be used even if not needed. For functions that have parameters that are not used and are not needed to conform to a pattern, do not use ATTRIBUTE((unused)), instead, fix the routine to either make use of the argument in a real way or change the routine to not pass the argument.
-
- 15 Aug, 2008 1 commit
-
-
Darius Buntinas authored
-