if (rank == 0) {
for (i = 0; i < COUNT; ++i) {
if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size)))
- printf("aa got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i],
+ printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i],
((size * (size - 1) / 2) + (i * size)));
my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size)));
}
}
/* MPI_Iallreduce */
-/* for (i = 0; i < COUNT; ++i) {*/
-/* buf[i] = rank + i;*/
-/* recvbuf[i] = 0xdeadbeef;*/
-/* }*/
-/* MPI_Iallreduce(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);*/
-/* MPI_Wait(&req, MPI_STATUS_IGNORE);*/
-/* for (i = 0; i < COUNT; ++i) {*/
-/* if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size)))*/
-/* printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i],*/
-/* ((size * (size - 1) / 2) + (i * size)));*/
-/* my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size)));*/
-/* }*/
+ for (i = 0; i < COUNT; ++i) {
+ buf[i] = rank + i;
+ recvbuf[i] = 0xdeadbeef;
+ }
+ MPI_Iallreduce(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);
+ MPI_Wait(&req, MPI_STATUS_IGNORE);
+ for (i = 0; i < COUNT; ++i) {
+ if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size)))
+ printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i],
+ ((size * (size - 1) / 2) + (i * size)));
+ my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size)));
+ }
/* MPI_Ialltoallv (a weak test, neither irregular nor sparse) */
for (i = 0; i < size; ++i) {
}
/* MPI_Ireduce_scatter */
-/* for (i = 0; i < size; ++i) {*/
-/* recvcounts[i] = COUNT;*/
-/* for (j = 0; j < COUNT; ++j) {*/
-/* buf[i * COUNT + j] = rank + i;*/
-/* recvbuf[i * COUNT + j] = 0xdeadbeef;*/
-/* }*/
-/* }*/
-/* MPI_Ireduce_scatter(buf, recvbuf, recvcounts, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);*/
-/* MPI_Wait(&req, MPI_STATUS_IGNORE);*/
-/* for (j = 0; j < COUNT; ++j) {*/
-/* my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2));*/
-/* }*/
-/* for (i = 1; i < size; ++i) {*/
-/* for (j = 0; j < COUNT; ++j) {*/
- /* check we didn't corrupt the rest of the recvbuf */
-/* my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef);*/
-/* }*/
-/* }*/
+ for (i = 0; i < size; ++i) {
+ recvcounts[i] = COUNT;
+ for (j = 0; j < COUNT; ++j) {
+ buf[i * COUNT + j] = rank + i;
+ recvbuf[i * COUNT + j] = 0xdeadbeef;
+ }
+ }
+ MPI_Ireduce_scatter(buf, recvbuf, recvcounts, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);
+ MPI_Wait(&req, MPI_STATUS_IGNORE);
+ for (j = 0; j < COUNT; ++j) {
+ my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2));
+ }
+ for (i = 1; i < size; ++i) {
+ for (j = 0; j < COUNT; ++j) {
+/* check we didn't corrupt the rest of the recvbuf */
+ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef);
+ }
+ }
/* MPI_Ireduce_scatter_block */
-/* for (i = 0; i < size; ++i) {*/
-/* for (j = 0; j < COUNT; ++j) {*/
-/* buf[i * COUNT + j] = rank + i;*/
-/* recvbuf[i * COUNT + j] = 0xdeadbeef;*/
-/* }*/
-/* }*/
-/* MPI_Ireduce_scatter_block(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);*/
-/* MPI_Wait(&req, MPI_STATUS_IGNORE);*/
-/* for (j = 0; j < COUNT; ++j) {*/
-/* my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2));*/
-/* }*/
-/* for (i = 1; i < size; ++i) {*/
-/* for (j = 0; j < COUNT; ++j) {*/
+ for (i = 0; i < size; ++i) {
+ for (j = 0; j < COUNT; ++j) {
+ buf[i * COUNT + j] = rank + i;
+ recvbuf[i * COUNT + j] = 0xdeadbeef;
+ }
+ }
+ MPI_Ireduce_scatter_block(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);
+ MPI_Wait(&req, MPI_STATUS_IGNORE);
+ for (j = 0; j < COUNT; ++j) {
+ my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2));
+ }
+ for (i = 1; i < size; ++i) {
+ for (j = 0; j < COUNT; ++j) {
/* check we didn't corrupt the rest of the recvbuf */
-/* my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef);*/
-/* }*/
-/* }*/
+ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef);
+ }
+ }
/* MPI_Igatherv */
for (i = 0; i < size * COUNT; ++i) {
}
/* MPI_Iscan */
-/* for (i = 0; i < COUNT; ++i) {*/
-/* buf[i] = rank + i;*/
-/* recvbuf[i] = 0xdeadbeef;*/
-/* }*/
-/* MPI_Iscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);*/
-/* MPI_Wait(&req, MPI_STATUS_IGNORE);*/
-/* for (i = 0; i < COUNT; ++i) {*/
-/* my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1))));*/
-/* }*/
+ for (i = 0; i < COUNT; ++i) {
+ buf[i] = rank + i;
+ recvbuf[i] = 0xdeadbeef;
+ }
+ MPI_Iscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);
+ MPI_Wait(&req, MPI_STATUS_IGNORE);
+ for (i = 0; i < COUNT; ++i) {
+ my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1))));
+ }
/* MPI_Iexscan */
-/* for (i = 0; i < COUNT; ++i) {*/
-/* buf[i] = rank + i;*/
-/* recvbuf[i] = 0xdeadbeef;*/
-/* }*/
-/* MPI_Iexscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);*/
-/* MPI_Wait(&req, MPI_STATUS_IGNORE);*/
-/* for (i = 0; i < COUNT; ++i) {*/
-/* if (rank == 0)*/
-/* my_assert(recvbuf[i] == 0xdeadbeef);*/
-/* else*/
-/* my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1)) - (rank + i)));*/
-/* }*/
+ for (i = 0; i < COUNT; ++i) {
+ buf[i] = rank + i;
+ recvbuf[i] = 0xdeadbeef;
+ }
+ MPI_Iexscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req);
+ MPI_Wait(&req, MPI_STATUS_IGNORE);
+ for (i = 0; i < COUNT; ++i) {
+ if (rank == 0)
+ my_assert(recvbuf[i] == 0xdeadbeef);
+ else
+ my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1)) - (rank + i)));
+ }
/* MPI_Ialltoallw (a weak test, neither irregular nor sparse) */
for (i = 0; i < size; ++i) {