77 lines
3.3 KiB
C
77 lines
3.3 KiB
C
/*--------------------------------------------------------------------------
|
|
* hypre_ParCSRCommPkg:
|
|
* Structure containing information for doing communications
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
typedef struct
|
|
{
|
|
MPI_Comm comm;
|
|
|
|
int num_sends;
|
|
int *send_procs;
|
|
int *send_map_starts;
|
|
int *send_map_elmts;
|
|
|
|
int num_recvs;
|
|
int *recv_procs;
|
|
int *recv_vec_starts;
|
|
|
|
/* remote communication information */
|
|
MPI_Datatype *send_mpi_types;
|
|
MPI_Datatype *recv_mpi_types;
|
|
|
|
} hypre_ParCSRCommPkg;
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* hypre_ParCSRCommHandle:
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
typedef struct
|
|
{
|
|
hypre_ParCSRCommPkg *comm_pkg;
|
|
void *send_data;
|
|
void *recv_data;
|
|
|
|
int num_requests;
|
|
MPI_Request *requests;
|
|
|
|
} hypre_ParCSRCommHandle;
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Accessor macros: hypre_ParCSRCommPkg
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
#define hypre_ParCSRCommPkgComm(comm_pkg) (comm_pkg -> comm)
|
|
|
|
#define hypre_ParCSRCommPkgNumSends(comm_pkg) (comm_pkg -> num_sends)
|
|
#define hypre_ParCSRCommPkgSendProcs(comm_pkg) (comm_pkg -> send_procs)
|
|
#define hypre_ParCSRCommPkgSendProc(comm_pkg, i) (comm_pkg -> send_procs[i])
|
|
#define hypre_ParCSRCommPkgSendMapStarts(comm_pkg) (comm_pkg -> send_map_starts)
|
|
#define hypre_ParCSRCommPkgSendMapStart(comm_pkg,i)(comm_pkg -> send_map_starts[i])
|
|
#define hypre_ParCSRCommPkgSendMapElmts(comm_pkg) (comm_pkg -> send_map_elmts)
|
|
#define hypre_ParCSRCommPkgSendMapElmt(comm_pkg,i) (comm_pkg -> send_map_elmts[i])
|
|
|
|
#define hypre_ParCSRCommPkgNumRecvs(comm_pkg) (comm_pkg -> num_recvs)
|
|
#define hypre_ParCSRCommPkgRecvProcs(comm_pkg) (comm_pkg -> recv_procs)
|
|
#define hypre_ParCSRCommPkgRecvProc(comm_pkg, i) (comm_pkg -> recv_procs[i])
|
|
#define hypre_ParCSRCommPkgRecvVecStarts(comm_pkg) (comm_pkg -> recv_vec_starts)
|
|
#define hypre_ParCSRCommPkgRecvVecStart(comm_pkg,i)(comm_pkg -> recv_vec_starts[i])
|
|
|
|
#define hypre_ParCSRCommPkgSendMPITypes(comm_pkg) (comm_pkg -> send_mpi_types)
|
|
#define hypre_ParCSRCommPkgSendMPIType(comm_pkg,i) (comm_pkg -> send_mpi_types[i])
|
|
|
|
#define hypre_ParCSRCommPkgRecvMPITypes(comm_pkg) (comm_pkg -> recv_mpi_types)
|
|
#define hypre_ParCSRCommPkgRecvMPIType(comm_pkg,i) (comm_pkg -> recv_mpi_types[i])
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Accessor macros: hypre_ParCSRCommHandle
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
#define hypre_ParCSRCommHandleCommPkg(comm_handle) (comm_handle -> comm_pkg)
|
|
#define hypre_ParCSRCommHandleSendData(comm_handle) (comm_handle -> send_data)
|
|
#define hypre_ParCSRCommHandleRecvData(comm_handle) (comm_handle -> recv_data)
|
|
#define hypre_ParCSRCommHandleNumRequests(comm_handle) (comm_handle -> num_requests)
|
|
#define hypre_ParCSRCommHandleRequests(comm_handle) (comm_handle -> requests)
|
|
#define hypre_ParCSRCommHandleRequest(comm_handle, i) (comm_handle -> requests[i])
|
|
|