如何在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
作为数据类型。