在MPI中发送size_t类型号码最安全的方法是什么?例如,我确信将它作为MPI_INT盲目发送是不安全。 MPI_LONG会一直有效吗?
答案 0 :(得分:6)
使用宏怎么样?
#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
然后在您的代码中,每次要传输my_MPI_SIZE_T
类型的数据时,都会使用size_t
作为数据类型。