- 13 Feb, 2015 10 commits
-
-
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>
-
- 27 Jan, 2015 2 commits
-
-
Jithin Jose authored
Signed-off-by:
Charles J Archer <charles.j.archer@intel.com>
-
Kenneth Raffenetti authored
The tag for send was ignored and recvtag incorrectly used in its place. Signed-off-by:
Wesley Bland <wbland@anl.gov>
-
- 23 Jan, 2015 3 commits
-
-
HDF5 folks reported a bug with ROMIO and one of their slightly-strange (but 100% legal) datatypes. git-bisect points to the "promote size of length" change. Seems that MPICH does not like struct datatypes with zero-count elements? Further investigation requred. This change (construct a simpler datatype in more cases) is sufficient to help HDF5 move forward. See #2221 Signed-off-by:
Ken Raffenetti <raffenet@mcs.anl.gov>
-
many many places where a 64 bit value is stored in a 32 bit value Signed-off-by:
Ken Raffenetti <raffenet@mcs.anl.gov>
-
- bump up subtypes from 3 to 6. The limit is arbitrary. I am trying to figure out a type with 4 sub-types. - split up indexed/hindexed lists onto separate lines. MPICH debug output format adds its own newlines, but we have to clean out MPICH's extra debug output anyway: joining a few lines isn't that much more work. - output a name of the digraph that graphviz can actually parse. Signed-off-by:
Ken Raffenetti <raffenet@mcs.anl.gov>
-
- 22 Jan, 2015 1 commit
-
-
Huiwei Lu authored
When process fails, fault tolerance scheme takes a different path to deal with MPI object reference counts than the existing one. Some reference counts were not properly set in FT path so when configured with --enable-g=all, some ft tests will show leaked context id, dirty COMM, GROUP and REQUEST objects and so on when exit. This patch fixes ft/shrink and ft/agree with "--enable-g=all". Stack allocated objects of requests, communicators and groups will be freed by FT. Signed-off-by:
Wesley Bland <wbland@anl.gov>
-