X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/50bc81a8526eb95a52e6a4b4a2ae1be94dfb24c1..b1a7a778e418d711bcd1a56e4ef28871eddf4ec0:/teshsuite/smpi/mpich3-test/datatype/segtest.c diff --git a/teshsuite/smpi/mpich3-test/datatype/segtest.c b/teshsuite/smpi/mpich3-test/datatype/segtest.c index 78ad55aa46..504aa13fd6 100644 --- a/teshsuite/smpi/mpich3-test/datatype/segtest.c +++ b/teshsuite/smpi/mpich3-test/datatype/segtest.c @@ -7,11 +7,11 @@ #include "mpiimpl.h" #include -/* +/* * Simple segment test, including timing code */ -/* +/* * Build datatype structures * * Contiguous @@ -24,12 +24,12 @@ * offsets = i*24 for i = 0 to n, n = 0, 64, 512 * Indexed * blocksizes = 1, 2, 4, 3, 7, 5, 6 - * offsets = i*24 for i = 0 to n, n = 0, 4, 7, 64, 512 + * offsets = i*24 for i = 0 to n, n = 0, 4, 7, 64, 512 * (Wrap blocksizes to match offsets) * * Also need a few nested datatypes, such as vector of vectors * Do the versions in Using MPI - * + * */ /* @@ -38,16 +38,16 @@ /* * Contig */ -MPID_Dataloop *MPID_Dataloop_init_contig( int count ) +MPID_Dataloop *MPID_Dataloop_init_contig(int count) { MPID_Dataloop *ct; - - ct = (MPID_Dataloop *)MPIU_Malloc( sizeof(MPID_Dataloop ) ); - ct->kind = MPID_DTYPE_CONTIG | DATALOOP_FINAL_MASK; - ct->loop_params.c_t.count = count; + + ct = (MPID_Dataloop *) MPL_malloc(sizeof(MPID_Dataloop)); + ct->kind = MPID_DTYPE_CONTIG | DATALOOP_FINAL_MASK; + ct->loop_params.c_t.count = count; ct->loop_params.c_t.dataloop = 0; - ct->extent = count; - ct->handle = 0; + ct->extent = count; + ct->handle = 0; return ct; } @@ -55,155 +55,149 @@ MPID_Dataloop *MPID_Dataloop_init_contig( int count ) /* * Vector */ -MPID_Dataloop *MPID_Dataloop_init_vector( int count, int blocksize, - int stride ) +MPID_Dataloop *MPID_Dataloop_init_vector(int count, int blocksize, int stride) { MPID_Dataloop *v; - v = (MPID_Dataloop *)MPIU_Malloc( sizeof(MPID_Dataloop) ); - v->kind = MPID_DTYPE_VECTOR | DATALOOP_FINAL_MASK; - v->loop_params.v_t.count = count; + v = (MPID_Dataloop *) MPL_malloc(sizeof(MPID_Dataloop)); + v->kind = MPID_DTYPE_VECTOR | DATALOOP_FINAL_MASK; + v->loop_params.v_t.count = count; v->loop_params.v_t.blocksize = blocksize; - v->loop_params.v_t.stride = stride; - v->loop_params.v_t.dataloop = 0; - v->extent = (count-1)*stride + blocksize; - v->handle = 0; + v->loop_params.v_t.stride = stride; + v->loop_params.v_t.dataloop = 0; + v->extent = (count - 1) * stride + blocksize; + v->handle = 0; return v; } -/* +/* * Block indexed */ -MPID_Dataloop *MPID_Dataloop_init_blockindexed( int count, int blocksize, - MPI_Aint *offset ) +MPID_Dataloop *MPID_Dataloop_init_blockindexed(int count, int blocksize, MPI_Aint * offset) { MPID_Dataloop *bi; - MPI_Aint extent; - int i; + MPI_Aint extent; + int i; - bi = (MPID_Dataloop *)MPIU_Malloc( sizeof(MPID_Dataloop) ); - bi->kind = MPID_DTYPE_BLOCKINDEXED | DATALOOP_FINAL_MASK; - bi->loop_params.bi_t.count = count; + bi = (MPID_Dataloop *) MPL_malloc(sizeof(MPID_Dataloop)); + bi->kind = MPID_DTYPE_BLOCKINDEXED | DATALOOP_FINAL_MASK; + bi->loop_params.bi_t.count = count; bi->loop_params.bi_t.blocksize = blocksize; - bi->loop_params.bi_t.offset = - (MPI_Aint *)MPIU_Malloc( sizeof(MPI_Aint) * count ); - for (i=0; iloop_params.bi_t.offset[i] = offset[i]; - if (offset[i] + blocksize > extent) - extent = offset[i] + blocksize; + bi->loop_params.bi_t.offset = (MPI_Aint *) MPL_malloc(sizeof(MPI_Aint) * count); + for (i = 0; i < count; i++) { + bi->loop_params.bi_t.offset[i] = offset[i]; + if (offset[i] + blocksize > extent) + extent = offset[i] + blocksize; } - bi->loop_params.bi_t.dataloop = 0; - bi->extent = extent; - bi->handle = 0; + bi->loop_params.bi_t.dataloop = 0; + bi->extent = extent; + bi->handle = 0; return bi; } /* - * Indexed + * Indexed */ -MPID_Dataloop *MPID_Dataloop_init_indexed( int count, int *blocksize, - MPI_Aint *offset ) +MPID_Dataloop *MPID_Dataloop_init_indexed(int count, int *blocksize, MPI_Aint * offset) { MPID_Dataloop *it; - MPI_Aint extent = 0; - int i; - - it = (MPID_Dataloop *)MPIU_Malloc( sizeof(MPID_Dataloop) ); - it->kind = MPID_DTYPE_INDEXED | DATALOOP_FINAL_MASK; - it->loop_params.i_t.count = count; - it->loop_params.i_t.blocksize = (int *)MPIU_Malloc( sizeof(int) * count ); - it->loop_params.i_t.offset = - (MPI_Aint *)MPIU_Malloc( sizeof(MPI_Aint) * count ); - for (i=0; iloop_params.i_t.offset[i] = offset[i]; - it->loop_params.i_t.blocksize[i] = blocksize[i]; - if (offset[i] + blocksize[i] > extent) - extent = offset[i] + blocksize[i]; + MPI_Aint extent = 0; + int i; + + it = (MPID_Dataloop *) MPL_malloc(sizeof(MPID_Dataloop)); + it->kind = MPID_DTYPE_INDEXED | DATALOOP_FINAL_MASK; + it->loop_params.i_t.count = count; + it->loop_params.i_t.blocksize = (int *) MPL_malloc(sizeof(int) * count); + it->loop_params.i_t.offset = (MPI_Aint *) MPL_malloc(sizeof(MPI_Aint) * count); + for (i = 0; i < count; i++) { + it->loop_params.i_t.offset[i] = offset[i]; + it->loop_params.i_t.blocksize[i] = blocksize[i]; + if (offset[i] + blocksize[i] > extent) + extent = offset[i] + blocksize[i]; } - it->loop_params.i_t.dataloop = 0; - it->extent = extent; - it->handle = 0; + it->loop_params.i_t.dataloop = 0; + it->extent = extent; + it->handle = 0; return it; } -int main( int argc, char **argv ) +int main(int argc, char **argv) { /* MPID_Dataloop *vecloop; */ MPI_Datatype vectype; - int count=200, blocksize=4, stride = 7*4; + int count = 200, blocksize = 4, stride = 7 * 4; char *src_buf, *dest_buf; - int i,j,k; + int i, j, k; double r1, r2; - MPI_Init( &argc, &argv ); - -/* vecloop = MPID_Dataloop_init_vector( count, blocksize, stride ); */ + MPI_Init(&argc, &argv); - MPI_Type_vector( count, 1, 7, MPI_INT, &vectype ); +/* vecloop = MPID_Dataloop_init_vector(count, blocksize, stride); */ + + MPI_Type_vector(count, 1, 7, MPI_INT, &vectype); /* Initialize the data */ - src_buf = (char *)MPIU_Malloc( (count - 1) * stride + blocksize ); - for (i=0; i<(count-1)*stride+blocksize; i++) - src_buf[i] = -i; - for (i=0; i> 2; - int istride = stride >> 2; - if (bsize == 1) { - for (i=0; i> 2; + int istride = stride >> 2; + if (bsize == 1) { + for (i = 0; i < count; i++) { + *dest++ = *src; + src += istride; + } + } + else { + for (i = 0; i < count; i++) { + for (j = 0; j < bsize; j++) + *dest++ = src[j]; + src += istride; + } + } } r2 = MPI_Wtime(); - printf( "Timer for hand vector pack (int) is %e\n", (r2-r1)/100 ); - + printf("Timer for hand vector pack (int) is %e\n", (r2 - r1) / 100); + MPI_Finalize(); return 0; } @@ -211,7 +205,7 @@ int main( int argc, char **argv ) /* * Nested vector. * The y-z subface is - * Type_vector( ey-sy+1, 1, nx, MPI_DOUBLE, &newx1 ); - * Type_hvector( ez-sz+1, 1, nx*ny_sizeof(double), newx1, &newx ); + * Type_vector(ey-sy+1, 1, nx, MPI_DOUBLE, &newx1); + * Type_hvector(ez-sz+1, 1, nx*ny_sizeof(double), newx1, &newx); * This gives the a(i,sy:ey,sz:ez) of a(nx,ny,nz) (in Fortran notation) */