62 const unsigned char *restrict src_store = (
const unsigned char *)src;
63 unsigned char *restrict dst_store = (
unsigned char *)dst;
64 for (
size_t i = 0; i < n; ++i) {
66 = (
const struct Xt_redist_msg *)(
const void *)(src_store + i * src_stride);
68 = (
struct Xt_redist_msg *)(
void *)(dst_store + i * dst_stride);
69 dst_msg->
rank = src_msg->rank;
73 dst_msg->
datatype = src_msg->datatype;
80 unsigned char *restrict msgs_store = (
unsigned char *)msgs;
81 for (
size_t i = 0; i < n; ++i) {
85 if (dt != MPI_DATATYPE_NULL) {
87 for (
size_t j = i + 1; j < n; ++j) {
91 *pdt_j = MPI_DATATYPE_NULL;
int MPI_Type_free(MPI_Datatype *datatype)
int MPI_Type_dup(MPI_Datatype oldtype, MPI_Datatype *newtype)
#define xt_mpi_call(call, comm)
redistribution of data, non-public declarations
void xt_redist_msgs_strided_copy(size_t n, const struct Xt_redist_msg *restrict src, size_t src_stride, struct Xt_redist_msg *restrict dst, size_t dst_stride, MPI_Comm comm, bool dt_dup)
void xt_redist_msgs_strided_destruct(size_t n, struct Xt_redist_msg *msgs, MPI_Comm comm, size_t ofs_stride)