int *recvcounts = NULL;
int *sdispls = NULL;
int *rdispls = NULL;
- int *sendtypes = NULL;
- int *recvtypes = NULL;
+ MPI_Datatype *sendtypes = NULL;
+ MPI_Datatype *recvtypes = NULL;
signed char *buf_alias = NULL;
MPI_Request req;
/* same again, use a user op and free it before the wait */
{
MPI_Op op = MPI_OP_NULL;
- MPI_Op_create(sum_fn, /*commute= */ 1, &op);
-
+ MPI_Op_create(sum_fn, 1, &op);
for (i = 0; i < COUNT; ++i) {
buf[i] = rank + i;
recvbuf[i] = 0xdeadbeef;
}
/* 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) {
+/* 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);
- }
- }
+/* 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) {
MPI_Wait(&req, MPI_STATUS_IGNORE);
for (i = 0; i < size; ++i) {
for (j = 0; j < COUNT; ++j) {
- /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (rank * j))); */
+/* printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (rank * j))); */
my_assert(recvbuf[i * COUNT + j] == (i + (rank * j)));
}
}