使用 MPI 发送 size_t 类型的数据

Sending size_t type data with MPI

在 MPI 中发送 size_t 类型号码最安全的方法是什么?例如,我确信将其作为 MPI_INT 盲目发送是 安全的。 MPI_LONG 会一直有效吗?

使用宏怎么样?

#include <stdint.h>
#include <limits.h>

#if SIZE_MAX == UCHAR_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_CHAR
#elif SIZE_MAX == USHRT_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_SHORT
#elif SIZE_MAX == UINT_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED
#elif SIZE_MAX == ULONG_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_LONG
#elif SIZE_MAX == ULLONG_MAX
   #define my_MPI_SIZE_T MPI_UNSIGNED_LONG_LONG
#else
   #error "what is happening here?"
#endif

然后在您的代码中,每次要传输 size_t 类型的数据时,您都使用 my_MPI_SIZE_T 作为数据类型。