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_SELF hypre_MPI_COMM_SELF
#define MPI_COMM_TYPE_SHARED hypre_MPI_COMM_TYPE_SHARED #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_FLOAT hypre_MPI_FLOAT
#define MPI_DOUBLE hypre_MPI_DOUBLE #define MPI_DOUBLE hypre_MPI_DOUBLE
#define MPI_LONG_DOUBLE hypre_MPI_LONG_DOUBLE #define MPI_LONG_DOUBLE hypre_MPI_LONG_DOUBLE
#define MPI_INT hypre_MPI_INT #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_CHAR hypre_MPI_CHAR
#define MPI_LONG hypre_MPI_LONG #define MPI_LONG hypre_MPI_LONG
#define MPI_BYTE hypre_MPI_BYTE #define MPI_BYTE hypre_MPI_BYTE
@ -317,6 +317,7 @@ typedef HYPRE_Int hypre_MPI_Info;
#define hypre_MPI_BYTE 6 #define hypre_MPI_BYTE 6
#define hypre_MPI_REAL 7 #define hypre_MPI_REAL 7
#define hypre_MPI_COMPLEX 8 #define hypre_MPI_COMPLEX 8
#define hypre_MPI_LONG_LONG_INT 9
#define hypre_MPI_SUM 0 #define hypre_MPI_SUM 0
#define hypre_MPI_MIN 1 #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_Group group,
hypre_MPI_Comm *newcomm ) hypre_MPI_Comm *newcomm )
{ {
*newcomm = hypre_MPI_COMM_NULL;
return(0); return(0);
} }
@ -80,6 +81,7 @@ HYPRE_Int
hypre_MPI_Comm_dup( hypre_MPI_Comm comm, hypre_MPI_Comm_dup( hypre_MPI_Comm comm,
hypre_MPI_Comm *newcomm ) hypre_MPI_Comm *newcomm )
{ {
*newcomm = comm;
return(0); return(0);
} }
@ -182,7 +184,29 @@ hypre_MPI_Allgather( void *sendbuf,
HYPRE_Int *csendbuf = (HYPRE_Int *)sendbuf; HYPRE_Int *csendbuf = (HYPRE_Int *)sendbuf;
for (i = 0; i < sendcount; i++) 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; break;
@ -193,7 +217,18 @@ hypre_MPI_Allgather( void *sendbuf,
double *csendbuf = (double *)sendbuf; double *csendbuf = (double *)sendbuf;
for (i = 0; i < sendcount; i++) 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; break;
@ -204,7 +239,18 @@ hypre_MPI_Allgather( void *sendbuf,
char *csendbuf = (char *)sendbuf; char *csendbuf = (char *)sendbuf;
for (i = 0; i < sendcount; i++) 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; break;
@ -221,7 +267,7 @@ hypre_MPI_Allgather( void *sendbuf,
HYPRE_Real *csendbuf = (HYPRE_Real *)sendbuf; HYPRE_Real *csendbuf = (HYPRE_Real *)sendbuf;
for (i = 0; i < sendcount; i++) for (i = 0; i < sendcount; i++)
{ {
crecvbuf[i] = csendbuf[i]; crecvbuf[i] = csendbuf[i];
} }
} }
break; break;
@ -232,7 +278,7 @@ hypre_MPI_Allgather( void *sendbuf,
HYPRE_Complex *csendbuf = (HYPRE_Complex *)sendbuf; HYPRE_Complex *csendbuf = (HYPRE_Complex *)sendbuf;
for (i = 0; i < sendcount; i++) for (i = 0; i < sendcount; i++)
{ {
crecvbuf[i] = csendbuf[i]; crecvbuf[i] = csendbuf[i];
} }
} }
break; break;
@ -495,7 +541,28 @@ hypre_MPI_Allreduce( void *sendbuf,
{ {
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 < 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; break;
@ -510,6 +577,17 @@ hypre_MPI_Allreduce( void *sendbuf,
} }
break; 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: case hypre_MPI_CHAR:
{ {
char *crecvbuf = (char *)recvbuf; char *crecvbuf = (char *)recvbuf;
@ -521,6 +599,17 @@ hypre_MPI_Allreduce( void *sendbuf,
} }
break; 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: case hypre_MPI_BYTE:
{ {
hypre_Memcpy(recvbuf, sendbuf, count, HYPRE_MEMORY_HOST, HYPRE_MEMORY_HOST); 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_SELF hypre_MPI_COMM_SELF
#define MPI_COMM_TYPE_SHARED hypre_MPI_COMM_TYPE_SHARED #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_FLOAT hypre_MPI_FLOAT
#define MPI_DOUBLE hypre_MPI_DOUBLE #define MPI_DOUBLE hypre_MPI_DOUBLE
#define MPI_LONG_DOUBLE hypre_MPI_LONG_DOUBLE #define MPI_LONG_DOUBLE hypre_MPI_LONG_DOUBLE
#define MPI_INT hypre_MPI_INT #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_CHAR hypre_MPI_CHAR
#define MPI_LONG hypre_MPI_LONG #define MPI_LONG hypre_MPI_LONG
#define MPI_BYTE hypre_MPI_BYTE #define MPI_BYTE hypre_MPI_BYTE
@ -168,6 +168,7 @@ typedef HYPRE_Int hypre_MPI_Info;
#define hypre_MPI_BYTE 6 #define hypre_MPI_BYTE 6
#define hypre_MPI_REAL 7 #define hypre_MPI_REAL 7
#define hypre_MPI_COMPLEX 8 #define hypre_MPI_COMPLEX 8
#define hypre_MPI_LONG_LONG_INT 9
#define hypre_MPI_SUM 0 #define hypre_MPI_SUM 0
#define hypre_MPI_MIN 1 #define hypre_MPI_MIN 1