hypre MPI interface without MPI and with longdouble (#465)

This PR will fix #439 where hypre was configured with --enable-longdouble --without-MPI.
This commit is contained in:
Ruipeng Li 2021-09-20 10:43:27 -07:00 committed by GitHub
parent 5971f0b979
commit c9b1679970
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 100 additions and 9 deletions

View File

@ -194,13 +194,13 @@ extern "C" {
#define MPI_COMM_SELF hypre_MPI_COMM_SELF
#define MPI_COMM_TYPE_SHARED hypre_MPI_COMM_TYPE_SHARED
#define MPI_BOTTOM hypre_MPI_BOTTOM
#define MPI_BOTTOM hypre_MPI_BOTTOM
#define MPI_FLOAT hypre_MPI_FLOAT
#define MPI_DOUBLE hypre_MPI_DOUBLE
#define MPI_LONG_DOUBLE hypre_MPI_LONG_DOUBLE
#define MPI_INT hypre_MPI_INT
#define MPI_LONG_LONG_INT hypre_MPI_INT
#define MPI_LONG_LONG_INT hypre_MPI_LONG_LONG_INT
#define MPI_CHAR hypre_MPI_CHAR
#define MPI_LONG hypre_MPI_LONG
#define MPI_BYTE hypre_MPI_BYTE
@ -317,6 +317,7 @@ typedef HYPRE_Int hypre_MPI_Info;
#define hypre_MPI_BYTE 6
#define hypre_MPI_REAL 7
#define hypre_MPI_COMPLEX 8
#define hypre_MPI_LONG_LONG_INT 9
#define hypre_MPI_SUM 0
#define hypre_MPI_MIN 1

View File

@ -73,6 +73,7 @@ hypre_MPI_Comm_create( hypre_MPI_Comm comm,
hypre_MPI_Group group,
hypre_MPI_Comm *newcomm )
{
*newcomm = hypre_MPI_COMM_NULL;
return(0);
}
@ -80,6 +81,7 @@ HYPRE_Int
hypre_MPI_Comm_dup( hypre_MPI_Comm comm,
hypre_MPI_Comm *newcomm )
{
*newcomm = comm;
return(0);
}
@ -182,7 +184,29 @@ hypre_MPI_Allgather( void *sendbuf,
HYPRE_Int *csendbuf = (HYPRE_Int *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_LONG_LONG_INT:
{
HYPRE_BigInt *crecvbuf = (HYPRE_BigInt *)recvbuf;
HYPRE_BigInt *csendbuf = (HYPRE_BigInt *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_FLOAT:
{
float *crecvbuf = (float *)recvbuf;
float *csendbuf = (float *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
@ -193,7 +217,18 @@ hypre_MPI_Allgather( void *sendbuf,
double *csendbuf = (double *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_LONG_DOUBLE:
{
long double *crecvbuf = (long double *)recvbuf;
long double *csendbuf = (long double *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
@ -204,7 +239,18 @@ hypre_MPI_Allgather( void *sendbuf,
char *csendbuf = (char *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_LONG:
{
hypre_longint *crecvbuf = (hypre_longint *)recvbuf;
hypre_longint *csendbuf = (hypre_longint *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
@ -221,7 +267,7 @@ hypre_MPI_Allgather( void *sendbuf,
HYPRE_Real *csendbuf = (HYPRE_Real *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
crecvbuf[i] = csendbuf[i];
}
}
break;
@ -232,7 +278,7 @@ hypre_MPI_Allgather( void *sendbuf,
HYPRE_Complex *csendbuf = (HYPRE_Complex *)sendbuf;
for (i = 0; i < sendcount; i++)
{
crecvbuf[i] = csendbuf[i];
crecvbuf[i] = csendbuf[i];
}
}
break;
@ -495,7 +541,28 @@ hypre_MPI_Allreduce( void *sendbuf,
{
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_LONG_LONG_INT:
{
HYPRE_BigInt *crecvbuf = (HYPRE_BigInt *)recvbuf;
HYPRE_BigInt *csendbuf = (HYPRE_BigInt *)sendbuf;
for (i = 0; i < count; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_FLOAT:
{
float *crecvbuf = (float *)recvbuf;
float *csendbuf = (float *)sendbuf;
for (i = 0; i < count; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
@ -510,6 +577,17 @@ hypre_MPI_Allreduce( void *sendbuf,
}
break;
case hypre_MPI_LONG_DOUBLE:
{
long double *crecvbuf = (long double *)recvbuf;
long double *csendbuf = (long double *)sendbuf;
for (i = 0; i < count; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_CHAR:
{
char *crecvbuf = (char *)recvbuf;
@ -521,6 +599,17 @@ hypre_MPI_Allreduce( void *sendbuf,
}
break;
case hypre_MPI_LONG:
{
hypre_longint *crecvbuf = (hypre_longint *)recvbuf;
hypre_longint *csendbuf = (hypre_longint *)sendbuf;
for (i = 0; i < count; i++)
{
crecvbuf[i] = csendbuf[i];
}
}
break;
case hypre_MPI_BYTE:
{
hypre_Memcpy(recvbuf, sendbuf, count, HYPRE_MEMORY_HOST, HYPRE_MEMORY_HOST);

View File

@ -45,13 +45,13 @@ extern "C" {
#define MPI_COMM_SELF hypre_MPI_COMM_SELF
#define MPI_COMM_TYPE_SHARED hypre_MPI_COMM_TYPE_SHARED
#define MPI_BOTTOM hypre_MPI_BOTTOM
#define MPI_BOTTOM hypre_MPI_BOTTOM
#define MPI_FLOAT hypre_MPI_FLOAT
#define MPI_DOUBLE hypre_MPI_DOUBLE
#define MPI_LONG_DOUBLE hypre_MPI_LONG_DOUBLE
#define MPI_INT hypre_MPI_INT
#define MPI_LONG_LONG_INT hypre_MPI_INT
#define MPI_LONG_LONG_INT hypre_MPI_LONG_LONG_INT
#define MPI_CHAR hypre_MPI_CHAR
#define MPI_LONG hypre_MPI_LONG
#define MPI_BYTE hypre_MPI_BYTE
@ -168,6 +168,7 @@ typedef HYPRE_Int hypre_MPI_Info;
#define hypre_MPI_BYTE 6
#define hypre_MPI_REAL 7
#define hypre_MPI_COMPLEX 8
#define hypre_MPI_LONG_LONG_INT 9
#define hypre_MPI_SUM 0
#define hypre_MPI_MIN 1