Match the new prototypes.
Some cleanups. This commit was SVN r5485.
Этот коммит содержится в:
родитель
6f92675c56
Коммит
72502a5d17
@ -180,6 +180,8 @@ extern conversion_fct_t ompi_ddt_copy_functions[DT_MAX_PREDEFINED];
|
||||
extern int32_t ompi_ddt_external32_init( void );
|
||||
extern void ompi_ddt_dump_stack( const dt_stack_t* pStack, int stack_pos,
|
||||
const dt_elem_desc_t* pDesc, const char* name );
|
||||
extern void ompi_convertor_dump( ompi_convertor_t* convertor );
|
||||
|
||||
#define SAVE_STACK( PSTACK, INDEX, COUNT, DISP, END_LOOP) \
|
||||
do { \
|
||||
(PSTACK)->index = (INDEX); \
|
||||
@ -196,9 +198,11 @@ do { \
|
||||
(PSTACK) = pTempStack; \
|
||||
} while(0)
|
||||
|
||||
#define MEMCPY( DST, SRC, BLENGTH ) { \
|
||||
#define MEMCPY( DST, SRC, BLENGTH ) \
|
||||
do { \
|
||||
/*printf( "memcpy dest = %p src = %p length = %d\n", (void*)(DST), (void*)(SRC), (int)(BLENGTH) );*/ \
|
||||
memcpy( (DST), (SRC), (BLENGTH) ); }
|
||||
memcpy( (DST), (SRC), (BLENGTH) ); \
|
||||
} while (0)
|
||||
|
||||
#if OMPI_ENABLE_DEBUG
|
||||
#define OMPI_DDT_SAFEGUARD_POINTER( ACTPTR, LENGTH, INITPTR, PDATA, COUNT ) \
|
||||
@ -373,14 +377,14 @@ int ompi_convertor_create_stack_at_begining( ompi_convertor_t* pConvertor, const
|
||||
}
|
||||
|
||||
static inline void
|
||||
convertor_init_generic( ompi_convertor_t* pConv, const dt_desc_t* datatype, int count,
|
||||
convertor_init_generic( ompi_convertor_t* pConv, const ompi_datatype_t* datatype, int count,
|
||||
const void* pUserBuf )
|
||||
{
|
||||
uint32_t required_stack_length = datatype->btypes[DT_LOOP] + 3;
|
||||
|
||||
OBJ_RETAIN( datatype );
|
||||
if( pConv->pDesc != datatype ) {
|
||||
pConv->pDesc = (dt_desc_t*)datatype;
|
||||
pConv->pDesc = (ompi_datatype_t*)datatype;
|
||||
if( pConv->pStack != NULL ) {
|
||||
if( pConv->stack_size > DT_STATIC_STACK_SIZE )
|
||||
free( pConv->pStack );
|
||||
|
@ -19,12 +19,12 @@
|
||||
#include "datatype/datatype.h"
|
||||
#include "datatype/datatype_internal.h"
|
||||
|
||||
int32_t ompi_ddt_duplicate( const dt_desc_t* oldType, dt_desc_t** newType )
|
||||
int32_t ompi_ddt_duplicate( const ompi_datatype_t* oldType, ompi_datatype_t** newType )
|
||||
{
|
||||
dt_desc_t* pdt = ompi_ddt_create( oldType->desc.used );
|
||||
ompi_datatype_t* pdt = ompi_ddt_create( oldType->desc.used );
|
||||
void* temp = pdt->desc.desc; /* temporary copy of the desc pointer */
|
||||
|
||||
memcpy( pdt, oldType, sizeof(dt_desc_t) );
|
||||
memcpy( pdt, oldType, sizeof(ompi_datatype_t) );
|
||||
pdt->desc.desc = temp;
|
||||
memcpy( pdt->desc.desc, oldType->desc.desc, sizeof(dt_elem_desc_t) * oldType->desc.used );
|
||||
pdt->id = 0;
|
||||
@ -40,10 +40,10 @@ int32_t ompi_ddt_duplicate( const dt_desc_t* oldType, dt_desc_t** newType )
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t ompi_ddt_create_contiguous( int count, const dt_desc_t* oldType,
|
||||
dt_desc_t** newType )
|
||||
int32_t ompi_ddt_create_contiguous( int count, const ompi_datatype_t* oldType,
|
||||
ompi_datatype_t** newType )
|
||||
{
|
||||
dt_desc_t* pdt = ompi_ddt_create( oldType->desc.used + 2 );
|
||||
ompi_datatype_t* pdt = ompi_ddt_create( oldType->desc.used + 2 );
|
||||
ompi_ddt_add( pdt, oldType, count, 0, (oldType->ub - oldType->lb) );
|
||||
*newType = pdt;
|
||||
return OMPI_SUCCESS;
|
||||
|
@ -19,12 +19,12 @@
|
||||
#include "datatype/datatype.h"
|
||||
|
||||
int32_t ompi_ddt_create_struct( int count, const int* pBlockLength, const long* pDisp,
|
||||
const dt_desc_t ** pTypes, dt_desc_t** newType )
|
||||
ompi_datatype_t* const * pTypes, ompi_datatype_t** newType )
|
||||
{
|
||||
int i;
|
||||
long disp = 0, endto, lastExtent, lastDisp;
|
||||
int lastBlock;
|
||||
dt_desc_t *pdt, *lastType;
|
||||
ompi_datatype_t *pdt, *lastType;
|
||||
|
||||
if( 0 == count ) {
|
||||
*newType = ompi_ddt_create( disp );
|
||||
@ -38,7 +38,7 @@ int32_t ompi_ddt_create_struct( int count, const int* pBlockLength, const long*
|
||||
disp += pTypes[i]->desc.used;
|
||||
if( pBlockLength[i] != 1 ) disp += 2;
|
||||
}
|
||||
lastType = (dt_desc_t*)pTypes[0];
|
||||
lastType = (ompi_datatype_t*)pTypes[0];
|
||||
lastBlock = pBlockLength[0];
|
||||
lastExtent = lastType->ub - lastType->lb;
|
||||
lastDisp = pDisp[0];
|
||||
@ -51,7 +51,7 @@ int32_t ompi_ddt_create_struct( int count, const int* pBlockLength, const long*
|
||||
} else {
|
||||
disp += lastType->desc.used;
|
||||
if( lastBlock > 1 ) disp += 2;
|
||||
lastType = (dt_desc_t*)pTypes[i];
|
||||
lastType = (ompi_datatype_t*)pTypes[i];
|
||||
lastExtent = lastType->ub - lastType->lb;
|
||||
lastBlock = pBlockLength[i];
|
||||
lastDisp = pDisp[i];
|
||||
@ -61,7 +61,7 @@ int32_t ompi_ddt_create_struct( int count, const int* pBlockLength, const long*
|
||||
disp += lastType->desc.used;
|
||||
if( lastBlock != 1 ) disp += 2;
|
||||
|
||||
lastType = (dt_desc_t*)pTypes[0];
|
||||
lastType = (ompi_datatype_t*)pTypes[0];
|
||||
lastBlock = pBlockLength[0];
|
||||
lastExtent = lastType->ub - lastType->lb;
|
||||
lastDisp = pDisp[0];
|
||||
@ -76,7 +76,7 @@ int32_t ompi_ddt_create_struct( int count, const int* pBlockLength, const long*
|
||||
endto = lastDisp + lastBlock * lastExtent;
|
||||
} else {
|
||||
ompi_ddt_add( pdt, lastType, lastBlock, lastDisp, lastExtent );
|
||||
lastType = (dt_desc_t*)pTypes[i];
|
||||
lastType = (ompi_datatype_t*)pTypes[i];
|
||||
lastExtent = lastType->ub - lastType->lb;
|
||||
lastBlock = pBlockLength[i];
|
||||
lastDisp = pDisp[i];
|
||||
|
@ -25,10 +25,10 @@
|
||||
*/
|
||||
|
||||
int32_t ompi_ddt_create_vector( int count, int bLength, long stride,
|
||||
const dt_desc_t* oldType, dt_desc_t** newType )
|
||||
const ompi_datatype_t* oldType, ompi_datatype_t** newType )
|
||||
{
|
||||
long extent = oldType->ub - oldType->lb;
|
||||
dt_desc_t *pTempData, *pData;
|
||||
ompi_datatype_t *pTempData, *pData;
|
||||
|
||||
pTempData = ompi_ddt_create( oldType->desc.used + 2 );
|
||||
if( (bLength == stride) || (1 >= count) ) { /* the elements are contiguous */
|
||||
@ -53,10 +53,10 @@ int32_t ompi_ddt_create_vector( int count, int bLength, long stride,
|
||||
}
|
||||
|
||||
int32_t ompi_ddt_create_hvector( int count, int bLength, long stride,
|
||||
const dt_desc_t* oldType, dt_desc_t** newType )
|
||||
const ompi_datatype_t* oldType, ompi_datatype_t** newType )
|
||||
{
|
||||
long extent = oldType->ub - oldType->lb;
|
||||
dt_desc_t *pTempData, *pData;
|
||||
ompi_datatype_t *pTempData, *pData;
|
||||
|
||||
pTempData = ompi_ddt_create( oldType->desc.used + 2 );
|
||||
if( ((extent * bLength) == stride) || (1 >= count) ) { /* contiguous */
|
||||
|
@ -230,13 +230,13 @@ int ompi_ddt_local_sizes[DT_MAX_PREDEFINED];
|
||||
#define DECLARE_MPI2_COMPOSED_STRUCT_DDT( PDATA, MPIDDT, MPIDDTNAME, type1, type2, MPIType1, MPIType2 ) \
|
||||
do { \
|
||||
struct { type1 v1; type2 v2; } s[2]; \
|
||||
const dt_desc_t* types[2]; \
|
||||
dt_desc_t* ptype; \
|
||||
ompi_datatype_t* types[2]; \
|
||||
ompi_datatype_t* ptype; \
|
||||
int bLength[2] = {1, 1}; \
|
||||
long base, displ[2]; \
|
||||
\
|
||||
types[0] = (dt_desc_t*)ompi_ddt_basicDatatypes[MPIType1]; \
|
||||
types[1] = (dt_desc_t*)ompi_ddt_basicDatatypes[MPIType2]; \
|
||||
types[0] = (ompi_datatype_t*)ompi_ddt_basicDatatypes[MPIType1]; \
|
||||
types[1] = (ompi_datatype_t*)ompi_ddt_basicDatatypes[MPIType2]; \
|
||||
base = (long)(&(s[0])); \
|
||||
displ[0] = (long)(&(s[0].v1)); \
|
||||
displ[0] -= base; \
|
||||
@ -284,7 +284,7 @@ int32_t ompi_ddt_init( void )
|
||||
int i;
|
||||
|
||||
for( i = DT_CHAR; i < DT_MAX_PREDEFINED; i++ ) {
|
||||
dt_desc_t* datatype = (dt_desc_t*)ompi_ddt_basicDatatypes[i];
|
||||
ompi_datatype_t* datatype = (ompi_datatype_t*)ompi_ddt_basicDatatypes[i];
|
||||
|
||||
datatype->desc.desc = (dt_elem_desc_t*)malloc(2*sizeof(dt_elem_desc_t));
|
||||
datatype->desc.desc[0].flags = DT_FLAG_BASIC | DT_FLAG_CONTIGUOUS | DT_FLAG_DATA;
|
||||
@ -561,7 +561,7 @@ static int __dump_data_desc( dt_elem_desc_t* pDesc, int nbElems, char* ptr )
|
||||
return index;
|
||||
}
|
||||
|
||||
static inline int __dt_contain_basic_datatypes( const dt_desc_t* pData, char* ptr )
|
||||
static inline int __dt_contain_basic_datatypes( const ompi_datatype_t* pData, char* ptr )
|
||||
{
|
||||
int i, index = 0;
|
||||
unsigned long long mask = 1;
|
||||
@ -576,7 +576,7 @@ static inline int __dt_contain_basic_datatypes( const dt_desc_t* pData, char* pt
|
||||
return index;
|
||||
}
|
||||
|
||||
void ompi_ddt_dump( const dt_desc_t* pData )
|
||||
void ompi_ddt_dump( const ompi_datatype_t* pData )
|
||||
{
|
||||
char buffer[1024*10];
|
||||
int index = 0;
|
||||
|
@ -24,13 +24,13 @@
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
#define SAVE_DESC( PELEM, DISP, COUNT ) \
|
||||
#define SAVE_DESC( PELEM, DISP, COUNT, EXTENT ) \
|
||||
do { \
|
||||
(PELEM)->flags = DT_FLAG_BASIC | DT_FLAG_DATA; \
|
||||
(PELEM)->type = DT_BYTE; \
|
||||
(PELEM)->count = (COUNT); \
|
||||
(PELEM)->disp = (DISP); \
|
||||
(PELEM)->extent = 1; \
|
||||
(PELEM)->extent = (EXTENT); \
|
||||
(PELEM)++; \
|
||||
nbElems++; \
|
||||
} while(0)
|
||||
@ -46,15 +46,15 @@ do { \
|
||||
nbElems++; \
|
||||
} while(0)
|
||||
|
||||
int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
int32_t ompi_ddt_optimize_short( ompi_datatype_t* pData, int32_t count,
|
||||
dt_type_desc_t* pTypeDesc )
|
||||
{
|
||||
dt_elem_desc_t* pElemDesc;
|
||||
long lastDisp = 0;
|
||||
dt_stack_t* pStack; /* pointer to the position on the stack */
|
||||
int pos_desc; /* actual position in the description of the derived datatype */
|
||||
int stack_pos = 0;
|
||||
int type, lastLength = 0, nbElems = 0, changes = 0;
|
||||
int32_t pos_desc; /* actual position in the description of the derived datatype */
|
||||
int32_t stack_pos = 0;
|
||||
int32_t type, lastLength = 0, nbElems = 0, changes = 0, lastExtent = 1;
|
||||
long totalDisp;
|
||||
|
||||
pTypeDesc->length = 2 * pData->desc.used + 1 /* for the fake DT_END_LOOP at the end */;
|
||||
@ -75,7 +75,7 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
if( pData->desc.desc[pos_desc].type == DT_END_LOOP ) { /* end of the current loop */
|
||||
dt_loop_desc_t* pStartLoop;
|
||||
if( lastLength != 0 ) {
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength );
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength, lastExtent );
|
||||
lastDisp += lastLength;
|
||||
lastLength = 0;
|
||||
}
|
||||
@ -103,7 +103,7 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
if( loop->extent == end_loop->size ) {
|
||||
/* the whole loop is contiguous */
|
||||
if( (lastDisp + lastLength) != (totalDisp + loop_disp) ) {
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength );
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength, lastExtent );
|
||||
lastLength = 0;
|
||||
lastDisp = totalDisp + loop_disp;
|
||||
}
|
||||
@ -116,7 +116,7 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
lastLength += end_loop->size;
|
||||
counter--;
|
||||
}
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength );
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength, lastExtent );
|
||||
lastDisp += lastLength;
|
||||
lastLength = 0;
|
||||
}
|
||||
@ -125,7 +125,7 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
*/
|
||||
SAVE_ELEM( pElemDesc, DT_LOOP, pData->desc.desc[pos_desc].flags,
|
||||
counter, (long)2, pData->desc.desc[pos_desc].extent );
|
||||
SAVE_DESC( pElemDesc, loop_disp, end_loop->size );
|
||||
SAVE_DESC( pElemDesc, loop_disp, end_loop->size, lastExtent );
|
||||
SAVE_ELEM( pElemDesc, DT_END_LOOP, end_loop->flags,
|
||||
2, end_loop->total_extent, end_loop->size );
|
||||
}
|
||||
@ -133,7 +133,7 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
changes++;
|
||||
} else {
|
||||
if( lastLength != 0 ) {
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength );
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength, lastExtent );
|
||||
lastDisp += lastLength;
|
||||
lastLength = 0;
|
||||
}
|
||||
@ -151,20 +151,23 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
while( pData->desc.desc[pos_desc].flags & DT_FLAG_DATA ) { /* keep doing it until we reach a non datatype element */
|
||||
/* now here we have a basic datatype */
|
||||
type = pData->desc.desc[pos_desc].type;
|
||||
if( (lastDisp + lastLength) == (totalDisp + pData->desc.desc[pos_desc].disp) ) {
|
||||
if( (pData->desc.desc[pos_desc].flags & DT_FLAG_CONTIGUOUS) &&
|
||||
(lastDisp + lastLength) == (totalDisp + pData->desc.desc[pos_desc].disp) ) {
|
||||
lastLength += pData->desc.desc[pos_desc].count * ompi_ddt_basicDatatypes[type]->size;
|
||||
lastExtent = 1;
|
||||
} else {
|
||||
if( lastLength != 0 )
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength );
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength, lastExtent );
|
||||
lastDisp = totalDisp + pData->desc.desc[pos_desc].disp;
|
||||
lastLength = pData->desc.desc[pos_desc].count * ompi_ddt_basicDatatypes[type]->size;
|
||||
lastExtent = 1;
|
||||
}
|
||||
pos_desc++; /* advance to the next data */
|
||||
}
|
||||
}
|
||||
|
||||
if( lastLength != 0 )
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength );
|
||||
SAVE_DESC( pElemDesc, lastDisp, lastLength, lastExtent );
|
||||
/* cleanup the stack */
|
||||
pTypeDesc->used = nbElems - 1; /* except the last fake END_LOOP */
|
||||
return OMPI_SUCCESS;
|
||||
@ -178,7 +181,7 @@ int32_t ompi_ddt_optimize_short( dt_desc_t* pData, int32_t count,
|
||||
}
|
||||
|
||||
#if defined(COMPILE_USELSS_CODE)
|
||||
static int ompi_ddt_unroll( dt_desc_t* pData, int count )
|
||||
static int ompi_ddt_unroll( ompi_datatype_t* pData, int count )
|
||||
{
|
||||
dt_stack_t* pStack; /* pointer to the position on the stack */
|
||||
int pos_desc; /* actual position in the description of the derived datatype */
|
||||
@ -292,9 +295,9 @@ static int ompi_ddt_unroll( dt_desc_t* pData, int count )
|
||||
}
|
||||
#endif /* COMPILE_USELSS_CODE */
|
||||
|
||||
int32_t ompi_ddt_commit( dt_desc_t** data )
|
||||
int32_t ompi_ddt_commit( ompi_datatype_t** data )
|
||||
{
|
||||
dt_desc_t* pData = (dt_desc_t*)*data;
|
||||
ompi_datatype_t* pData = *data;
|
||||
dt_endloop_desc_t* pLast = (dt_endloop_desc_t*)&(pData->desc.desc[pData->desc.used]);
|
||||
|
||||
if( pData->flags & DT_FLAG_COMMITED ) return OMPI_SUCCESS;
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user