[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2b4-80-g4096fe9

Service Account noreply at mpich.org
Thu Aug 6 13:40:20 CDT 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  4096fe9f4d97ce54244995c5e459e26637be272f (commit)
       via  24a5f95441047c9c5c8738d0c7515355fe81bd82 (commit)
      from  6b640b5f0aa5886add15e38c6eb77e41196605f7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/4096fe9f4d97ce54244995c5e459e26637be272f

commit 4096fe9f4d97ce54244995c5e459e26637be272f
Author: Huiwei Lu <huiweilu at mcs.anl.gov>
Date:   Thu Aug 6 10:58:54 2015 -0500

    Deprecate single-threaded MPIR_Get_contextid_sparse_group
    
    The single-threaded MPIR_Get_contextid_sparse_group is outdated and
    buggy, which does not consider the overlapping use of itself and
    MPI_Comm_idup. The multi-threaded implementation has already fixed that
    and has better error handling, there is no reason to still keep the
    single-threaded version.
    
    Fixes #2295, #2297
    
    Signed-off-by: Lena Oden <loden at anl.gov>

diff --git a/src/mpi/comm/commutil.c b/src/mpi/comm/commutil.c
index 2b6bd31..dee8775 100644
--- a/src/mpi/comm/commutil.c
+++ b/src/mpi/comm/commutil.c
@@ -975,98 +975,6 @@ static volatile int mask_in_use     = 0;
 static volatile int lowestContextId = MPIR_MAXID;
 static volatile int lowestTag       = -1;
 
-#ifndef MPICH_IS_THREADED
-/* Unthreaded (only one MPI call active at any time) */
-
-#undef FUNCNAME
-#define FUNCNAME MPIR_Get_contextid_sparse
-#undef FCNAME
-#define FCNAME MPIU_QUOTE(FUNCNAME)
-int MPIR_Get_contextid_sparse(MPID_Comm *comm_ptr, MPIR_Context_id_t *context_id, int ignore_id)
-{
-    return MPIR_Get_contextid_sparse_group(comm_ptr, NULL /* group_ptr */, MPIR_Process.attrs.tag_ub /* tag */, context_id, ignore_id);
-}
-
-#undef FUNCNAME
-#define FUNCNAME MPIR_Get_contextid_sparse_group
-#undef FCNAME
-#define FCNAME MPIU_QUOTE(FUNCNAME)
-int MPIR_Get_contextid_sparse_group(MPID_Comm *comm_ptr, MPID_Group *group_ptr, int tag, MPIR_Context_id_t *context_id, int ignore_id)
-{
-    int mpi_errno = MPI_SUCCESS;
-    uint32_t     local_mask[MPIR_MAX_CONTEXT_MASK];
-    mpir_errflag_t errflag = MPIR_ERR_NONE;
-    int seqnum = 0;
-    if (comm_ptr->idup_count)
-        seqnum = comm_ptr->idup_curr_seqnum++;
-    MPID_MPI_STATE_DECL(MPID_STATE_MPIR_GET_CONTEXTID);
-
-    MPID_MPI_FUNC_ENTER(MPID_STATE_MPIR_GET_CONTEXTID);
-
-    *context_id = 0;
-
-    while (*context_id == 0) {
-        if (initialize_context_mask) {
-            MPIR_Init_contextid();
-        }
-
-        if (ignore_id) {
-            /* We are not participating in the resulting communicator, so our
-             * context ID space doesn't matter.  Set the mask to "all available". */
-            memset(local_mask, 0xff, MPIR_MAX_CONTEXT_MASK * sizeof(int));
-        }
-        else if (comm_ptr->idup_count && seqnum != comm_ptr->idup_next_seqnum) {
-            memset(local_mask, 0, MPIR_MAX_CONTEXT_MASK * sizeof(int));
-        }
-        else {
-            MPIU_Memcpy(local_mask, context_mask, MPIR_MAX_CONTEXT_MASK * sizeof(int));
-        }
-
-        /* Note that this is the unthreaded version */
-        /* Comm must be an intracommunicator */
-        if (group_ptr != NULL) {
-            int coll_tag = tag | MPIR_Process.tagged_coll_mask; /* Shift tag into the tagged coll space */
-            mpi_errno = MPIR_Allreduce_group(MPI_IN_PLACE, local_mask, MPIR_MAX_CONTEXT_MASK,
-                                             MPI_INT, MPI_BAND, comm_ptr, group_ptr, coll_tag, &errflag);
-        } else {
-            mpi_errno = MPIR_Allreduce_impl(MPI_IN_PLACE, local_mask, MPIR_MAX_CONTEXT_MASK,
-                                            MPI_INT, MPI_BAND, comm_ptr, &errflag);
-        }
-
-        if (mpi_errno) MPIU_ERR_POP(mpi_errno);
-        MPIU_ERR_CHKANDJUMP(errflag, mpi_errno, MPI_ERR_OTHER, "**coll_fail");
-
-        if (ignore_id) {
-            *context_id = MPIR_Locate_context_bit(local_mask);
-            if (*context_id == 0) {
-                int nfree = -1;
-                int ntotal = -1;
-                MPIR_ContextMaskStats(&nfree, &ntotal);
-                MPIU_ERR_SETANDJUMP3(mpi_errno, MPI_ERR_OTHER,
-                                     "**toomanycomm", "**toomanycomm %d %d %d",
-                                     nfree, ntotal, ignore_id);
-            }
-        }
-        else {
-            *context_id = MPIR_Find_and_allocate_context_id(local_mask);
-        }
-    }
-    if (seqnum > 0)
-        comm_ptr->idup_next_seqnum++;
-
-fn_exit:
-    if (ignore_id)
-        *context_id = MPIR_INVALID_CONTEXT_ID;
-    MPIU_DBG_MSG_S(COMM,VERBOSE,"Context mask = %s",MPIR_ContextMaskToStr());
-
-    MPID_MPI_FUNC_EXIT(MPID_STATE_MPIR_GET_CONTEXTID);
-    return mpi_errno;
-fn_fail:
-    goto fn_exit;
-}
-
-#else /* MPICH_IS_THREADED is set and true */
-
 #undef FUNCNAME
 #define FUNCNAME MPIR_Get_contextid_sparse
 #undef FCNAME
@@ -1354,8 +1262,6 @@ fn_fail:
     /* --END ERROR HANDLING-- */
 }
 
