AMPI FIX: Alltoall recursive doubling algo for small message requires in-order AMPI...
authorGengbin Zheng <gzheng@illinois.edu>
Sun, 18 Mar 2012 17:13:12 +0000 (10:13 -0700)
committerGengbin Zheng <gzheng@illinois.edu>
Sun, 18 Mar 2012 17:13:12 +0000 (10:13 -0700)
src/libs/ck-libs/ampi/ampi.C
src/libs/ck-libs/ampi/ampiimpl.h

index 105e8070acd3ed31fcf007418564edd6bcb873d6..2e8f78353fd41b7608e2ee7c6f7f678d440c0968 100644 (file)
@@ -1934,7 +1934,7 @@ AmpiMsg *ampi::makeAmpiMsg(int destIdx,
   int len = ddt->getSize(count);
   int sIdx=thisIndex;
   int seq = -1;
-  if (destIdx>=0 && destcomm<=MPI_COMM_WORLD && t<=MPI_TAG_UB_VALUE) //Not cross-module: set seqno
+  if (destIdx>=0 && destcomm<=MPI_COMM_WORLD && t<=MPI_ATA_SEQ_TAG) //Not cross-module: set seqno
     seq = oorder.nextOutgoing(destIdx);
   AmpiMsg *msg = new (len, 0) AmpiMsg(seq, t, sIdx, sRank, len, destcomm);
   if (sync) UsrToEnv(msg)->setRef(sync);
@@ -4837,11 +4837,11 @@ int AMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype,
         MPI_Sendrecv(((char *)tmp_buf +
               my_tree_root*sendbuf_extent),
             curr_cnt, sendtype,
-            dst, MPI_ATA_TAG, 
+            dst, MPI_ATA_SEQ_TAG, 
             ((char *)tmp_buf +
              dst_tree_root*sendbuf_extent),
             sendcount*comm_size*mask,
-            sendtype, dst, MPI_ATA_TAG, 
+            sendtype, dst, MPI_ATA_SEQ_TAG, 
             comm, &status);
 
         /* in case of non-power-of-two nodes, less data may be
@@ -4889,7 +4889,7 @@ int AMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype,
             MPI_Send(((char *)tmp_buf +
                   dst_tree_root*sendbuf_extent),
                 last_recv_cnt, sendtype,
-                dst, MPI_ATA_TAG,
+                dst, MPI_ATA_SEQ_TAG,
                 comm);  
           }
           /* recv only if this proc. doesn't have data and sender
@@ -4901,7 +4901,7 @@ int AMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype,
                   dst_tree_root*sendbuf_extent),
                 sendcount*comm_size*mask, 
                 sendtype,   
-                dst, MPI_ATA_TAG,
+                dst, MPI_ATA_SEQ_TAG,
                 comm, &status); 
             MPI_Get_count(&status, sendtype, &last_recv_cnt);
             curr_cnt += last_recv_cnt;
index 46a25b8474cc8ea0e17dbb3f5b450294063fcd64..60cc61f3116f997d3e0e4eea7672ad79c130637c 100644 (file)
@@ -516,6 +516,7 @@ inline groupStruct rangeExclOp(int n, int ranges[][3], groupStruct vec){
 
 extern int _mpi_nworlds;
 
+#define MPI_ATA_SEQ_TAG        MPI_TAG_UB_VALUE+1
 #define MPI_BCAST_TAG   MPI_TAG_UB_VALUE+10
 #define MPI_BARR_TAG    MPI_TAG_UB_VALUE+11
 #define MPI_REDUCE_TAG  MPI_TAG_UB_VALUE+12