[mpich2-commits] r6742 - mpich2/trunk/src/mpid/ch3/src
thakur at mcs.anl.gov
thakur at mcs.anl.gov
Tue May 25 14:39:50 CDT 2010
Author: thakur
Date: 2010-05-25 14:39:49 -0500 (Tue, 25 May 2010)
New Revision: 6742
Modified:
mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c
mpich2/trunk/src/mpid/ch3/src/ch3u_rma_sync.c
Log:
update RMA implementation to use Reduce_scatter_block instead of Reduce_scatter
Modified: mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c
===================================================================
--- mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c 2010-05-25 19:36:12 UTC (rev 6741)
+++ mpich2/trunk/src/mpid/ch3/src/ch3u_rma_ops.c 2010-05-25 19:39:49 UTC (rev 6742)
@@ -121,10 +121,8 @@
#define FCNAME MPIDI_QUOTE(FUNCNAME)
int MPIDI_Win_free(MPID_Win **win_ptr)
{
- int mpi_errno=MPI_SUCCESS, total_pt_rma_puts_accs, i, *recvcnts, comm_size;
- MPID_Comm *comm_ptr;
+ int mpi_errno=MPI_SUCCESS, total_pt_rma_puts_accs;
int in_use;
- MPIU_CHKLMEM_DECL(1);
MPIU_THREADPRIV_DECL;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_WIN_FREE);
@@ -134,17 +132,8 @@
MPIU_THREADPRIV_GET;
MPIR_Nest_incr();
- /* set up the recvcnts array for the reduce scatter to check if all
- passive target rma operations are done */
- MPID_Comm_get_ptr( (*win_ptr)->comm, comm_ptr );
- comm_size = comm_ptr->local_size;
-
- MPIU_CHKLMEM_MALLOC(recvcnts, int *, comm_size*sizeof(int), mpi_errno,
- "recvcnts");
- for (i=0; i<comm_size; i++) recvcnts[i] = 1;
-
- mpi_errno = NMPI_Reduce_scatter((*win_ptr)->pt_rma_puts_accs,
- &total_pt_rma_puts_accs, recvcnts,
+ mpi_errno = NMPI_Reduce_scatter_block((*win_ptr)->pt_rma_puts_accs,
+ &total_pt_rma_puts_accs, 1,
MPI_INT, MPI_SUM, (*win_ptr)->comm);
if (mpi_errno) { MPIU_ERR_POP(mpi_errno); }
@@ -182,7 +171,6 @@
fn_exit:
MPIR_Nest_decr();
- MPIU_CHKLMEM_FREEALL();
MPIDI_RMA_FUNC_EXIT(MPID_STATE_MPIDI_WIN_FREE);
return mpi_errno;
Modified: mpich2/trunk/src/mpid/ch3/src/ch3u_rma_sync.c
===================================================================
--- mpich2/trunk/src/mpid/ch3/src/ch3u_rma_sync.c 2010-05-25 19:36:12 UTC (rev 6741)
+++ mpich2/trunk/src/mpid/ch3/src/ch3u_rma_sync.c 2010-05-25 19:39:49 UTC (rev 6742)
@@ -46,7 +46,7 @@
int MPIDI_Win_fence(int assert, MPID_Win *win_ptr)
{
int mpi_errno = MPI_SUCCESS;
- int comm_size, done, *recvcnts;
+ int comm_size, done;
int *rma_target_proc, *nops_to_proc, i, total_op_count, *curr_ops_cnt;
MPIDI_RMA_ops *curr_ptr, *next_ptr;
MPID_Comm *comm_ptr;
@@ -55,7 +55,7 @@
MPIDI_RMA_dtype_info *dtype_infos=NULL;
void **dataloops=NULL; /* to store dataloops for each datatype */
MPID_Progress_state progress_state;
- MPIU_CHKLMEM_DECL(7);
+ MPIU_CHKLMEM_DECL(6);
MPIU_THREADPRIV_DECL;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_WIN_FENCE);
@@ -158,21 +158,15 @@
for (i=0; i<total_op_count; i++) dataloops[i] = NULL;
}
- /* do a reduce_scatter (with MPI_SUM) on rma_target_proc. As a result,
+ /* do a reduce_scatter_block (with MPI_SUM) on rma_target_proc. As a result,
each process knows how many other processes will be doing
RMA ops on its window */
/* first initialize the completion counter. */
win_ptr->my_counter = comm_size;
- /* set up the recvcnts array for reduce scatter */
- MPIU_CHKLMEM_MALLOC(recvcnts, int *, comm_size*sizeof(int),
- mpi_errno, "recvcnts");
- for (i=0; i<comm_size; i++) recvcnts[i] = 1;
-
MPIR_Nest_incr();
- mpi_errno = NMPI_Reduce_scatter(MPI_IN_PLACE, rma_target_proc,
- recvcnts,
+ mpi_errno = NMPI_Reduce_scatter_block(MPI_IN_PLACE, rma_target_proc, 1,
MPI_INT, MPI_SUM, win_ptr->comm);
/* result is stored in rma_target_proc[0] */
MPIR_Nest_decr();
More information about the mpich2-commits
mailing list