支持的功能

以下限制适用于 cuFFTMp

  • 如果已定义,CUDA_VISIBLE_DEVICES 在一个节点内的所有进程上应相同。

  • 不支持回调。

  • 由于 NVSHMEM 产生一个隐藏线程来处理通信,因此每个进程应独占访问至少 2 个 CPU 核心。

  • 仅支持 2D 和 3D 变换,具有以下限制

    • 前两个维度的长度必须大于或等于 GPU 的数量

    • 当使用内置数据布局(CUFFT_XT_FORMAT_INPLACECUFFT_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 分配。