支持的功能¶
以下限制适用于 cuFFTMp
如果已定义,
CUDA_VISIBLE_DEVICES
在一个节点内的所有进程上应相同。不支持回调。
由于 NVSHMEM 产生一个隐藏线程来处理通信,因此每个进程应独占访问至少 2 个 CPU 核心。
仅支持 2D 和 3D 变换,具有以下限制
前两个维度的长度必须大于或等于 GPU 的数量
当使用内置数据布局(
CUFFT_XT_FORMAT_INPLACE
和CUFFT_XT_FORMAT_INPLACE_SHUFFLED
)时
在 2D 中,R2C 仅支持
CUFFT_XT_FORMAT_INPLACE
输入;在 2D 中,C2R 仅支持
CUFFT_XT_FORMAT_INPLACE_SHUFFLED
输入;不允许步幅;
仅允许原地数据布局。 特别是,对于 R2C,实数维度必须填充以容纳输出中的复数元素。
允许使用不同的 MPI 通信器(对于
MPI_COMM_WORLD
中的不同进程),但这些 MPI 通信器不能重叠:对于给定的进程,不能将 cuFFTMp 与两个不同的 MPI 通信器一起使用。只有 NVSHMEM 分配的内存才能用于描述符和工作区。 特别是,不能使用
cudaMalloc
分配的内存。 请注意,使用cufftXtMalloc
分配的内存会自动进行 NVSHMEM 分配。