X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/281f8c29e177852dcb1591fc31e363e1176857c8..41ca371b3055930d24ce56f86945acfd1317d5fb:/teshsuite/smpi/mpich3-test/attr/attric.c diff --git a/teshsuite/smpi/mpich3-test/attr/attric.c b/teshsuite/smpi/mpich3-test/attr/attric.c index 9b3b04c723..25d7a6d93d 100644 --- a/teshsuite/smpi/mpich3-test/attr/attric.c +++ b/teshsuite/smpi/mpich3-test/attr/attric.c @@ -17,143 +17,137 @@ #include "mpitest.h" /* #define DEBUG */ -int test_communicators ( void ); -int copy_fn ( MPI_Comm, int, void *, void *, void *, int * ); -int delete_fn ( MPI_Comm, int, void *, void * ); +int test_communicators(void); +int copy_fn(MPI_Comm, int, void *, void *, void *, int *); +int delete_fn(MPI_Comm, int, void *, void *); #ifdef DEBUG #define FFLUSH fflush(stdout); #else #define FFLUSH #endif -int main( int argc, char **argv ) +int main(int argc, char **argv) { int errs = 0; - MTest_Init( &argc, &argv ); - + MTest_Init(&argc, &argv); + errs = test_communicators(); - MTest_Finalize( errs ); + MTest_Finalize(errs); MPI_Finalize(); return 0; } -int copy_fn( MPI_Comm oldcomm, int keyval, void *extra_state, - void *attribute_val_in, void *attribute_val_out, int *flag) +int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, + void *attribute_val_in, void *attribute_val_out, int *flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int - part of attribute_val_out may leave some dirty bits - */ - *(MPI_Aint *)attribute_val_out = (MPI_Aint)attribute_val_in; + * part of attribute_val_out may leave some dirty bits + */ + *(MPI_Aint *) attribute_val_out = (MPI_Aint) attribute_val_in; *flag = 1; return MPI_SUCCESS; } -int delete_fn( MPI_Comm comm, int keyval, void *attribute_val, - void *extra_state) +int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { int world_rank; - MPI_Comm_rank( MPI_COMM_WORLD, &world_rank ); - if ((MPI_Aint)attribute_val != (MPI_Aint)world_rank) { - printf( "incorrect attribute value %d\n", *(int*)attribute_val ); - MPI_Abort(MPI_COMM_WORLD, 1005 ); - exit(1005); + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + if ((MPI_Aint) attribute_val != (MPI_Aint) world_rank) { + printf("incorrect attribute value %d\n", *(int *) attribute_val); + MPI_Abort(MPI_COMM_WORLD, 1005); } return MPI_SUCCESS; } -int test_communicators( void ) +int test_communicators(void) { MPI_Comm dup_comm, comm; void *vvalue; int flag, world_rank, world_size, key_1, key_3; int errs = 0; MPI_Aint value; - int isLeft; + int isLeft; - MPI_Comm_rank( MPI_COMM_WORLD, &world_rank ); - MPI_Comm_size( MPI_COMM_WORLD, &world_size ); + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + MPI_Comm_size(MPI_COMM_WORLD, &world_size); #ifdef DEBUG if (world_rank == 0) { - printf( "*** Communicators ***\n" ); fflush(stdout); + printf("*** Communicators ***\n"); + fflush(stdout); } #endif - while (MTestGetIntercomm( &comm, &isLeft, 2 )) { + while (MTestGetIntercomm(&comm, &isLeft, 2)) { MTestPrintfMsg(1, "start while loop, isLeft=%s\n", (isLeft ? "TRUE" : "FALSE")); - if (comm == MPI_COMM_NULL) { + if (comm == MPI_COMM_NULL) { MTestPrintfMsg(1, "got COMM_NULL, skipping\n"); continue; } - /* - Check Comm_dup by adding attributes to comm & duplicating - */ - - value = 9; - MPI_Keyval_create(copy_fn, delete_fn, &key_1, &value ); + /* + * Check Comm_dup by adding attributes to comm & duplicating + */ + + value = 9; + MPI_Keyval_create(copy_fn, delete_fn, &key_1, &value); MTestPrintfMsg(1, "Keyval_create key=%#x value=%d\n", key_1, value); - value = 7; - MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, - &key_3, &value ); + value = 7; + MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key_3, &value); MTestPrintfMsg(1, "Keyval_create key=%#x value=%d\n", key_3, value); - /* This may generate a compilation warning; it is, however, an - easy way to cache a value instead of a pointer */ - /* printf( "key1 = %x key3 = %x\n", key_1, key_3 ); */ - MPI_Attr_put(comm, key_1, (void *) (MPI_Aint) world_rank ); - MPI_Attr_put(comm, key_3, (void *)0 ); - - MTestPrintfMsg(1, "Comm_dup\n" ); - MPI_Comm_dup(comm, &dup_comm ); - - /* Note that if sizeof(int) < sizeof(void *), we can't use - (void **)&value to get the value we passed into Attr_put. To avoid - problems (e.g., alignment errors), we recover the value into - a (void *) and cast to int. Note that this may generate warning - messages from the compiler. */ - MPI_Attr_get(dup_comm, key_1, (void **)&vvalue, &flag ); - value = (MPI_Aint)vvalue; - - if (! flag) { - errs++; - printf( "dup_comm key_1 not found on %d\n", world_rank ); - fflush( stdout ); - MPI_Abort(MPI_COMM_WORLD, 3004 ); - exit(3004); - } - - if (value != world_rank) { - errs++; - printf( "dup_comm key_1 value incorrect: %ld\n", (long)value ); - fflush( stdout ); - MPI_Abort(MPI_COMM_WORLD, 3005 ); - exit(3005); - } - - MPI_Attr_get(dup_comm, key_3, (void **)&vvalue, &flag ); - value = (MPI_Aint)vvalue; - if (flag) { - errs++; - printf( "dup_comm key_3 found!\n" ); - fflush( stdout ); - MPI_Abort(MPI_COMM_WORLD, 3008 ); - exit(3008); - } + /* This may generate a compilation warning; it is, however, an + * easy way to cache a value instead of a pointer */ + /* printf("key1 = %x key3 = %x\n", key_1, key_3); */ + MPI_Attr_put(comm, key_1, (void *) (MPI_Aint) world_rank); + MPI_Attr_put(comm, key_3, (void *) 0); + + MTestPrintfMsg(1, "Comm_dup\n"); + MPI_Comm_dup(comm, &dup_comm); + + /* Note that if sizeof(int) < sizeof(void *), we can't use + * (void **)&value to get the value we passed into Attr_put. To avoid + * problems (e.g., alignment errors), we recover the value into + * a (void *) and cast to int. Note that this may generate warning + * messages from the compiler. */ + MPI_Attr_get(dup_comm, key_1, (void **) &vvalue, &flag); + value = (MPI_Aint) vvalue; + + if (!flag) { + errs++; + printf("dup_comm key_1 not found on %d\n", world_rank); + fflush(stdout); + MPI_Abort(MPI_COMM_WORLD, 3004); + } + + if (value != world_rank) { + errs++; + printf("dup_comm key_1 value incorrect: %ld\n", (long) value); + fflush(stdout); + MPI_Abort(MPI_COMM_WORLD, 3005); + } + + MPI_Attr_get(dup_comm, key_3, (void **) &vvalue, &flag); + value = (MPI_Aint) vvalue; + if (flag) { + errs++; + printf("dup_comm key_3 found!\n"); + fflush(stdout); + MPI_Abort(MPI_COMM_WORLD, 3008); + } MTestPrintfMsg(1, "Keyval_free key=%#x\n", key_1); - MPI_Keyval_free(&key_1 ); + MPI_Keyval_free(&key_1); MTestPrintfMsg(1, "Keyval_free key=%#x\n", key_3); - MPI_Keyval_free(&key_3 ); - /* - Free all communicators created - */ + MPI_Keyval_free(&key_3); + /* + * Free all communicators created + */ MTestPrintfMsg(1, "Comm_free comm\n"); - MPI_Comm_free( &comm ); + MPI_Comm_free(&comm); MTestPrintfMsg(1, "Comm_free dup_comm\n"); - MPI_Comm_free( &dup_comm ); + MPI_Comm_free(&dup_comm); } return errs; } -