Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
update collectives teshsuite from mpich git (only minor changes)
[simgrid.git] / teshsuite / smpi / mpich3-test / coll / redscat3.c
index 9d3b7ad..3ebf0be 100644 (file)
@@ -83,22 +83,28 @@ int main( int argc, char **argv )
        }
     }
 
+#if MTEST_HAVE_MIN_MPI_VERSION(2,2)
     MPI_Reduce_scatter( MPI_IN_PLACE, sendbuf, recvcounts, MPI_INT, MPI_SUM, 
                        comm );
 
     sumval = size * rank + ((size - 1) * size)/2;
     /* recv'ed values for my process should be size * (rank + i) */
     for (i=0; i<mycount; i++) {
-       if (sendbuf[i] != sumval) {
-           err++;
-           if (err < MAX_ERRORS) {
-               fprintf( stdout, "Did not get expected value for reduce scatter (in place)\n" );
-               fprintf( stdout, "[%d] Got buf[%d] = %d expected %d\n", 
-                        rank, i, sendbuf[rank*mycount+i], sumval );
-           }
-       }
+        if (sendbuf[i] != sumval) {
+            err++;
+            if (err < MAX_ERRORS) {
+                fprintf( stdout, "Did not get expected value for reduce scatter (in place)\n" );
+                fprintf( stdout, "[%d] Got buf[%d] = %d expected %d\n",
+                    rank, i, sendbuf[i], sumval );
+            }
+        }
     }
 
+    MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+    if (MPI_SUCCESS == MPI_Reduce_scatter(sendbuf, sendbuf, recvcounts, MPI_INT, MPI_SUM, comm))
+        err++;
+#endif
+
     free(sendbuf);
     free(recvbuf);
     free(recvcounts);