MPI_DSMat_SendRecvCompactCSR

Public Functions

Name
MPI_DSMat_SendRecvCompactCSR()
Creates an empty object.
~MPI_DSMat_SendRecvCompactCSR()
Deletes the object. It must be deallocated after communication end.
MPI_Request * get_ptr_snd_size_req_data()
Returns the pointer to the status of the outgoing communications of Sizes.
MPI_Request * get_ptr_rcv_size_req_data()
Returns the pointer to the status of the ingoing communications of Sizes.
MPI_Request * get_ptr_snd_csr_req_data()
Returns the pointer to the status of the outgoing communications of CSR.
MPI_Request * get_ptr_rcv_csr_req_data()
Returns the pointer to the status of the ingoing communications of CSR.
void Prepare(const iReg nSend, const iReg nRecv)
Prepares the structures of the MPI messages.
void Send(CommGraph &restrict Graph, CSRMAT< iReg > restrict matL, CSRMAT< iReg > restrict matC, CSRMAT< iReg > *restrict matR, const iReg restrict icom, const type_MPI_iReg restrict dest, const type_MPI_iReg restrict tag1, const type_MPI_iReg restrict tag2, VEC< iReg > &restrict List_rows)
Sends asynchronously the stripe of the DSMat memorized in the process.
void RecvSize(const iReg restrict icom, const type_MPI_iReg restrict source, const type_MPI_iReg restrict tag1, VEC< iExt > &restrict Rcv_size)
Starts to receive the sizes of CSR blocks.
void RecvCSR(const iReg restrict icom, const type_MPI_iReg restrict source, const type_MPI_iReg restrict tag2, const iReg restrict nrows, const iExt restrict nterm, const iReg restrict offset_address_iat, const iExt restrict offset_address_ja, CSRMAT< iReg > &restrict CompactCSR)
Starts to receive CSR blocks.
void nullify_snd_size()
Nullify send buffers for the sizes.
void nullify_snd_csr()
Nullify send buffers for the sizes.
void nullify_rcv_size()
Nullify receve buffers for the sizes.
void nullify_rcv_csr()
Nullify receve buffers for the sizes.

Public Functions Documentation

function MPI_DSMat_SendRecvCompactCSR

inline MPI_DSMat_SendRecvCompactCSR()

Creates an empty object.

function ~MPI_DSMat_SendRecvCompactCSR

~MPI_DSMat_SendRecvCompactCSR()

Deletes the object. It must be deallocated after communication end.

function get_ptr_snd_size_req_data

inline MPI_Request * get_ptr_snd_size_req_data()

Returns the pointer to the status of the outgoing communications of Sizes.

function get_ptr_rcv_size_req_data

inline MPI_Request * get_ptr_rcv_size_req_data()

Returns the pointer to the status of the ingoing communications of Sizes.

function get_ptr_snd_csr_req_data

inline MPI_Request * get_ptr_snd_csr_req_data()

Returns the pointer to the status of the outgoing communications of CSR.

function get_ptr_rcv_csr_req_data

inline MPI_Request * get_ptr_rcv_csr_req_data()

Returns the pointer to the status of the ingoing communications of CSR.

function Prepare

void Prepare(
    const iReg nSend,
    const iReg nRecv
)

Prepares the structures of the MPI messages.

Parameters:

  • nSend number of outgoing communications.
  • nRecv number of incoming communications.

function Send

void Send(
    CommGraph &__restrict__ Graph,
    CSRMAT< iReg > *__restrict__ matL,
    CSRMAT< iReg > *__restrict__ matC,
    CSRMAT< iReg > *__restrict__ matR,
    const iReg __restrict__ icom,
    const type_MPI_iReg __restrict__ dest,
    const type_MPI_iReg __restrict__ tag1,
    const type_MPI_iReg __restrict__ tag2,
    VEC< iReg > &__restrict__ List_rows
)

Sends asynchronously the stripe of the DSMat memorized in the process.

Parameters:

  • Graph communication graph of the matrix stripe to send.
  • matL pointer to the lef CSR blocks of the matrix stripe to send.
  • matC pointer to the diagonal CSR block of the matrix stripe to send.
  • matR pointer to the right CSR blocks of the matrix stripe to send.
  • icom index of the outgoing communication.
  • dest recipient rank.
  • tag1 tag for the size communication.
  • tag2 tag for the CSR communication.

function RecvSize

void RecvSize(
    const iReg __restrict__ icom,
    const type_MPI_iReg __restrict__ source,
    const type_MPI_iReg __restrict__ tag1,
    VEC< iExt > &__restrict__ Rcv_size
)

Starts to receive the sizes of CSR blocks.

Parameters:

  • icom index of the incoming communication.
  • source source rank.
  • tag1 tag for the size communication.
  • RecvSizes incoming Sizes of CSR.

function RecvCSR

void RecvCSR(
    const iReg __restrict__ icom,
    const type_MPI_iReg __restrict__ source,
    const type_MPI_iReg __restrict__ tag2,
    const iReg __restrict__ nrows,
    const iExt __restrict__ nterm,
    const iReg __restrict__ offset_address_iat,
    const iExt __restrict__ offset_address_ja,
    CSRMAT< iReg > &__restrict__ CompactCSR
)

Starts to receive CSR blocks.

Parameters:

  • icom index of the incoming communication.
  • source source rank.
  • tag2 tag for the CSRs communication.
  • nrows number of rows of incoming CSR.
  • nterm number of term of incoming CSR.
  • offset_address_iat shift for the iat terms of incoming CSR.
  • offset_address_ja shift for the ja and coef terms of incoming CSR.
  • RecvCSR incoming compact CSR.

function nullify_snd_size

void nullify_snd_size()

Nullify send buffers for the sizes.

function nullify_snd_csr

void nullify_snd_csr()

Nullify send buffers for the sizes.

function nullify_rcv_size

void nullify_rcv_size()

Nullify receve buffers for the sizes.

function nullify_rcv_csr

void nullify_rcv_csr()

Nullify receve buffers for the sizes.


Updated on 12 February 2021 at 11:59:50 CET