void
AllocateBuffers(bufferspace, buffertypes, num_types, bufferlen)
- void **bufferspace;
- MPI_Datatype *buffertypes;
- int num_types;
- int bufferlen;
+ void **bufferspace;
+ MPI_Datatype *buffertypes;
+ int num_types;
+ int bufferlen;
{
- int i;
- for (i = 0; i < ntypes; i++) {
- if (buffertypes[i] == MPI_CHAR)
+ int i;
+ for (i = 0; i < ntypes; i++) {
+ if (buffertypes[i] == MPI_CHAR)
bufferspace[i] = malloc(bufferlen * sizeof(char));
- else if (buffertypes[i] == MPI_SHORT)
+ else if (buffertypes[i] == MPI_SHORT)
bufferspace[i] = malloc(bufferlen * sizeof(short));
- else if (buffertypes[i] == MPI_INT)
+ else if (buffertypes[i] == MPI_INT)
bufferspace[i] = malloc(bufferlen * sizeof(int));
- else if (buffertypes[i] == MPI_LONG)
+ else if (buffertypes[i] == MPI_LONG)
bufferspace[i] = malloc(bufferlen * sizeof(long));
- else if (buffertypes[i] == MPI_UNSIGNED_CHAR)
+ else if (buffertypes[i] == MPI_UNSIGNED_CHAR)
bufferspace[i] = malloc(bufferlen * sizeof(unsigned char));
- else if (buffertypes[i] == MPI_UNSIGNED_SHORT)
+ else if (buffertypes[i] == MPI_UNSIGNED_SHORT)
bufferspace[i] = malloc(bufferlen * sizeof(unsigned short));
- else if (buffertypes[i] == MPI_UNSIGNED)
+ else if (buffertypes[i] == MPI_UNSIGNED)
bufferspace[i] = malloc(bufferlen * sizeof(unsigned int));
- else if (buffertypes[i] == MPI_UNSIGNED_LONG)
+ else if (buffertypes[i] == MPI_UNSIGNED_LONG)
bufferspace[i] = malloc(bufferlen * sizeof(unsigned long));
- else if (buffertypes[i] == MPI_FLOAT)
+ else if (buffertypes[i] == MPI_FLOAT)
bufferspace[i] = malloc(bufferlen * sizeof(float));
- else if (buffertypes[i] == MPI_DOUBLE)
+ else if (buffertypes[i] == MPI_DOUBLE)
bufferspace[i] = malloc(bufferlen * sizeof(double));
#if defined(HAVE_LONG_DOUBLE) && !defined(HAS_XDR)
- else if (buffertypes[i] == MPI_LONG_DOUBLE) {
+ else if (buffertypes[i] == MPI_LONG_DOUBLE) {
int dlen;
MPI_Type_size( MPI_LONG_DOUBLE, &dlen );
bufferspace[i] = malloc(bufferlen * dlen);
- }
+ }
#endif
#if defined(HAVE_LONG_LONG_INT) && !defined(HAS_XDR)
- else if (buffertypes[i] == MPI_LONG_LONG_INT)
+ else if (buffertypes[i] == MPI_LONG_LONG_INT)
bufferspace[i] = malloc(bufferlen * sizeof(long long) );
#endif
- else if (buffertypes[i] == MPI_BYTE)
+ else if (buffertypes[i] == MPI_BYTE)
bufferspace[i] = malloc(bufferlen * sizeof(unsigned char));
- }
+ }
}
void FreeBuffers(void **buffers, int nbuffers)
{
- int i;
- for (i = 0; i < nbuffers; i++)
- free(buffers[i]);
+ int i;
+ for (i = 0; i < nbuffers; i++)
+ free(buffers[i]);
}
void FillBuffers(bufferspace, buffertypes, num_types, bufferlen)
- void **bufferspace;
- MPI_Datatype *buffertypes;
- int num_types;
- int bufferlen;
+ void **bufferspace;
+ MPI_Datatype *buffertypes;
+ int num_types;
+ int bufferlen;
{
- int i, j;
- for (i = 0; i < ntypes; i++) {
- for (j = 0; j < bufferlen; j++) {
+ int i, j;
+ for (i = 0; i < ntypes; i++) {
+ for (j = 0; j < bufferlen; j++) {
if (buffertypes[i] == MPI_CHAR)
- ((char *)bufferspace[i])[j] = (char)(j & 0x7f);
+ ((char *)bufferspace[i])[j] = (char)(j & 0x7f);
else if (buffertypes[i] == MPI_SHORT)
- ((short *)bufferspace[i])[j] = (short)j;
+ ((short *)bufferspace[i])[j] = (short)j;
else if (buffertypes[i] == MPI_INT)
- ((int *)bufferspace[i])[j] = (int)j;
+ ((int *)bufferspace[i])[j] = (int)j;
else if (buffertypes[i] == MPI_LONG)
- ((long *)bufferspace[i])[j] = (long)j;
+ ((long *)bufferspace[i])[j] = (long)j;
else if (buffertypes[i] == MPI_UNSIGNED_CHAR)
- ((unsigned char *)bufferspace[i])[j] = (unsigned char)j;
+ ((unsigned char *)bufferspace[i])[j] = (unsigned char)j;
else if (buffertypes[i] == MPI_UNSIGNED_SHORT)
- ((unsigned short *)bufferspace[i])[j] = (unsigned short)j;
+ ((unsigned short *)bufferspace[i])[j] = (unsigned short)j;
else if (buffertypes[i] == MPI_UNSIGNED)
- ((unsigned int *)bufferspace[i])[j] = (unsigned int)j;
+ ((unsigned int *)bufferspace[i])[j] = (unsigned int)j;
else if (buffertypes[i] == MPI_UNSIGNED_LONG)
- ((unsigned long *)bufferspace[i])[j] = (unsigned long)j;
+ ((unsigned long *)bufferspace[i])[j] = (unsigned long)j;
else if (buffertypes[i] == MPI_FLOAT)
- ((float *)bufferspace[i])[j] = (float)j;
+ ((float *)bufferspace[i])[j] = (float)j;
else if (buffertypes[i] == MPI_DOUBLE)
- ((double *)bufferspace[i])[j] = (double)j;
+ ((double *)bufferspace[i])[j] = (double)j;
#if defined(HAVE_LONG_DOUBLE) && !defined(HAS_XDR)
else if (buffertypes[i] == MPI_LONG_DOUBLE)
- ((long double *)bufferspace[i])[j] = (long double)j;
+ ((long double *)bufferspace[i])[j] = (long double)j;
#endif
#if defined(HAVE_LONG_LONG_INT) && !defined(HAS_XDR)
else if (buffertypes[i] == MPI_LONG_LONG_INT)
- ((long long *)bufferspace[i])[j] = (long long)j;
+ ((long long *)bufferspace[i])[j] = (long long)j;
#endif
else if (buffertypes[i] == MPI_BYTE)
- ((unsigned char *)bufferspace[i])[j] = (unsigned char)j;
- }
+ ((unsigned char *)bufferspace[i])[j] = (unsigned char)j;
}
+ }
}
int
CheckBuffer(bufferspace, buffertype, bufferlen)
- void *bufferspace;
- MPI_Datatype buffertype;
- int bufferlen;
+ void *bufferspace;
+ MPI_Datatype buffertype;
+ int bufferlen;
{
- int j;
- char valerr[256];
- valerr[0] = 0;
- for (j = 0; j < bufferlen; j++) {
- if (buffertype == MPI_CHAR) {
+ int j;
+ char valerr[256];
+ valerr[0] = 0;
+ for (j = 0; j < bufferlen; j++) {
+ if (buffertype == MPI_CHAR) {
if (((char *)bufferspace)[j] != (char)(j & 0x7f)) {
- sprintf( valerr, "%x != %x",
- ((char *)bufferspace)[j], (char)(j&0x7f) );
- break;
- }
- } else if (buffertype == MPI_SHORT) {
+ sprintf( valerr, "%x != %x",
+ ((char *)bufferspace)[j], (char)(j&0x7f) );
+ break;
+ }
+ } else if (buffertype == MPI_SHORT) {
if (((short *)bufferspace)[j] != (short)j) {
- sprintf( valerr, "%d != %d",
- ((short *)bufferspace)[j], (short)j );
- break;
- }
- } else if (buffertype == MPI_INT) {
+ sprintf( valerr, "%d != %d",
+ ((short *)bufferspace)[j], (short)j );
+ break;
+ }
+ } else if (buffertype == MPI_INT) {
if (((int *)bufferspace)[j] != (int)j) {
- sprintf( valerr, "%d != %d",
- ((int *)bufferspace)[j], (int)j );
- break;
- }
- } else if (buffertype == MPI_LONG) {
+ sprintf( valerr, "%d != %d",
+ ((int *)bufferspace)[j], (int)j );
+ break;
+ }
+ } else if (buffertype == MPI_LONG) {
if (((long *)bufferspace)[j] != (long)j) {
- break;
- }
- } else if (buffertype == MPI_UNSIGNED_CHAR) {
+ break;
+ }
+ } else if (buffertype == MPI_UNSIGNED_CHAR) {
if (((unsigned char *)bufferspace)[j] != (unsigned char)j) {
- break;
- }
- } else if (buffertype == MPI_UNSIGNED_SHORT) {
+ break;
+ }
+ } else if (buffertype == MPI_UNSIGNED_SHORT) {
if (((unsigned short *)bufferspace)[j] != (unsigned short)j) {
- break;
- }
- } else if (buffertype == MPI_UNSIGNED) {
+ break;
+ }
+ } else if (buffertype == MPI_UNSIGNED) {
if (((unsigned int *)bufferspace)[j] != (unsigned int)j) {
- break;
- }
- } else if (buffertype == MPI_UNSIGNED_LONG) {
+ break;
+ }
+ } else if (buffertype == MPI_UNSIGNED_LONG) {
if (((unsigned long *)bufferspace)[j] != (unsigned long)j) {
- break;
- }
- } else if (buffertype == MPI_FLOAT) {
+ break;
+ }
+ } else if (buffertype == MPI_FLOAT) {
if (((float *)bufferspace)[j] != (float)j) {
- break;
- }
- } else if (buffertype == MPI_DOUBLE) {
+ break;
+ }
+ } else if (buffertype == MPI_DOUBLE) {
if (((double *)bufferspace)[j] != (double)j) {
- break;
- }
+ break;
+ }
#if defined(HAVE_LONG_DOUBLE) && !defined(HAS_XDR)
- } else if (buffertype == MPI_LONG_DOUBLE) {
+ } else if (buffertype == MPI_LONG_DOUBLE) {
if (((long double *)bufferspace)[j] != (long double)j) {
- break;
- }
+ break;
+ }
#endif
#if defined(HAVE_LONG_LONG_INT) && !defined(HAS_XDR)
- } else if (buffertype == MPI_LONG_LONG_INT) {
+ } else if (buffertype == MPI_LONG_LONG_INT) {
if (((long long *)bufferspace)[j] != (long long)j) {
- break;
- }
+ break;
+ }
#endif
- } else if (buffertype == MPI_BYTE) {
+ } else if (buffertype == MPI_BYTE) {
if (((unsigned char *)bufferspace)[j] != (unsigned char)j) {
- break;
- }
- }
+ break;
+ }
}
- /* Return +1 so an error in the first location is > 0 */
- if (j < bufferlen) {
- if (valerr[0]) fprintf( stderr, "Different value[%d] = %s\n",
- j, valerr );
- else
+ }
+ /* Return +1 so an error in the first location is > 0 */
+ if (j < bufferlen) {
+ if (valerr[0]) fprintf( stderr, "Different value[%d] = %s\n",
+ j, valerr );
+ else
fprintf( stderr, "Different value[%d]\n", j );
- return j+1;
+ return j+1;
}
- return 0;
+ return 0;
}
void
SetupBasicTypes()
{
- BasicTypes[0] = MPI_CHAR; BasicNames[0] = (char*)"MPI_CHAR" ;
- BasicTypes[1] = MPI_SHORT; BasicNames[1] = (char*)"MPI_SHORT";
- BasicTypes[2] = MPI_INT; BasicNames[2] = (char*)"MPI_INT" ;
- BasicTypes[3] = MPI_LONG; BasicNames[3] = (char*)"MPI_LONG" ;
- BasicTypes[4] = MPI_UNSIGNED_CHAR; BasicNames[4] = (char*)"MPI_UNSIGNED_CHAR";
- BasicTypes[5] = MPI_UNSIGNED_SHORT; BasicNames[5] = (char*)"MPI_UNSIGNED_SHORT";
- BasicTypes[6] = MPI_UNSIGNED; BasicNames[6] = (char*)"MPI_UNSIGNED";
- BasicTypes[7] = MPI_UNSIGNED_LONG; BasicNames[7] = (char*)"MPI_UNSIGNED_LONG";
- BasicTypes[8] = MPI_FLOAT; BasicNames[8] = (char*)"MPI_FLOAT";
- BasicTypes[9] = MPI_DOUBLE; BasicNames[9] = (char*)"MPI_DOUBLE";
- BasicTypes[10] = MPI_BYTE; BasicNames[10] = (char*)"MPI_BYTE";
- /* By making the BYTE type LAST, we make it easier to handle heterogeneous
- systems that may not support all of the types */
- ntypes = 11;
+ BasicTypes[0] = MPI_CHAR; BasicNames[0] = (char*)"MPI_CHAR" ;
+ BasicTypes[1] = MPI_SHORT; BasicNames[1] = (char*)"MPI_SHORT";
+ BasicTypes[2] = MPI_INT; BasicNames[2] = (char*)"MPI_INT" ;
+ BasicTypes[3] = MPI_LONG; BasicNames[3] = (char*)"MPI_LONG" ;
+ BasicTypes[4] = MPI_UNSIGNED_CHAR; BasicNames[4] = (char*)"MPI_UNSIGNED_CHAR";
+ BasicTypes[5] = MPI_UNSIGNED_SHORT; BasicNames[5] = (char*)"MPI_UNSIGNED_SHORT";
+ BasicTypes[6] = MPI_UNSIGNED; BasicNames[6] = (char*)"MPI_UNSIGNED";
+ BasicTypes[7] = MPI_UNSIGNED_LONG; BasicNames[7] = (char*)"MPI_UNSIGNED_LONG";
+ BasicTypes[8] = MPI_FLOAT; BasicNames[8] = (char*)"MPI_FLOAT";
+ BasicTypes[9] = MPI_DOUBLE; BasicNames[9] = (char*)"MPI_DOUBLE";
+ BasicTypes[10] = MPI_BYTE; BasicNames[10] = (char*)"MPI_BYTE";
+ /* By making the BYTE type LAST, we make it easier to handle heterogeneous
+ systems that may not support all of the types */
+ ntypes = 11;
#if defined (HAVE_LONG_DOUBLE) && !defined(HAS_XDR)
- /* This test allows us to use MPI_LONG_DOUBLE, but rely on size > 0
- for "actually implemented" */
- if (!nolongdouble) {
- int l;
- MPI_Type_size( MPI_LONG_DOUBLE, &l );
- if (l > 0) {
+ /* This test allows us to use MPI_LONG_DOUBLE, but rely on size > 0
+ for "actually implemented" */
+ if (!nolongdouble) {
+ int l;
+ MPI_Type_size( MPI_LONG_DOUBLE, &l );
+ if (l > 0) {
BasicTypes[ntypes] = MPI_LONG_DOUBLE;
BasicNames[ntypes] = (char*)"MPI_LONG_DOUBLE";
ntypes++;
- }
}
+ }
#endif
#if defined(HAVE_LONG_LONG_INT) && !defined(HAS_XDR)
- BasicTypes[ntypes] = MPI_LONG_LONG_INT;
- BasicNames[ntypes] = (char*)"MPI_LONG_LONG_INT";
- ntypes++;
+ BasicTypes[ntypes] = MPI_LONG_LONG_INT;
+ BasicNames[ntypes] = (char*)"MPI_LONG_LONG_INT";
+ ntypes++;
#endif
}
void
SenderTest1()
{
- void *bufferspace[MAX_TYPES];
- int i, j;
-
- AllocateBuffers(bufferspace, BasicTypes, ntypes, maxbufferlen);
- FillBuffers(bufferspace, BasicTypes, ntypes, maxbufferlen);
- for (i = 0; i < ntypes; i++) {
- MPI_Send( (void *)0, 0, BasicTypes[i], dest, 2000, MPI_COMM_WORLD );
- for (j = 0; j < maxbufferlen; j += 500)
+ void *bufferspace[MAX_TYPES];
+ int i, j;
+
+ AllocateBuffers(bufferspace, BasicTypes, ntypes, maxbufferlen);
+ FillBuffers(bufferspace, BasicTypes, ntypes, maxbufferlen);
+ for (i = 0; i < ntypes; i++) {
+ MPI_Send( (void *)0, 0, BasicTypes[i], dest, 2000, MPI_COMM_WORLD );
+ for (j = 0; j < maxbufferlen; j += 500)
MPI_Send(bufferspace[i], j, BasicTypes[i], dest,
- 2000, MPI_COMM_WORLD);
- }
- FreeBuffers(bufferspace, ntypes);
+ 2000, MPI_COMM_WORLD);
+ }
+ FreeBuffers(bufferspace, ntypes);
}
void
ReceiverTest1()
{
- void *bufferspace[MAX_TYPES];
- int i, j;
- char message[81];
- MPI_Status Stat;
- int dummy, passed;
-
- AllocateBuffers(bufferspace, BasicTypes, ntypes, maxbufferlen);
- for (i = 0; i < ntypes; i++) {
- passed = 1;
- MPI_Recv( (void *)0, 0, BasicTypes[i], src,
- 2000, MPI_COMM_WORLD, &Stat);
- if (Stat.MPI_SOURCE != src) {
+ void *bufferspace[MAX_TYPES];
+ int i, j;
+ char message[81];
+ MPI_Status Stat;
+ int dummy, passed;
+
+ AllocateBuffers(bufferspace, BasicTypes, ntypes, maxbufferlen);
+ for (i = 0; i < ntypes; i++) {
+ passed = 1;
+ MPI_Recv( (void *)0, 0, BasicTypes[i], src,
+ 2000, MPI_COMM_WORLD, &Stat);
+ if (Stat.MPI_SOURCE != src) {
fprintf(stderr, "*** Incorrect Source returned. ***\n");
Test_Failed(message);
passed = 0;
- } else if (Stat.MPI_TAG != 2000) {
+ } else if (Stat.MPI_TAG != 2000) {
fprintf(stderr, "*** Incorrect Tag returned. ***\n");
Test_Failed(message);
passed = 0;
- } else if (MPI_Get_count(&Stat, BasicTypes[i], &dummy) ||
- dummy != 0) {
+ } else if (MPI_Get_count(&Stat, BasicTypes[i], &dummy) ||
+ dummy != 0) {
fprintf(stderr,
- "*** Incorrect Count returned, Count = %d. ***\n",
- dummy);
+ "*** Incorrect Count returned, Count = %d. ***\n",
+ dummy);
Test_Failed(message);
passed = 0;
- }
- /* Try different sized messages */
- for (j = 0; j < maxbufferlen; j += 500) {
+ }
+ /* Try different sized messages */
+ for (j = 0; j < maxbufferlen; j += 500) {
MPI_Recv(bufferspace[i], j, BasicTypes[i], src,
- 2000, MPI_COMM_WORLD, &Stat);
+ 2000, MPI_COMM_WORLD, &Stat);
sprintf(message, "Send-Receive Test, Type %d, Count %d",
- i, j);
+ i, j);
if (Stat.MPI_SOURCE != src) {
- fprintf(stderr, "*** Incorrect Source returned. ***\n");
- Test_Failed(message);
- passed = 0;
+ fprintf(stderr, "*** Incorrect Source returned. ***\n");
+ Test_Failed(message);
+ passed = 0;
} else if (Stat.MPI_TAG != 2000) {
- fprintf(stderr, "*** Incorrect Tag returned. ***\n");
- Test_Failed(message);
- passed = 0;
+ fprintf(stderr, "*** Incorrect Tag returned. ***\n");
+ Test_Failed(message);
+ passed = 0;
} else if (MPI_Get_count(&Stat, BasicTypes[i], &dummy) ||
- dummy != j) {
- fprintf(stderr,
- "*** Incorrect Count returned, Count = %d (should be %d). ***\n",
- dummy, j);
- Test_Failed(message);
- passed = 0;
+ dummy != j) {
+ fprintf(stderr,
+ "*** Incorrect Count returned, Count = %d (should be %d). ***\n",
+ dummy, j);
+ Test_Failed(message);
+ passed = 0;
} else if(CheckBuffer(bufferspace[i], BasicTypes[i], j)) {
- fprintf(stderr,
- "*** Incorrect Message received (type = %d (%s), count = %d). ***\n",
- i, BasicNames[i], j );
- Test_Failed(message);
- passed = 0;
+ fprintf(stderr,
+ "*** Incorrect Message received (type = %d (%s), count = %d). ***\n",
+ i, BasicNames[i], j );
+ Test_Failed(message);
+ passed = 0;
}
#ifdef VERBOSE
else {
- fprintf(stderr,
- "Message of count %d, type %d received correctly.\n",
- j, i );
+ fprintf(stderr,
+ "Message of count %d, type %d received correctly.\n",
+ j, i );
}
#endif
- }
- sprintf(message, "Send-Receive Test, Type %d (%s)",
- i, BasicNames[i] );
- if (passed)
+ }
+ sprintf(message, "Send-Receive Test, Type %d (%s)",
+ i, BasicNames[i] );
+ if (passed)
Test_Passed(message);
- else
+ else
Test_Failed(message);
- }
- FreeBuffers(bufferspace, ntypes);
+ }
+ FreeBuffers(bufferspace, ntypes);
}
#define MAX_ORDER_TAG 2010
void
SenderTest2()
{
- int *buffer;
- int i;
- MPI_Request r[10];
- MPI_Status s[10];
-
- buffer = (int *)malloc(maxbufferlen * sizeof(int));
- for (i = 0; i < maxbufferlen; i++)
- buffer[i] = i;
+ int *buffer;
+ int i;
+ MPI_Request r[10];
+ MPI_Status s[10];
+
+ buffer = (int *)malloc(maxbufferlen * sizeof(int));
+ for (i = 0; i < maxbufferlen; i++)
+ buffer[i] = i;
- for (i = 2001; i <= MAX_ORDER_TAG; i++)
- MPI_Isend(buffer, maxbufferlen, MPI_INT, dest,
- i, MPI_COMM_WORLD, &r[i-2001] );
+ for (i = 2001; i <= MAX_ORDER_TAG; i++)
+ MPI_Isend(buffer, maxbufferlen, MPI_INT, dest,
+ i, MPI_COMM_WORLD, &r[i-2001] );
- MPI_Waitall( MAX_ORDER_TAG-2001+1, r, s );
- free(buffer);
+ MPI_Waitall( MAX_ORDER_TAG-2001+1, r, s );
+ free(buffer);
- return;
+ return;
}
void
ReceiverTest2()
{
- int *buffer;
- int i, j;
- char message[81];
- MPI_Status Stat;
- int dummy, passed;
- int errloc;
-
- buffer = (int *)calloc(maxbufferlen,sizeof(int));
- passed = 1;
-
- for (i = MAX_ORDER_TAG; i >= 2001; i--) {
- MPI_Recv(buffer, maxbufferlen, MPI_INT, src,
- i, MPI_COMM_WORLD, &Stat);
- sprintf(message, "Tag Selectivity Test, Tag %d",
- i);
- if (Stat.MPI_SOURCE != src) {
+ int *buffer;
+ int i, j;
+ char message[81];
+ MPI_Status Stat;
+ int dummy, passed;
+ int errloc;
+
+ buffer = (int *)calloc(maxbufferlen,sizeof(int));
+ passed = 1;
+
+ for (i = MAX_ORDER_TAG; i >= 2001; i--) {
+ MPI_Recv(buffer, maxbufferlen, MPI_INT, src,
+ i, MPI_COMM_WORLD, &Stat);
+ sprintf(message, "Tag Selectivity Test, Tag %d",
+ i);
+ if (Stat.MPI_SOURCE != src) {
fprintf(stderr, "*** Incorrect Source returned. ***\n");
Test_Failed(message);
- } else if (Stat.MPI_TAG != i) {
+ } else if (Stat.MPI_TAG != i) {
fprintf(stderr, "*** Incorrect Tag returned. ***\n");
Test_Failed(message);
- } else if (MPI_Get_count(&Stat, MPI_INT, &dummy) ||
- dummy != maxbufferlen) {
+ } else if (MPI_Get_count(&Stat, MPI_INT, &dummy) ||
+ dummy != maxbufferlen) {
fprintf(stderr,
- "*** Incorrect Count returned, Count = %d. ***\n",
- dummy);
+ "*** Incorrect Count returned, Count = %d. ***\n",
+ dummy);
Test_Failed(message);
- } else if((errloc =
- CheckBuffer((void*)buffer, MPI_INT, maxbufferlen))) {
+ } else if((errloc =
+ CheckBuffer((void*)buffer, MPI_INT, maxbufferlen))) {
fprintf(stderr,
- "*** Incorrect Message received at %d (tag=%d). ***\n",
- errloc-1, i);
+ "*** Incorrect Message received at %d (tag=%d). ***\n",
+ errloc-1, i);
Test_Failed(message);
passed = 0;
- }
- /* Clear out the buffer */
- for (j = 0; j < maxbufferlen; j++)
- buffer[j] = -1;
}
- strncpy(message, "Tag Selectivity Test", 81);
- if (passed)
- Test_Passed(message);
- else
- Test_Failed(message);
- free(buffer);
- return;
+ /* Clear out the buffer */
+ for (j = 0; j < maxbufferlen; j++)
+ buffer[j] = -1;
+ }
+ strncpy(message, "Tag Selectivity Test", 81);
+ if (passed)
+ Test_Passed(message);
+ else
+ Test_Failed(message);
+ free(buffer);
+ return;
}
void
SenderTest3()
{
- int ibuf[10];
+ int ibuf[10];
- /* A receive test might not fail until it is triggered... */
- MPI_Send( ibuf, 10, MPI_INT, dest, 15, MPI_COMM_WORLD);
+ /* A receive test might not fail until it is triggered... */
+ MPI_Send( ibuf, 10, MPI_INT, dest, 15, MPI_COMM_WORLD);
- return;
+ return;
}
void
ReceiverTest3( void )
{
- int buffer[20];
- MPI_Datatype bogus_type = MPI_DATATYPE_NULL;
- MPI_Status status;
- int myrank;
- int small_tag;
-/*
+ int buffer[20];
+ MPI_Datatype bogus_type = MPI_DATATYPE_NULL;
+ MPI_Status status;
+ int myrank;
+ int small_tag;
+ /*
if (verbose)
- MPI_Errhandler_set(MPI_COMM_WORLD, TEST_ERRORS_WARN);
+ MPI_Errhandler_set(MPI_COMM_WORLD, TEST_ERRORS_WARN);
else
- MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN );
-*/
- MPI_Comm_rank( MPI_COMM_WORLD, &myrank );
+ MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN );
+ */
+ MPI_Comm_rank( MPI_COMM_WORLD, &myrank );
- if (myrank == 0 && verbose) {
- fprintf( stderr,
-"There should be eight error messages about invalid communicator\n\
+ if (myrank == 0 && verbose) {
+ fprintf( stderr,
+ "There should be eight error messages about invalid communicator\n\
count argument, datatype argument, tag, rank, buffer send and buffer recv\n" );
}
- if (MPI_Send(buffer, 20, MPI_INT, dest,
- 1, MPI_COMM_NULL) == MPI_SUCCESS){
- Test_Failed("NULL Communicator Test");
- }
- else
- Test_Passed("NULL Communicator Test");
-
- if (MPI_Send(buffer, -1, MPI_INT, dest,
- 1, MPI_COMM_WORLD) == MPI_SUCCESS){
- Test_Failed("Invalid Count Test");
- }
- else
- Test_Passed("Invalid Count Test");
-
- if (MPI_Send(buffer, 20, bogus_type, dest,
- 1, MPI_COMM_WORLD) == MPI_SUCCESS){
- Test_Failed("Invalid Type Test");
- }
- else
- Test_Passed("Invalid Type Test");
-
- small_tag = -1;
- if (small_tag == MPI_ANY_TAG) small_tag = -2;
- if (MPI_Send(buffer, 20, MPI_INT, dest,
- small_tag, MPI_COMM_WORLD) == MPI_SUCCESS) {
- Test_Failed("Invalid Tag Test");
- }
- else
- Test_Passed("Invalid Tag Test");
-
- /* Form a tag that is too large */
- /*MPI_Attr_get( MPI_COMM_WORLD, MPI_TAG_UB, (void **)&tag_ubp, &flag );
+ if (MPI_Send(buffer, 20, MPI_INT, dest,
+ 1, MPI_COMM_NULL) == MPI_SUCCESS){
+ Test_Failed("NULL Communicator Test");
+ }
+ else
+ Test_Passed("NULL Communicator Test");
+
+ if (MPI_Send(buffer, -1, MPI_INT, dest,
+ 1, MPI_COMM_WORLD) == MPI_SUCCESS){
+ Test_Failed("Invalid Count Test");
+ }
+ else
+ Test_Passed("Invalid Count Test");
+
+ if (MPI_Send(buffer, 20, bogus_type, dest,
+ 1, MPI_COMM_WORLD) == MPI_SUCCESS){
+ Test_Failed("Invalid Type Test");
+ }
+ else
+ Test_Passed("Invalid Type Test");
+
+ small_tag = -1;
+ if (small_tag == MPI_ANY_TAG) small_tag = -2;
+ if (MPI_Send(buffer, 20, MPI_INT, dest,
+ small_tag, MPI_COMM_WORLD) == MPI_SUCCESS) {
+ Test_Failed("Invalid Tag Test");
+ }
+ else
+ Test_Passed("Invalid Tag Test");
+
+ /* Form a tag that is too large */
+ /*MPI_Attr_get( MPI_COMM_WORLD, MPI_TAG_UB, (void **)&tag_ubp, &flag );
if (!flag) Test_Failed("Could not get tag ub!" );
large_tag = *tag_ubp + 1;
if (large_tag > *tag_ubp) {
- if (MPI_Send(buffer, 20, MPI_INT, dest,
- large_tag, MPI_COMM_WORLD) == MPI_SUCCESS) {
- Test_Failed("Invalid Tag Test");
- }
- else
- Test_Passed("Invalid Tag Test");
- }
-*/
- if (MPI_Send(buffer, 20, MPI_INT, 300,
- 1, MPI_COMM_WORLD) == MPI_SUCCESS) {
- Test_Failed("Invalid Destination Test");
- }
- else
- Test_Passed("Invalid Destination Test");
-
- if (MPI_Send((void *)0, 10, MPI_INT, dest,
- 1, MPI_COMM_WORLD) == MPI_SUCCESS){
- Test_Failed("Invalid Buffer Test (send)");
+ if (MPI_Send(buffer, 20, MPI_INT, dest,
+ large_tag, MPI_COMM_WORLD) == MPI_SUCCESS) {
+ Test_Failed("Invalid Tag Test");
}
else
- Test_Passed("Invalid Buffer Test (send)");
-
- /* A receive test might not fail until it is triggered... */
- if (MPI_Recv((void *)0, 10, MPI_INT, src,
- 15, MPI_COMM_WORLD, &status) == MPI_SUCCESS){
- Test_Failed("Invalid Buffer Test (recv)");
+ Test_Passed("Invalid Tag Test");
}
- else
- Test_Passed("Invalid Buffer Test (recv)");
-
- /* Just to keep things happy, see if there is a message to receive */
- { //int flag,
+ */
+ if (MPI_Send(buffer, 20, MPI_INT, 300,
+ 1, MPI_COMM_WORLD) == MPI_SUCCESS) {
+ Test_Failed("Invalid Destination Test");
+ }
+ else
+ Test_Passed("Invalid Destination Test");
+
+ if (MPI_Send((void *)0, 10, MPI_INT, dest,
+ 1, MPI_COMM_WORLD) == MPI_SUCCESS){
+ Test_Failed("Invalid Buffer Test (send)");
+ }
+ else
+ Test_Passed("Invalid Buffer Test (send)");
+
+ /* A receive test might not fail until it is triggered... */
+ if (MPI_Recv((void *)0, 10, MPI_INT, src,
+ 15, MPI_COMM_WORLD, &status) == MPI_SUCCESS){
+ Test_Failed("Invalid Buffer Test (recv)");
+ }
+ else
+ Test_Passed("Invalid Buffer Test (recv)");
+
+ /* Just to keep things happy, see if there is a message to receive */
+ { //int flag,
int ibuf[10];
//MPI_Iprobe( src, 15, MPI_COMM_WORLD, &flag, &status );
//if (flag)
- MPI_Recv( ibuf, 10, MPI_INT, src, 15, MPI_COMM_WORLD, &status );
- }
- MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL );
- return;
+ MPI_Recv( ibuf, 10, MPI_INT, src, 15, MPI_COMM_WORLD, &status );
+ }
+ MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL );
+ return;
}
/* Allow -nolongdouble to suppress long double testing */
int main( int argc, char **argv )
{
- int myrank, mysize;
- int rc, itemp, i;
-
- MPI_Init(&argc, &argv);
- MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
- MPI_Comm_size(MPI_COMM_WORLD, &mysize);
- Test_Init("sendrecv", myrank);
- SetupBasicTypes();
-
- if (mysize != 2) {
- fprintf(stderr,
- "*** This test program requires exactly 2 processes.\n");
- MPI_Abort( MPI_COMM_WORLD, 1 );
- }
-
- /* Get the min of the basic types */
- itemp = ntypes;
- MPI_Allreduce( &itemp, &ntypes, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD );
-
- /* dest writes out the received stats; for the output to be
- consistant (with the final check), it should be procees 0 */
- for (i=1; i<argc; i++) {
- if (argv[i] && strcmp( "-alt", argv[i] ) == 0) {
+ int myrank, mysize;
+ int rc, itemp, i;
+
+ MPI_Init(&argc, &argv);
+ MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
+ MPI_Comm_size(MPI_COMM_WORLD, &mysize);
+ Test_Init("sendrecv", myrank);
+ SetupBasicTypes();
+
+ if (mysize != 2) {
+ fprintf(stderr,
+ "*** This test program requires exactly 2 processes.\n");
+ MPI_Abort( MPI_COMM_WORLD, 1 );
+ }
+
+ /* Get the min of the basic types */
+ itemp = ntypes;
+ MPI_Allreduce( &itemp, &ntypes, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD );
+
+ /* dest writes out the received stats; for the output to be
+ consistant (with the final check), it should be procees 0 */
+ for (i=1; i<argc; i++) {
+ if (argv[i] && strcmp( "-alt", argv[i] ) == 0) {
dest = 1;
src = 0;
- }
- else if (argv[i] && strcmp( "-nolongdouble", argv[i] ) == 0) {
+ }
+ else if (argv[i] && strcmp( "-nolongdouble", argv[i] ) == 0) {
nolongdouble = 1;
- }
- else if (argv[i] && strcmp( "-test1", argv[i] ) == 0) {
+ }
+ else if (argv[i] && strcmp( "-test1", argv[i] ) == 0) {
do_test2 = do_test3 = 0;
- }
- else if (argv[i] && strcmp( "-test2", argv[i] ) == 0) {
+ }
+ else if (argv[i] && strcmp( "-test2", argv[i] ) == 0) {
do_test1 = do_test3 = 0;
- }
- else if (argv[i] && strcmp( "-test3", argv[i] ) == 0) {
+ }
+ else if (argv[i] && strcmp( "-test3", argv[i] ) == 0) {
do_test2 = do_test1 = 0;
- }
- else {
+ }
+ else {
printf( "Unrecognized argument %s\n", argv[i] );
- }
}
+ }
- /* Turn stdout's buffering to line buffered so it mixes right with
- stderr in output files. (hopefully) */
- setvbuf(stdout, NULL, _IOLBF, 0);
- setvbuf(stderr, NULL, _IOLBF, 0);
+ /* Turn stdout's buffering to line buffered so it mixes right with
+ stderr in output files. (hopefully) */
+ setvbuf(stdout, NULL, _IOLBF, 0);
+ setvbuf(stderr, NULL, _IOLBF, 0);
- if (myrank == src) {
- if (do_test1)
+ if (myrank == src) {
+ if (do_test1)
SenderTest1();
- if (do_test2)
+ if (do_test2)
SenderTest2();
- if (do_test3)
+ if (do_test3)
SenderTest3();
- } else if (myrank == dest) {
- if (do_test1)
+ } else if (myrank == dest) {
+ if (do_test1)
ReceiverTest1();
- if (do_test2)
+ if (do_test2)
ReceiverTest2();
- if (do_test3)
+ if (do_test3)
ReceiverTest3();
- } else {
- fprintf(stderr, "*** This program uses exactly 2 processes! ***\n");
- MPI_Abort( MPI_COMM_WORLD, 1 );
- }
- if (myrank == dest) {
- rc = Summarize_Test_Results();
- }
- else {
- rc = 0;
- }
- Test_Finalize();
- Test_Waitforall( );
- MPI_Finalize();
- return rc;
+ } else {
+ fprintf(stderr, "*** This program uses exactly 2 processes! ***\n");
+ MPI_Abort( MPI_COMM_WORLD, 1 );
+ }
+ if (myrank == dest) {
+ rc = Summarize_Test_Results();
+ }
+ else {
+ rc = 0;
+ }
+ Test_Finalize();
+ Test_Waitforall( );
+ MPI_Finalize();
+ return rc;
}