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

@ -200,7 +200,7 @@ extern "C" {
#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);
}
@ -187,6 +189,28 @@ hypre_MPI_Allgather( void *sendbuf,
}
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;
case hypre_MPI_DOUBLE:
{
double *crecvbuf = (double *)recvbuf;
@ -198,6 +222,17 @@ hypre_MPI_Allgather( void *sendbuf,
}
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;
case hypre_MPI_CHAR:
{
char *crecvbuf = (char *)recvbuf;
@ -209,6 +244,17 @@ hypre_MPI_Allgather( void *sendbuf,
}
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;
case hypre_MPI_BYTE:
{
hypre_Memcpy(recvbuf, sendbuf, sendcount, HYPRE_MEMORY_HOST, HYPRE_MEMORY_HOST);
@ -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

@ -51,7 +51,7 @@ extern "C" {
#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