Bug Fixes in that allow groups to be created from communicators.
authorIsaac Dooley <idooley2@illinois.edu>
Fri, 30 Jan 2009 00:02:43 +0000 (00:02 +0000)
committerIsaac Dooley <idooley2@illinois.edu>
Fri, 30 Jan 2009 00:02:43 +0000 (00:02 +0000)
src/libs/ck-libs/ampi/ampi.C
src/libs/ck-libs/ampi/ampi.h

index 530ae0de44d204a3d6537ae97ef12a90d988991e..0c815c4015f373f08c77c82a12f51a9c62b95976 100644 (file)
@@ -617,7 +617,7 @@ static ampi *ampiInit(char **argv)
                CkAbort("AMPI> Number of registered comm_worlds exceeded limit.\n");
        }
        int new_idx=mpi_nworlds;
-       new_world=MPI_COMM_WORLD+1+new_idx;
+       new_world=MPI_COMM_WORLD+new_idx; // Isaac guessed there shouldn't be a +1 here
 
         //Create and attach the ampiParent array
         CkArrayID threads;
@@ -700,7 +700,7 @@ public:
     ampiWorlds(CkMigrateMessage *m): CBase_ampiWorlds(m) {}
     void pup(PUP::er &p)  { CBase_ampiWorlds::pup(p); }
     void add(const ampiCommStruct &nextWorld) {
-        int new_idx=nextWorld.getComm()-(MPI_COMM_WORLD+1);
+      int new_idx=nextWorld.getComm()-(MPI_COMM_WORLD); // Isaac guessed there shouldn't be a +1 after the MPI_COMM_WORLD
         mpi_worlds[new_idx].comm=nextWorld;
        if (mpi_nworlds<=new_idx) mpi_nworlds=new_idx+1;
        STARTUP_DEBUG("ampiInit> listed MPI_COMM_UNIVERSE "<<new_idx)
index 0bd43dc0e495d1e777fdd6c25eff185e961614a0..e4590a8514b5e2b4fcc64880c9b06b20f3ed55fe 100644 (file)
@@ -186,7 +186,12 @@ the real (non-virtual) processors. */
 #define AMPI_KEYVAL_NUMNODES -17
 
 
+/** Communicators give a communication context to a set of processors.
+    An intercommunicator can be used for point to point messaging between two groups.
+    An intracommunicator can be used to send messages within a single group. */
 typedef int MPI_Comm;
+
+/** Groups represent an set of processors 0...n-1. They can be created locally */
 typedef int MPI_Group;
 
 #define MPI_COMM_FIRST_SPLIT (MPI_Comm)(1000000) /*Communicator from MPI_Comm_split */