Commit 9d7d493b authored by Antonio Pena Monferrer's avatar Antonio Pena Monferrer Committed by Wesley Bland
Browse files

Added support for large-count datatype tests


Signed-off-by: default avatarWesley Bland <wbland@anl.gov>
parent b56f4f1d
......@@ -38,7 +38,7 @@ void MTestGetDbgInfo(int *dbgflag, int *verbose);
typedef struct _MTestDatatype {
MPI_Datatype datatype;
void *buf; /* buffer to use in communication */
int count; /* count to use for this datatype */
MPI_Aint count; /* count to use for this datatype */
int isBasic; /* true if the type is predefined */
int printErrors; /* true if errors should be printed
(used by the CheckBuf routines) */
......@@ -72,7 +72,7 @@ void MTestInitFullDatatypes();
void MTestInitMinDatatypes();
int MTestCheckRecv( MPI_Status *, MTestDatatype * );
int MTestGetDatatypes( MTestDatatype *, MTestDatatype *, int );
int MTestGetDatatypes( MTestDatatype *, MTestDatatype *, MPI_Aint );
void MTestResetDatatypes( void );
void MTestFreeDatatype( MTestDatatype * );
const char *MTestGetDatatypeName( MTestDatatype * );
......
......@@ -82,7 +82,7 @@ static void *MTestTypeContigInit(MTestDatatype * mtype)
if (mtype->count > 0) {
unsigned char *p;
int i, totsize;
MPI_Aint i, totsize;
merr = MPI_Type_extent(mtype->datatype, &size);
if (merr)
MTestPrintError(merr);
......@@ -116,8 +116,8 @@ static int MTestTypeContigCheckbuf(MTestDatatype * mtype)
{
unsigned char *p;
unsigned char expected;
int i, totsize, err = 0, merr;
MPI_Aint size;
int err = 0, merr;
MPI_Aint i, totsize, size;
p = (unsigned char *) mtype->buf;
if (p) {
......@@ -130,7 +130,7 @@ static int MTestTypeContigCheckbuf(MTestDatatype * mtype)
if (p[i] != expected) {
err++;
if (mtype->printErrors && err < 10) {
printf("Data expected = %x but got p[%d] = %x\n", expected, i, p[i]);
printf("Data expected = %x but got p[%ld] = %x\n", expected, i, p[i]);
fflush(stdout);
}
}
......@@ -154,7 +154,8 @@ static void *MTestTypeVectorInit(MTestDatatype * mtype)
if (mtype->count > 0) {
unsigned char *p;
int i, j, k, nc;
int j, k, nc;
MPI_Aint i;
merr = MPI_Type_extent(mtype->datatype, &size);
if (merr)
......@@ -257,7 +258,8 @@ static void *MTestTypeIndexedInit(MTestDatatype * mtype)
if (mtype->count > 0) {
unsigned char *p;
int i, j, k, b, nc;
int j, k, b, nc;
MPI_Aint i;
/* Allocate buffer */
merr = MPI_Type_extent(mtype->datatype, &size);
......@@ -371,7 +373,8 @@ static void *MTestTypeIndexedBlockInit(MTestDatatype * mtype)
if (mtype->count > 0) {
unsigned char *p;
int i, k, j, nc;
int k, j, nc;
MPI_Aint i;
/* Allocate the send/recv buffer */
merr = MPI_Type_extent(mtype->datatype, &size);
......@@ -477,7 +480,8 @@ static void *MTestTypeSubarrayInit(MTestDatatype * mtype)
if (mtype->count > 0) {
unsigned char *p;
int i, k, j, b, nc;
int k, j, b, nc;
MPI_Aint i;
/* Allocate the send/recv buffer */
merr = MPI_Type_extent(mtype->datatype, &size);
......@@ -1240,7 +1244,7 @@ void *MTestTypeInitRecv(MTestDatatype * mtype)
if (mtype->count > 0) {
signed char *p;
int i, totsize;
MPI_Aint i, totsize;
merr = MPI_Type_extent(mtype->datatype, &size);
if (merr)
MTestPrintError(merr);
......
......@@ -178,12 +178,12 @@ void MTestInitMinDatatypes()
/* Routine to define various sets of blocklen/count/stride for derived datatypes. */
/* ------------------------------------------------------------------------------ */
static inline int MTestDdtStructDefine(int ddt_index, int tot_count, int *count,
int *blen, int *stride, int *align_tot_count)
static inline int MTestDdtStructDefine(int ddt_index, MPI_Aint tot_count, MPI_Aint *count,
MPI_Aint *blen, MPI_Aint *stride, MPI_Aint *align_tot_count)
{
int merr = 0;
int ddt_c_st;
int _short = 0, _align_tot_count = 0, _count = 0, _blen = 0, _stride = 0;
MPI_Aint _short = 0, _align_tot_count = 0, _count = 0, _blen = 0, _stride = 0;
ddt_c_st = ddt_index % MTEST_DDT_NUM_SUBTESTS;
/* Get short value according to user specified tot_count.
......@@ -244,7 +244,7 @@ static inline int MTestDdtStructDefine(int ddt_index, int tot_count, int *count,
/* ------------------------------------------------------------------------ */
static inline int MTestGetBasicDatatypes(MTestDatatype * sendtype,
MTestDatatype * recvtype, int tot_count)
MTestDatatype * recvtype, MPI_Aint tot_count)
{
int merr = 0;
int bdt_index = datatype_index - MTEST_BDT_START_IDX;
......@@ -303,11 +303,12 @@ static inline int MTestGetBasicDatatypes(MTestDatatype * sendtype,
/* ------------------------------------------------------------------------ */
static inline int MTestGetSendDerivedDatatypes(MTestDatatype * sendtype,
MTestDatatype * recvtype, int tot_count)
MTestDatatype * recvtype, MPI_Aint tot_count)
{
int merr = 0;
int ddt_datatype_index, ddt_c_dt;
int blen, stride, count, align_tot_count, tsize = 1;
MPI_Count tsize = 1;
MPI_Aint blen, stride, count, align_tot_count;;
MPI_Datatype old_type = MPI_DOUBLE;
/* Check index */
......@@ -336,7 +337,7 @@ static inline int MTestGetSendDerivedDatatypes(MTestDatatype * sendtype,
return merr;
sendtype->count = 1;
merr = MPI_Type_size(sendtype->datatype, &tsize);
merr = MPI_Type_size_x(sendtype->datatype, &tsize);
if (merr)
MTestPrintError(merr);
......@@ -351,11 +352,12 @@ static inline int MTestGetSendDerivedDatatypes(MTestDatatype * sendtype,
}
static inline int MTestGetRecvDerivedDatatypes(MTestDatatype * sendtype,
MTestDatatype * recvtype, int tot_count)
MTestDatatype * recvtype, MPI_Aint tot_count)
{
int merr = 0;
int ddt_datatype_index, ddt_c_dt;
int blen, stride, count, align_tot_count, tsize;
MPI_Count tsize;
MPI_Aint blen, stride, count, align_tot_count;
MPI_Datatype old_type = MPI_DOUBLE;
/* Check index */
......@@ -383,7 +385,7 @@ static inline int MTestGetRecvDerivedDatatypes(MTestDatatype * sendtype,
return merr;
recvtype->count = 1;
merr = MPI_Type_size(recvtype->datatype, &tsize);
merr = MPI_Type_size_x(recvtype->datatype, &tsize);
if (merr)
MTestPrintError(merr);
......@@ -400,7 +402,7 @@ static inline int MTestGetRecvDerivedDatatypes(MTestDatatype * sendtype,
/* ------------------------------------------------------------------------ */
/* Exposed routine to external tests */
/* ------------------------------------------------------------------------ */
int MTestGetDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, int tot_count)
int MTestGetDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, MPI_Aint tot_count)
{
int merr = 0;
......@@ -448,11 +450,11 @@ int MTestGetDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, int to
datatype_index++;
if (verbose >= 2 && datatype_index > 0) {
int ssize, rsize;
MPI_Count ssize, rsize;
const char *sendtype_nm = MTestGetDatatypeName(sendtype);
const char *recvtype_nm = MTestGetDatatypeName(recvtype);
MPI_Type_size(sendtype->datatype, &ssize);
MPI_Type_size(recvtype->datatype, &rsize);
MPI_Type_size_x(sendtype->datatype, &ssize);
MPI_Type_size_x(recvtype->datatype, &rsize);
MTestPrintfMsg(2, "Get datatypes: send = %s(size %d count %d basesize %d), "
"recv = %s(size %d count %d basesize %d), tot_count=%d\n",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment