Move tests. Most of the checking are now disabled, only the performance one
are still active. This commit was SVN r9762.
Этот коммит содержится в:
родитель
ced5d564cf
Коммит
faba013106
@ -43,6 +43,22 @@ mpicc -DHAVE_CONFIG_H -I. -I../../include -I../../../ompi-trunk/include -I../..
|
|||||||
static uint32_t outputFlags = CHECK_PACK_UNPACK;
|
static uint32_t outputFlags = CHECK_PACK_UNPACK;
|
||||||
uint32_t remote_arch;
|
uint32_t remote_arch;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache cleanup.
|
||||||
|
*/
|
||||||
|
#define CACHE_SIZE (2*1024*1024)
|
||||||
|
void cache_trash( void )
|
||||||
|
{
|
||||||
|
char* buffer;
|
||||||
|
|
||||||
|
buffer = (char*)malloc( sizeof(char) * CACHE_SIZE );
|
||||||
|
memset( buffer, 1, CACHE_SIZE );
|
||||||
|
free( buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data-type functions.
|
||||||
|
*/
|
||||||
ompi_datatype_t* create_inversed_vector( ompi_datatype_t* type, int length )
|
ompi_datatype_t* create_inversed_vector( ompi_datatype_t* type, int length )
|
||||||
{
|
{
|
||||||
ompi_datatype_t* type1;
|
ompi_datatype_t* type1;
|
||||||
@ -731,6 +747,8 @@ int local_copy_ddt_count( ompi_datatype_t* pdt, int count )
|
|||||||
pdst = malloc( extent * count );
|
pdst = malloc( extent * count );
|
||||||
psrc = malloc( extent * count );
|
psrc = malloc( extent * count );
|
||||||
|
|
||||||
|
cache_trash(); /* make sure the cache is useless */
|
||||||
|
|
||||||
GET_TIME( start );
|
GET_TIME( start );
|
||||||
if( OMPI_SUCCESS != ompi_ddt_copy_content_same_ddt( pdt, count, pdst, psrc ) ) {
|
if( OMPI_SUCCESS != ompi_ddt_copy_content_same_ddt( pdt, count, pdst, psrc ) ) {
|
||||||
printf( "Unable to copy the datatype in the function local_copy_ddt_count."
|
printf( "Unable to copy the datatype in the function local_copy_ddt_count."
|
||||||
@ -751,7 +769,7 @@ int local_copy_with_convertor_2datatypes( ompi_datatype_t* send_type, int send_c
|
|||||||
{
|
{
|
||||||
long send_extent, recv_extent;
|
long send_extent, recv_extent;
|
||||||
void *pdst = NULL, *psrc = NULL, *ptemp = NULL;
|
void *pdst = NULL, *psrc = NULL, *ptemp = NULL;
|
||||||
ompi_convertor_t *pSendConvertor = NULL, *pRecvConvertor = NULL;
|
ompi_convertor_t *send_convertor = NULL, *recv_convertor = NULL;
|
||||||
struct iovec iov;
|
struct iovec iov;
|
||||||
uint32_t iov_count;
|
uint32_t iov_count;
|
||||||
size_t max_data;
|
size_t max_data;
|
||||||
@ -774,22 +792,26 @@ int local_copy_with_convertor_2datatypes( ompi_datatype_t* send_type, int send_c
|
|||||||
}
|
}
|
||||||
memset( pdst, 0, recv_count * recv_extent );
|
memset( pdst, 0, recv_count * recv_extent );
|
||||||
|
|
||||||
pSendConvertor = ompi_convertor_create( remote_arch, 0 );
|
send_convertor = ompi_convertor_create( remote_arch, 0 );
|
||||||
if( OMPI_SUCCESS != ompi_convertor_prepare_for_send( pSendConvertor, send_type, send_count, psrc ) ) {
|
if( OMPI_SUCCESS != ompi_convertor_prepare_for_send( send_convertor, send_type, send_count, psrc ) ) {
|
||||||
printf( "Unable to create the send convertor. Is the datatype committed ?\n" );
|
printf( "Unable to create the send convertor. Is the datatype committed ?\n" );
|
||||||
goto clean_and_return;
|
goto clean_and_return;
|
||||||
}
|
}
|
||||||
pRecvConvertor = ompi_convertor_create( remote_arch, 0 );
|
recv_convertor = ompi_convertor_create( remote_arch, 0 );
|
||||||
if( OMPI_SUCCESS != ompi_convertor_prepare_for_recv( pRecvConvertor, recv_type, recv_count, pdst ) ) {
|
if( OMPI_SUCCESS != ompi_convertor_prepare_for_recv( recv_convertor, recv_type, recv_count, pdst ) ) {
|
||||||
printf( "Unable to create the recv convertor. Is the datatype committed ?\n" );
|
printf( "Unable to create the recv convertor. Is the datatype committed ?\n" );
|
||||||
goto clean_and_return;
|
goto clean_and_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cache_trash(); /* make sure the cache is useless */
|
||||||
|
|
||||||
GET_TIME( start );
|
GET_TIME( start );
|
||||||
while( (done1 & done2) != 1 ) {
|
while( (done1 & done2) != 1 ) {
|
||||||
/* They are supposed to finish in exactly the same time. */
|
/* They are supposed to finish in exactly the same time. */
|
||||||
if( done1 | done2 ) {
|
if( done1 | done2 ) {
|
||||||
printf( "WRONG !!! the send is %d but the receive is %d\n", done1, done2 );
|
printf( "WRONG !!! the send is %s but the receive is %s\n",
|
||||||
|
(done1 ? "finish" : "not finish"),
|
||||||
|
(done2 ? "finish" : "not finish") );
|
||||||
}
|
}
|
||||||
|
|
||||||
max_data = chunk;
|
max_data = chunk;
|
||||||
@ -798,19 +820,13 @@ int local_copy_with_convertor_2datatypes( ompi_datatype_t* send_type, int send_c
|
|||||||
iov.iov_len = chunk;
|
iov.iov_len = chunk;
|
||||||
|
|
||||||
if( done1 == 0 ) {
|
if( done1 == 0 ) {
|
||||||
done1 = ompi_convertor_pack( pSendConvertor, &iov, &iov_count, &max_data, &free_after );
|
done1 = ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data, &free_after );
|
||||||
assert( free_after == 0 );
|
assert( free_after == 0 );
|
||||||
if( 1 == done1 ) {
|
|
||||||
printf( "pack finished\n" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( done2 == 0 ) {
|
if( done2 == 0 ) {
|
||||||
done2 = ompi_convertor_unpack( pRecvConvertor, &iov, &iov_count, &max_data, &free_after );
|
done2 = ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data, &free_after );
|
||||||
assert( free_after == 0 );
|
assert( free_after == 0 );
|
||||||
if( 1 == done2 ) {
|
|
||||||
printf( "unpack finished\n" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
length += max_data;
|
length += max_data;
|
||||||
@ -819,11 +835,11 @@ int local_copy_with_convertor_2datatypes( ompi_datatype_t* send_type, int send_c
|
|||||||
total_time = ELAPSED_TIME( start, end );
|
total_time = ELAPSED_TIME( start, end );
|
||||||
printf( "unpacking different data-types using convertors in %ld microsec\n", total_time );
|
printf( "unpacking different data-types using convertors in %ld microsec\n", total_time );
|
||||||
clean_and_return:
|
clean_and_return:
|
||||||
if( pSendConvertor != NULL ) {
|
if( send_convertor != NULL ) {
|
||||||
OBJ_RELEASE( pSendConvertor ); assert( pSendConvertor == NULL );
|
OBJ_RELEASE( send_convertor ); assert( send_convertor == NULL );
|
||||||
}
|
}
|
||||||
if( pRecvConvertor != NULL ) {
|
if( recv_convertor != NULL ) {
|
||||||
OBJ_RELEASE( pRecvConvertor ); assert( pRecvConvertor == NULL );
|
OBJ_RELEASE( recv_convertor ); assert( recv_convertor == NULL );
|
||||||
}
|
}
|
||||||
if( NULL != pdst ) free( pdst );
|
if( NULL != pdst ) free( pdst );
|
||||||
if( NULL != psrc ) free( psrc );
|
if( NULL != psrc ) free( psrc );
|
||||||
@ -850,18 +866,19 @@ int local_copy_with_convertor( ompi_datatype_t* pdt, int count, int chunk )
|
|||||||
ptemp = malloc( chunk );
|
ptemp = malloc( chunk );
|
||||||
|
|
||||||
send_convertor = ompi_convertor_create( remote_arch, 0 );
|
send_convertor = ompi_convertor_create( remote_arch, 0 );
|
||||||
recv_convertor = ompi_convertor_create( remote_arch, 0 );
|
|
||||||
|
|
||||||
if( OMPI_SUCCESS != ompi_convertor_prepare_for_send( send_convertor, pdt, count, psrc ) ) {
|
if( OMPI_SUCCESS != ompi_convertor_prepare_for_send( send_convertor, pdt, count, psrc ) ) {
|
||||||
printf( "Unable to create the send convertor. Is the datatype committed ?\n" );
|
printf( "Unable to create the send convertor. Is the datatype committed ?\n" );
|
||||||
goto clean_and_return;
|
goto clean_and_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recv_convertor = ompi_convertor_create( remote_arch, 0 );
|
||||||
if( OMPI_SUCCESS != ompi_convertor_prepare_for_recv( recv_convertor, pdt, count, pdst ) ) {
|
if( OMPI_SUCCESS != ompi_convertor_prepare_for_recv( recv_convertor, pdt, count, pdst ) ) {
|
||||||
printf( "Unable to create the recv convertor. Is the datatype committed ?\n" );
|
printf( "Unable to create the recv convertor. Is the datatype committed ?\n" );
|
||||||
goto clean_and_return;
|
goto clean_and_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cache_trash(); /* make sure the cache is useless */
|
||||||
|
|
||||||
GET_TIME( start );
|
GET_TIME( start );
|
||||||
while( (done1 & done2) != 1 ) {
|
while( (done1 & done2) != 1 ) {
|
||||||
/* They are supposed to finish in exactly the same time. */
|
/* They are supposed to finish in exactly the same time. */
|
||||||
@ -879,17 +896,11 @@ int local_copy_with_convertor( ompi_datatype_t* pdt, int count, int chunk )
|
|||||||
if( done1 == 0 ) {
|
if( done1 == 0 ) {
|
||||||
done1 = ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data, &free_after );
|
done1 = ompi_convertor_pack( send_convertor, &iov, &iov_count, &max_data, &free_after );
|
||||||
assert( free_after == 0 );
|
assert( free_after == 0 );
|
||||||
if( 1 == done1 ) {
|
|
||||||
printf( "pack finished\n" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( done2 == 0 ) {
|
if( done2 == 0 ) {
|
||||||
done2 = ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data, &free_after );
|
done2 = ompi_convertor_unpack( recv_convertor, &iov, &iov_count, &max_data, &free_after );
|
||||||
assert( free_after == 0 );
|
assert( free_after == 0 );
|
||||||
if( 1 == done2 ) {
|
|
||||||
printf( "unpack finished\n" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
length += max_data;
|
length += max_data;
|
||||||
@ -926,156 +937,186 @@ int main( int argc, char* argv[] )
|
|||||||
* By default simulate homogeneous architectures.
|
* By default simulate homogeneous architectures.
|
||||||
*/
|
*/
|
||||||
remote_arch = ompi_mpi_local_arch;
|
remote_arch = ompi_mpi_local_arch;
|
||||||
|
/*
|
||||||
printf( "\n\n/*\n * TEST INVERSED VECTOR\n */\n\n" );
|
printf( "\n\n#\n * TEST INVERSED VECTOR\n #\n\n" );
|
||||||
pdt = create_inversed_vector( &ompi_mpi_int, 10 );
|
pdt = create_inversed_vector( &ompi_mpi_int, 10 );
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 100);
|
local_copy_ddt_count(pdt, 100);
|
||||||
local_copy_with_convertor(pdt, 100, 956);
|
local_copy_with_convertor(pdt, 100, 956);
|
||||||
}
|
}
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
printf( "\n\n/*\n * TEST STRANGE DATATYPE\n */\n\n" );
|
printf( "\n\n#\n * TEST STRANGE DATATYPE\n #\n\n" );
|
||||||
pdt = create_strange_dt();
|
pdt = create_strange_dt();
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 1);
|
local_copy_ddt_count(pdt, 1);
|
||||||
local_copy_with_convertor(pdt, 1, 956);
|
local_copy_with_convertor(pdt, 1, 956);
|
||||||
}
|
}
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
printf( "\n\n/*\n * TEST UPPER TRIANGULAR MATRIX (size 100)\n */\n\n" );
|
printf( "\n\n#\n * TEST UPPER TRIANGULAR MATRIX (size 100)\n #\n\n" );
|
||||||
pdt = upper_matrix(100);
|
pdt = upper_matrix(100);
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 1);
|
local_copy_ddt_count(pdt, 1);
|
||||||
local_copy_with_convertor(pdt, 1, 48);
|
local_copy_with_convertor(pdt, 1, 48);
|
||||||
}
|
}
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
mpich_typeub();
|
mpich_typeub();
|
||||||
mpich_typeub2();
|
mpich_typeub2();
|
||||||
mpich_typeub3();
|
mpich_typeub3();
|
||||||
|
|
||||||
printf( "\n\n/*\n * TEST UPPER MATRIX\n */\n\n" );
|
printf( "\n\n#\n * TEST UPPER MATRIX\n #\n\n" );
|
||||||
rc = test_upper( length );
|
rc = test_upper( length );
|
||||||
if( rc == 0 )
|
if( rc == 0 )
|
||||||
printf( "decode [PASSED]\n" );
|
printf( "decode [PASSED]\n" );
|
||||||
else
|
else
|
||||||
printf( "decode [NOT PASSED]\n" );
|
printf( "decode [NOT PASSED]\n" );
|
||||||
|
|
||||||
printf( "\n\n/*\n * TEST MATRIX BORDERS\n */\n\n" );
|
printf( "\n\n#\n * TEST MATRIX BORDERS\n #\n\n" );
|
||||||
pdt = test_matrix_borders( length, 100 );
|
pdt = test_matrix_borders( length, 100 );
|
||||||
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
||||||
ompi_ddt_dump( pdt );
|
ompi_ddt_dump( pdt );
|
||||||
}
|
}
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
printf( "\n\n/*\n * TEST CONTIGUOUS\n */\n\n" );
|
printf( "\n\n#\n * TEST CONTIGUOUS\n #\n\n" );
|
||||||
pdt = test_contiguous();
|
pdt = test_contiguous();
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
printf( "\n\n/*\n * TEST STRUCT\n */\n\n" );
|
printf( "\n\n#\n * TEST STRUCT\n #\n\n" );
|
||||||
pdt = test_struct();
|
pdt = test_struct();
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
pdt1 = ompi_ddt_create( -1 );
|
pdt1 = ompi_ddt_create( -1 );
|
||||||
pdt2 = ompi_ddt_create( -1 );
|
pdt2 = ompi_ddt_create( -1 );
|
||||||
pdt3 = ompi_ddt_create( -1 );
|
pdt3 = ompi_ddt_create( -1 );
|
||||||
ompi_ddt_add( pdt3, ompi_ddt_basicDatatypes[DT_INT], 10, 0, -1 );
|
ompi_ddt_add( pdt3, ompi_ddt_basicDatatypes[DT_INT], 10, 0, -1 );
|
||||||
ompi_ddt_add( pdt3, ompi_ddt_basicDatatypes[DT_FLOAT], 5, 10 * sizeof(int), -1 );
|
ompi_ddt_add( pdt3, ompi_ddt_basicDatatypes[DT_FLOAT], 5, 10 * sizeof(int), -1 );
|
||||||
|
|
||||||
ompi_ddt_add( pdt2, ompi_ddt_basicDatatypes[DT_INT], 1, 0, -1 );
|
ompi_ddt_add( pdt2, ompi_ddt_basicDatatypes[DT_INT], 1, 0, -1 );
|
||||||
ompi_ddt_add( pdt2, pdt3, 3, sizeof(int) * 1, -1 );
|
ompi_ddt_add( pdt2, pdt3, 3, sizeof(int) * 1, -1 );
|
||||||
|
|
||||||
ompi_ddt_add( pdt1, ompi_ddt_basicDatatypes[DT_LONG_LONG_INT], 5, 0, -1 );
|
ompi_ddt_add( pdt1, ompi_ddt_basicDatatypes[DT_LONG_LONG_INT], 5, 0, -1 );
|
||||||
ompi_ddt_add( pdt1, ompi_ddt_basicDatatypes[DT_LONG_DOUBLE], 2, sizeof(long long) * 5, -1 );
|
ompi_ddt_add( pdt1, ompi_ddt_basicDatatypes[DT_LONG_DOUBLE], 2, sizeof(long long) * 5, -1 );
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
||||||
ompi_ddt_dump( pdt1 );
|
ompi_ddt_dump( pdt1 );
|
||||||
}
|
}
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
||||||
ompi_ddt_dump( pdt2 );
|
ompi_ddt_dump( pdt2 );
|
||||||
}
|
}
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
if( outputFlags & DUMP_DATA_AFTER_COMMIT ) {
|
||||||
ompi_ddt_dump( pdt3 );
|
ompi_ddt_dump( pdt3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
OBJ_RELEASE( pdt1 ); assert( pdt1 == NULL );
|
|
||||||
OBJ_RELEASE( pdt2 ); assert( pdt2 == NULL );
|
|
||||||
OBJ_RELEASE( pdt3 ); assert( pdt3 == NULL );
|
|
||||||
|
|
||||||
|
OBJ_RELEASE( pdt1 ); assert( pdt1 == NULL );
|
||||||
|
OBJ_RELEASE( pdt2 ); assert( pdt2 == NULL );
|
||||||
|
OBJ_RELEASE( pdt3 ); assert( pdt3 == NULL );
|
||||||
|
*/
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
printf( " Contiguous data-type (MPI_DOUBLE)\n" );
|
printf( " Contiguous data-type (MPI_DOUBLE)\n" );
|
||||||
pdt = MPI_DOUBLE;
|
pdt = MPI_DOUBLE;
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 4500);
|
local_copy_ddt_count(pdt, 4500);
|
||||||
local_copy_with_convertor( pdt, 4500, 12 );
|
local_copy_with_convertor( pdt, 4500, 12 );
|
||||||
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
||||||
}
|
}
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
printf( "Contiguous multiple data-type\n" );
|
|
||||||
pdt = create_contiguous_type( MPI_DOUBLE, 4500 );
|
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 1);
|
printf( "Contiguous multiple data-type (4500*1)\n" );
|
||||||
local_copy_with_convertor( pdt, 1, 12 );
|
pdt = create_contiguous_type( MPI_DOUBLE, 4500 );
|
||||||
local_copy_with_convertor_2datatypes( pdt, 1, pdt, 1, 12 );
|
local_copy_ddt_count(pdt, 1);
|
||||||
|
local_copy_with_convertor( pdt, 1, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 1, pdt, 1, 12 );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
printf( "Contiguous multiple data-type (450*10)\n" );
|
||||||
|
pdt = create_contiguous_type( MPI_DOUBLE, 450 );
|
||||||
|
local_copy_ddt_count(pdt, 10);
|
||||||
|
local_copy_with_convertor( pdt, 10, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 10, pdt, 10, 12 );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
printf( "Contiguous multiple data-type (45*100)\n" );
|
||||||
|
pdt = create_contiguous_type( MPI_DOUBLE, 45 );
|
||||||
|
local_copy_ddt_count(pdt, 100);
|
||||||
|
local_copy_with_convertor( pdt, 100, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 100, pdt, 100, 12 );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
printf( "Contiguous multiple data-type (100*45)\n" );
|
||||||
|
pdt = create_contiguous_type( MPI_DOUBLE, 100 );
|
||||||
|
local_copy_ddt_count(pdt, 45);
|
||||||
|
local_copy_with_convertor( pdt, 45, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 45, pdt, 45, 12 );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
printf( "Contiguous multiple data-type (10*450)\n" );
|
||||||
|
pdt = create_contiguous_type( MPI_DOUBLE, 10 );
|
||||||
|
local_copy_ddt_count(pdt, 450);
|
||||||
|
local_copy_with_convertor( pdt, 450, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 450, pdt, 450, 12 );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
printf( "Contiguous multiple data-type (1*4500)\n" );
|
||||||
|
pdt = create_contiguous_type( MPI_DOUBLE, 1 );
|
||||||
|
local_copy_ddt_count(pdt, 4500);
|
||||||
|
local_copy_with_convertor( pdt, 4500, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
}
|
}
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
/*
|
||||||
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
|
printf( "Vector data-type\n" );
|
||||||
|
pdt = create_vector_type( MPI_DOUBLE, 450, 10, 11 );
|
||||||
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
|
local_copy_ddt_count(pdt, 1);
|
||||||
|
local_copy_with_convertor( pdt, 1, 12 );
|
||||||
|
local_copy_with_convertor_2datatypes( pdt, 1, pdt, 1, 12 );
|
||||||
|
}
|
||||||
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
printf( "Vector data-type\n" );
|
pdt = test_struct_char_double();
|
||||||
pdt = create_vector_type( MPI_DOUBLE, 450, 10, 11 );
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
local_copy_ddt_count(pdt, 4500);
|
||||||
local_copy_ddt_count(pdt, 1);
|
local_copy_with_convertor( pdt, 4500, 12 );
|
||||||
local_copy_with_convertor( pdt, 1, 12 );
|
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
||||||
local_copy_with_convertor_2datatypes( pdt, 1, pdt, 1, 12 );
|
}
|
||||||
}
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
pdt = test_struct_char_double();
|
pdt = test_create_twice_two_doubles();
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 4500);
|
local_copy_ddt_count(pdt, 4500);
|
||||||
local_copy_with_convertor( pdt, 4500, 12 );
|
local_copy_with_convertor( pdt, 4500, 12 );
|
||||||
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
||||||
}
|
}
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
pdt = test_create_twice_two_doubles();
|
pdt = test_create_blacs_type();
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
local_copy_ddt_count(pdt, 4500);
|
local_copy_ddt_count(pdt, 4500);
|
||||||
local_copy_with_convertor( pdt, 4500, 12 );
|
local_copy_with_convertor( pdt, 4500, 956 );
|
||||||
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 12 );
|
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 956 );
|
||||||
}
|
}
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
|
||||||
pdt = test_create_blacs_type();
|
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
|
||||||
local_copy_ddt_count(pdt, 4500);
|
|
||||||
local_copy_with_convertor( pdt, 4500, 956 );
|
|
||||||
local_copy_with_convertor_2datatypes( pdt, 4500, pdt, 4500, 956 );
|
|
||||||
}
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
|
||||||
OBJ_RELEASE( pdt ); assert( pdt == NULL );
|
|
||||||
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
|
||||||
pdt1 = test_create_blacs_type1( &ompi_mpi_int );
|
|
||||||
pdt2 = test_create_blacs_type2( &ompi_mpi_int );
|
|
||||||
if( outputFlags & CHECK_PACK_UNPACK ) {
|
|
||||||
local_copy_with_convertor_2datatypes( pdt1, 1, pdt2, 1, 100 );
|
|
||||||
}
|
|
||||||
printf( ">>--------------------------------------------<<\n" );
|
|
||||||
OBJ_RELEASE( pdt1 ); assert( pdt1 == NULL );
|
|
||||||
OBJ_RELEASE( pdt2 ); assert( pdt2 == NULL );
|
|
||||||
|
|
||||||
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
|
pdt1 = test_create_blacs_type1( &ompi_mpi_int );
|
||||||
|
pdt2 = test_create_blacs_type2( &ompi_mpi_int );
|
||||||
|
if( outputFlags & CHECK_PACK_UNPACK ) {
|
||||||
|
local_copy_with_convertor_2datatypes( pdt1, 1, pdt2, 1, 100 );
|
||||||
|
}
|
||||||
|
printf( ">>--------------------------------------------<<\n" );
|
||||||
|
OBJ_RELEASE( pdt1 ); assert( pdt1 == NULL );
|
||||||
|
OBJ_RELEASE( pdt2 ); assert( pdt2 == NULL );
|
||||||
|
*/
|
||||||
/* clean-ups all data allocations */
|
/* clean-ups all data allocations */
|
||||||
ompi_ddt_finalize();
|
ompi_ddt_finalize();
|
||||||
|
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user