-#endif
-
 struct gcn_state {
     MPIR_Context_id_t *ctx0;
     MPIR_Context_id_t *ctx1;

http://git.mpich.org/mpich.git/commitdiff/24a5f95441047c9c5c8738d0c7515355fe81bd82

commit 24a5f95441047c9c5c8738d0c7515355fe81bd82
Author: Huiwei Lu <huiweilu at mcs.anl.gov>
Date:   Wed Aug 5 13:07:25 2015 -0500

    Fixing a copy-paste error in comm_idup_comm2
    
    comm_idup_comm2.c is copied from comm_idup_comm.c, while modifing it to
    do overlapping communicator operations on a separate communicator.
    However, the group related to the separate communicator was not changed
    accordingly, thus causes a user error in MPI_Comm_create_group.
    
    Ref #2295
    
    Signed-off-by: Lena Oden <loden at anl.gov>

diff --git a/test/mpi/comm/comm_idup_comm2.c b/test/mpi/comm/comm_idup_comm2.c
index dd476dc..bf70824 100644
--- a/test/mpi/comm/comm_idup_comm2.c
+++ b/test/mpi/comm/comm_idup_comm2.c
@@ -22,7 +22,7 @@ int main(int argc, char **argv)
     int *excl;
     int ranges[1][3];
     int isLeft, rleader;
-    MPI_Group world_group, high_group, even_group;
+    MPI_Group dup_group, high_group, even_group;
     MPI_Comm local_comm, inter_comm, test_comm, outcomm, dupcomm;
     MPI_Comm idupcomms[NUM_IDUPS];
     MPI_Request reqs[NUM_IDUPS];
@@ -30,8 +30,8 @@ int main(int argc, char **argv)
     MTest_Init(&argc, &argv);
     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
     MPI_Comm_size(MPI_COMM_WORLD, &size);
-    MPI_Comm_group(MPI_COMM_WORLD, &world_group);
     MPI_Comm_dup(MPI_COMM_WORLD, &dupcomm);
+    MPI_Comm_group(dupcomm, &dup_group);
 
     if (size < 2) {
         printf("this test requires at least 2 processes\n");
@@ -59,7 +59,7 @@ int main(int argc, char **argv)
     ranges[0][0] = size / 2;
     ranges[0][1] = size - 1;
     ranges[0][2] = 1;
-    MPI_Group_range_incl(world_group, 1, ranges, &high_group);
+    MPI_Group_range_incl(dup_group, 1, ranges, &high_group);
     MPI_Comm_create(dupcomm, high_group, &outcomm);
     MPI_Group_free(&high_group);
     errs += MTestTestComm(outcomm);
@@ -71,7 +71,7 @@ int main(int argc, char **argv)
     for (i = 0; i < size / 2; i++)
         excl[i] = (2 * i) + 1;
 
-    MPI_Group_excl(world_group, size / 2, excl, &even_group);
+    MPI_Group_excl(dup_group, size / 2, excl, &even_group);
     free(excl);
 
     if (rank % 2 == 0) {
@@ -115,7 +115,7 @@ int main(int argc, char **argv)
         MPI_Comm_free(&idupcomms[i]);
     }
 
-    MPI_Group_free(&world_group);
+    MPI_Group_free(&dup_group);
     MPI_Comm_free(&dupcomm);
 
     MTest_Finalize(errs);

-----------------------------------------------------------------------

Summary of changes:
 src/mpi/comm/commutil.c         |   94 ---------------------------------------
 test/mpi/comm/comm_idup_comm2.c |   10 ++--
 2 files changed, 5 insertions(+), 99 deletions(-)


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list