性能考量¶
由于 FFT 是受通信限制的操作,因此 cuFFTMp 的性能很大程度上取决于 GPU 之间的互连。当满足以下条件时,cuFFTMp 性能最佳:
在一个节点内,GPU 通过快速互连(如带有 NVSwitch 的 NVlink)连接
在节点之间,GPU 使用多个快速 Infiniband 网络接口卡连接。
网络具有胖树拓扑,其中每个节点(gpu)都具有到所有其他节点(gpu)的最大带宽。
此外,使用大型 FFT 可以获得最佳性能(以 Flop/s 为单位)。请注意,不保证使用 cuFFTMp 会比使用单个 GPU 提供更好的性能。特别是对于小型变换,使用单个 GPU 可能会提供最佳性能。
警告
由于 cuFFTMp 使用 NVSHMEM,并且 NVSHMEM 会生成代理线程,因此用户应确保每个进程都独占访问至少两个 CPU 核心。
警告
强烈建议将进程绑定到靠近其对应 GPU 的核心、插槽、NUMA 节点等。否则可能会导致性能下降,尤其是在 GPU 数量较多或问题规模较小时。例如,如果每个 GPU 都与不同的 NUMA 节点关联,则建议将进程绑定到最靠近 GPU 的 NUMA 节点。
注意
当 Infiniband 自适应路由可用时,对于许多 GPU 上的大型 FFT,自适应路由通常有利于性能。建议比较启用和禁用自适应路由时的性能。对于 Infiniband 上的 NVSHMEM,通常可以通过将服务级别设置为 1
来启用自适应路由,使用环境变量 NVSHMEM_IB_SL=1
。