- p = recvbuf;
- for (j=0; j<size; j++) {
- for (i=0; i<count; i++) {
- if (*p != rank * size + j + i) {
- errs++;
- if (errs < 10) {
- fprintf( stderr, "Error with communicator %s and size=%d count=%d\n",
- MTestGetIntracommName(), size, count );
- fprintf( stderr, "recvbuf[%d,%d] = %d, should %d\n",
- j,i, *p, rank * size + j + i );
- }
- }
- p++;
- }
- }
+ if (!sendbuf || !recvbuf) {
+ errs++;
+ fprintf(stderr, "Failed to allocate sendbuf and/or recvbuf\n");
+ MPI_Abort(MPI_COMM_WORLD, 1);
+ }
+ for (i = 0; i < count * size; i++)
+ recvbuf[i] = -1;
+ p = sendbuf;
+ for (j = 0; j < size; j++) {
+ for (i = 0; i < count; i++) {
+ *p++ = j * size + rank + i;
+ }
+ }
+
+ MTest_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
+
+ p = recvbuf;
+ for (j = 0; j < size; j++) {
+ for (i = 0; i < count; i++) {
+ if (*p != rank * size + j + i) {
+ errs++;
+ if (errs < 10) {
+ fprintf(stderr, "Error with communicator %s and size=%d count=%d\n",
+ MTestGetIntracommName(), size, count);
+ fprintf(stderr, "recvbuf[%d,%d] = %d, should %d\n",
+ j, i, *p, rank * size + j + i);
+ }
+ }
+ p++;
+ }
+ }