- 13 Feb, 2015 16 commits
-
-
Xin Zhao authored
Here req->dev.user_count is used when receiving FOP/CAS response data on origin in PktHandler_FOPResp and PktHandler_CASResp. Since the count always be 1, we did not set rma_op->result_count, and we directly set req->dev.user_count to 1 in packet handlers. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
When issuing RMA packets, we do not need to store target_win_handle in the request on origin side but only need to store source_win_handle. Because when the response data is back, we only needs to use source_win_handle on origin size. This patch simplifies the code in this way. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
For GET-like RMA packets and response packets (GACC, GET, FOP, CAS, GACC_RESP, GET_RESP, FOP_RESP, CAS_RESP), originally we carry source_win_handle in packet struct in order to locate window handle on origin side in the packet handler of response packets. However, this is not necessary because source_win_handle can be stored in the request on the origin side. This patch delete source_win_handle from those packets to reduce the size of packet union. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
do_accumulate_op() does more comprehensive work on ACC computation than OP function. For example, MPI_REPLACE is not defined as predefined computation and therefore not handled by OP function, but it is safely handled in do_accumulate_op(). This patch replace OP function with do_accumulate_op() on target side. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
In this patch we replace "=" with memcpy function when assigning structure content to another struct. Using "=" in this case is not compatible for llvm compiler. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
In this patch, we replace one argument of function finish_op_on_target, "packet(op) type", with "has_response_data". Since finish_op_on_target does not care what specific packet(op) type it is processing on, but only cares about if the current op has response data (like GET/GACC), changing the argument in this way can simplify the code by avoiding acquiring packet(op) type everytime before calling finish_op_on_target. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Originally we add "immed_data" and "immed_len" areas to RMA packets, in order to piggyback small amount of data with packet header to reduce number of packets (Note that "immed_len" is necessary when the piggybacked data is not the entire data). However, those areas potentially increase the packet union size and worsen the two-sided communication. This patch fixes this issue. In this patch, we remove "immed_data" and "immed_len" from normal "MPIDI_CH3_Pkt_XXX_t" operation type (e.g. MPIDI_CH3_Pkt_put_t), and we introduce new "MPIDI_CH3_Pkt_XXX_immed_t" packt type for each operation (e.g. MPIDI_CH3_Pkt_put_immed_t). "MPIDI_CH3_Pkt_XXX_immed_t" is used when (1) both origin and target are basic datatypes, AND, (2) the data to be sent can be entirely fit into the header. By doing this, "MPIDI_CH3_Pkt_XXX_immed_t" needs "immed_data" area but can drop "immed_len" area. Also, since it only works with basic target datatype, it can drop "dataloop_size" area as well. All operations that do not satisfy (1) or (2) will use normal "MPIDI_CH3_Pkt_XXX_t" type. Originally we always piggyback FOP data into the packet header, which makes the packet size too large. In this patch we split the FOP operaton into IMMED packets and normal packets. Because CAS only work with 2 basic datatype and non-complex elements, the data amount is relatively small, we always piggyback the data with packet header and only use "MPIDI_CH3_Pkt_XXX_immed_t" packet type for CAS. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
This patch just does code refactoring for RMA operation rountines to make the code structure clearer. This patch does not change any functionality. After code refactoring, in each operation routine, for non-SHM operations we do the work in the following order: (1) allocate a new op struct; (2) fill areas in op struct, except for packet struct in op struct; (3) initialize packet struct in op struct, fill areas in packet struct; (4) enqueue op to data structure on window. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Originally we added lock_type and origin_rank areas in RMA packet, in order to piggyback passive lock request with RMA operations. However, those areas potentially enlarged the packet union size, and actually they are not necessary and can be completetly avoided. "Lock_type" is used to remember what types of lock (shared or exclusive) the origin wants to acquire on the target. To remove it from RMA packet, we use flags (already exists in RMA packet) to remember such information. "Origin_rank" is used to remember which origin has sent lock request to the target, so that when the lock is granted to this origin later, the target can send ack to that origin. Actually the target does not need to store origin_rank but can only store origin_vc, which is known from progress engine on target side. Therefore, we can completely remove origin_rank from RMA packet. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Some packet wrappers did not include all packet types, this patch adds missed packet types to those wrappers. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
This patch re-apply modifications on mpidpkt.h that is temporarily reverted in bb3f9623 . Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
This reverts commit 389aab16 . Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
We are going to revert the commit 389aab16 because it re-ordered the attributes in RMA packet structs in mpidpkt.h and messed up the alignments. This commit temporarily reverts the following commits, which only reverts modification on mpidpkt.h after commit 389aab16. e36203c3, 45afd1fd, 3a05784f, 87acbbbe, b155e7e0 We will re-apply those modifications after we revert 389aab16 . Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
- 09 Feb, 2015 3 commits
-
-
Kenneth Raffenetti authored
Two libtool patches we were carrying were released in version 2.4.3. This commit drops our patches and bumps version required to run autogen.sh. Our patch for ifort on OSX is still present and updated to work with the new version. Signed-off-by:
Wesley Bland <wbland@anl.gov>
-
Kenneth Raffenetti authored
Fixes a potential "arg list too long" error at make time. See https://lists.gnu.org/archive/html/bug-automake/2014-10/msg00009.html for more info. Closes #2215 Signed-off-by:
Wesley Bland <wbland@anl.gov>
-
Igor Ivanov authored
Call of MPID_Sched_cb callback function can force list memory reallocation. As a result entry point proccessed before call can become invalid. It should be set again after callback call. Signed-off-by:
Devendar Bureddy <devendar@mellanox.com> Signed-off-by:
Igor Ivanov <Igor.Ivanov@itseez.com> Signed-off-by:
Wesley Bland <wbland@anl.gov>
-
- 08 Feb, 2015 5 commits
-
-
Xin Zhao authored
The entire "read-modify-write" should be atomic for CAS, FOP and GACC operations. This patch adds corresponding tests for them. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
FOP, CAS and GACC are atomic "read-modify-write" operations, which means when the target window is defined on a SHM region, we need inter-process lock to guarantee the atomicity of the entire "read+OP". The current implementation is correct for SHM-based RMA operations, but not correct for AM-based RMA operations: for SHM-based operations, it protects the entire "read+OP", but for AM-based operations, it only protects the "OP" part. This patch fixes this issue by protecting the memory copy to temporary buffer and computation together for AM-based operations. Fix ticket 2226 Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
In commit 7d71278, if node_comm is NULL (only self process is on that node), we call allocate_no_shm() in CH3 to allocate window. If node_comm is not NULL (more than one process is on the same node), we call allocate_shm() in Nemesis to allocate SHM window. However, the exchanged information amount (in MPI_Allgather) is different in allocate_no_shm() and allocate_shm(), which leads to wrong execution when both SHM window and non-SHM window exist. This patch fixes this issue. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
Xin Zhao authored
We allocate / free SHM regions only when node_comm exists, which means there are more than one processes on the same node. When node_comm is NULL (only self process is on that node), we call default allocate / free functions in CH3. (Please refer to commit f02eed5b ) Here we delete unnecessary code dealing with node_comm being NULL in SHM allocate / free functions. Signed-off-by:
Pavan Balaji <balaji@anl.gov>
-
- 05 Feb, 2015 1 commit
-
-
Rajeev Thakur authored
code of MPIU_Strncpy. Added test program. Closes #2225 Signed-off-by:
William Gropp <wgropp@illinois.edu>
-
- 04 Feb, 2015 3 commits
-
-
Wesley Bland authored
Some of the MPIX functions did not have weak symbols set up correctly which causes problems on some compilers (Pathscale). This patch adds the correct attribute for all of them that were missing. Signed-off-by:
Ken Raffenetti <raffenet@mcs.anl.gov>
-
Kenneth Raffenetti authored
Merges the existing send callbacks into a single function. Uses the completion counter to track remaining operations and complete the request once finished. Signed-off-by:
Antonio Pena Monferrer <apenya@mcs.anl.gov>
-
Kenneth Raffenetti authored
Signed-off-by:
Antonio Pena Monferrer <apenya@mcs.anl.gov>
-
- 03 Feb, 2015 2 commits
-
-
set by type_create_resized are not sticky. Changes darray and subarray types to use type_create_resized instead of type_struct with explicit lb/ub, because explicit MPI_LB/MPI_UB have been removed from MPI in MPI-3 and they also cause other problems because they were defined to be sticky in MPI-1. Fixes type_create_struct, which was incorrectly setting lb and ub to true_lb and true_ub in the non-sticky case. Closes #2218 Closes #2220 Closes #2224 Signed-off-by:
Rob Latham <robl@mcs.anl.gov>
-
Wesley Bland authored
The errflag in the request object is used in common code and should not have been put in device specific code. This moves it up to the MPI_Request object. Signed-off-by:
Sameh Sharkawi <sssharka@us.ibm.com>
-
- 02 Feb, 2015 1 commit
-
-
Wesley Bland authored
This include was present but commented out. Normally, it wasn't needed, but to pick up the definition of MPIX_ERR_PROC_FAILED correctly, it needs to be there. No reviewer
-
- 31 Jan, 2015 1 commit
-
-
Wesley Bland authored
The previous commits didn't take into account empty requests when extracting the status. It also introduced a dumb bug that didn't get tested first about a null pointer check. Signed-off-by:
Junchao Zhang <jczhang@mcs.anl.gov>
-
- 30 Jan, 2015 8 commits
-
-
Wesley Bland authored
The error code set in the status was being ignored for NBC and one-sided requests (which wasn't right anyway so it didn't matter). This grabs the error code from the status now. Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
The scheduler functions now use MPIC_* functions to handle their communication instead of directly calling the MPID_* functions. This helps to simplify code related to error handling and allows the collectives to complete even if a failure is detected because the error will be tracked via the errflag inside the request object. Fixes #2222 Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
Non-blocking communication requests need a way to track whether an error has occurred in a previous part of the NBC schedule. This adds an errflag to the request object itself so the tracking is possible. Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
Having mpir_errflag_t defined in mpiimpl.h causes a problem if it needs to be used in some other headers. This moves the definition to mpitypedefs.h so it can be used elsewhere. Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
Part of converting the NBC code to use the MPIC_* functions requires an MPIC_Issend function to exist. This adds it. Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
The MPIC helper functions have been using MPI_Comm and MPI_Request objects instead of their MPID_* counterparts. This leads to a bunch of unnecessary conversions back and forth between the two types of objects and makes the work incompatible with other parts of the codebase (non-blocking collectives for instance). This patch converts all of the MPIC_* functions to use MPID_Comm and MPID_Request and changes all of the collective calls to use them now too. Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-
Wesley Bland authored
The collective helper functions generally have an errflag that is used when a failure is detected to allow the collective to continue while also communicating that a failure occurred. That flag is now included as a parameter for MPIC_Wait. The rest of this commit is the refactoring necessary in the rest of the helper functions to support the change. Signed-off-by:
Huiwei Lu <huiweilu@mcs.anl.gov>
-