发行说明¶
cuFFTMp 11.2.6 EA (HPC-SDK 24.07)¶
新功能¶
支持具有多节点 NVLINK (MNNVL) 的系统。
支持 NVSHMEM 3.0.6,它提供 NVSHMEM 主机和设备库之间的 ABI 向后兼容性。从 NVSHMEM 3.0.6 开始,较新的主机库将继续与同一主版本中的早期设备库版本兼容。这意味着 cuFFTMp 11.2.6(与 NVSHMEM 3.0.6 一起发布)可以链接到未来的 NVSHMEM 3.x 主机库。有关更多详细信息,请参阅兼容性。
弃用¶
不适用
已知问题¶
cuFFT LTO 功能目前在 cuFFTMp 中不受支持。
已解决的问题¶
先前版本中
nvshmem_init/nvshmem_finalize
的资源分配问题已修复。
cuFFTMp 11.0.14 EA (HPC-SDK 23.11)¶
新功能¶
支持 CUDA 12 上的 Grace-Hopper CPU-GPU 架构。
弃用¶
不适用
已知问题¶
NVSHMEM 2.10.1 有一个错误,导致首次调用
nvshmem_finalize
释放所有资源。任何后续的nvshmem_init
都将重新初始化所有资源。cuFFTMp 仅在 NVSHMEM 尚未初始化时才初始化它,并在所有 plan 都被销毁时完成 NVSHMEM 的最终化。因此,在第一次nvshmem_finalize
之后和任何后续nvshmem_init
之前的任何 NVSHMEM 或 cuFFTMp API 调用(nvshmem_finalize
除外)都可能导致应用程序崩溃。一种解决方法是在整个应用程序生命周期中保持至少一个 cuFFTMp plan 处于活动状态,并在最后一次调用nvshmem_finalize
之前销毁它。
例如,这可能会崩溃
nvshmem_init(...) void* ptr = nvshmem_malloc(...) cufftCreate(...) cufftMpAttachComm(...) cufftXtMakePlan(...) cufftExecC2C(...) cufftDestroy(...) // Will finalize all NVSHMEM resources (bug) nvshmem_free(ptr) // May crash nvshmem_finalize()
应替换为
nvshmem_init(...) void* ptr = nvshmem_malloc(...) cufftCreate(...) cufftMpAttachComm(...) cufftXtMakePlan(...) cufftExecC2C(...) nvshmem_free(ptr) // Will not crash cufftDestroy(...) nvshmem_finalize()
有关工作示例,请参阅cuFFTMp 和 NVSHMEM C++ 示例。
NVSHMEM 2.10.1 有轻微的资源泄漏,导致在进程生命周期内 NVSHMEM 可以初始化/最终化的次数受到限制。此错误通过死锁或在 cuFFTMp plan 创建时发生段错误来体现。一种解决方法是在整个应用程序中保持至少一个 cuFFTMp plan 处于活动状态,以避免重复的
nvshmem_init
/nvshmem_finalize
。
已解决的问题¶
不适用
cuFFTMp 11.0.5 EA (HPC-SDK 23.3)¶
新功能¶
cuFFTMp 11.0.5 集成了 NVSHMEM 2.8,并同时支持 CUDA 11 和 CUDA 12。匹配的
libnvshmem_host.so
库(具有匹配的 NVSHMEM 和 CUDA 版本)应在运行时可用。添加了对 Hopper GPU 架构的支持。
添加了 NVSHMEM 互操作性支持。应用程序和库现在都可以使用 NVSHMEM 并共享资源,例如 NVSHMEM 分配的缓冲区。这要求应用程序和所有启用 NVSHMEM 的库都动态链接
libnvshmem_host.so
。cuFFTMp 现在可以在没有 MPI 通信器的情况下进行引导。有关更多详细信息,请参阅 cufftMpAttachComm。
cufftXtSetDistribution
API 已更改,请参阅 cufftXtSetDistribution。添加了一个新的
cufftXtSetSubformatDefault
API,让用户无需通过cufftExecC2C
、cufftXtExec
和类似 API 的 cuFFT 多 GPU 描述符即可使用 cuFFTMp。请参阅 cufftXtSetSubformatDefault。改进了单节点、3D、复数到复数变换的性能。
弃用¶
不适用
已知问题¶
HPC-SDK 23.3 发布了 NVSHMEM 2.9,但 cuFFTMP 用户应在运行时指向兼容文件夹中的 NVSHMEM 2.8。请参阅兼容性。
已解决的问题¶
cuFFTMp 现在支持与 cuFFT 相同的 GPU 架构,用于所有单进程功能
cuFFTMp 10.8.1 EA (HPC-SDK 23.1)¶
新功能¶
不适用
弃用¶
不适用
已知/已解决问题¶
HPC-SDK 23.1 发布了 NVSHMEM 2.8,但 cuFFTMP 用户应在运行时指向兼容文件夹中的 NVSHMEM 2.6。请参阅兼容性。
cuFFTMp 10.8.1 EA (HPC-SDK 22.5+)¶
cuFFTMp 10.8.1 集成了 NVSHMEM 2.5.0,并修复了以下指示的几个问题。
新功能¶
不适用
弃用¶
不适用
已知/已解决问题¶
已解决单节点、单精度、3D、复数到复数 2 的幂次变换中 Z > 8192 产生不正确结果的问题。
cuFFTMp 的版本控制已得到纠正。展望未来,cuFFTMp 的版本控制将类似于 cuFFT。请参阅版本控制。
cuFFTMp 0.0.2 EA (HPC-SDK 22.3)¶
新功能¶
改进了
cufftXtSetDistribution
和分布式描述符的性能。这有效地为 Pencil 数据分解提供了全面支持。改进了 Reshape API 的性能。
弃用¶
不适用
已知/已解决问题¶
单节点、单精度、3D、复数到复数 2 的幂次变换中 Z > 8192(例如大小为 2x2x16384 的变换)在使用内置 Slab 分解(即
CUFFT_XT_FORMAT_INPLACE
和CUFFT_XT_FORMAT_INPLACE_SHUFFLED
)时将导致不正确的结果。这将在 cuFFTMp 的未来版本中修复。cufftXtSetDistribution
可以用作一种解决方法。
独立 EA (2021 年 11 月)¶
新功能¶
与 MPI 互操作的新多进程 API。
内置 Slab 分解(使用
CUFFT_XT_FORMAT_INPLACE
和CUFFT_XT_FORMAT_INPLACE_SHUFFLED
描述符)使用cufftMpAttachComm
自定义数据分解(使用
CUFFT_XT_FORMAT_DISTRIBUTED_INPUT
和CUFFT_XT_FORMAT_DISTRIBUTED_OUTPUT
描述符)使用cufftXtSetDistribution
和cufftMpAttachComm
cufftXtMalloc
、cufftXtFree
和cufftXtMemcpy
与上述完全兼容具有
cufftReshapeHandle
和相关 API 的独立分布式 reshape API
此外,以下限制已解除
C2R/Z2D 现在支持 3D 中的
CUFFT_XT_FORMAT_INPLACE
R2C/D2Z 现在支持 3D 中的
CUFFT_XT_FORMAT_INPLACE_SHUFFLED
以下限制已为 CUFFT_XT_FORMAT_INPLACE
和 CUFFT_XT_FORMAT_INPLACE_SHUFFLED
解除
“维度必须分解为小于或等于 127 的素数”
“单精度最大维度大小为 4096”
“双精度最大维度大小为 2048”
以下限制已为 R2C/D2Z/C2R/Z2D 和 CUFFT_XT_FORMAT_INPLACE
和 CUFFT_XT_FORMAT_INPLACE_SHUFFLED
解除
“最快变化的维度大小需要为偶数”
弃用¶
不适用
已知/已解决问题¶
cufftXtMemcpy
与CUFFT_COPY_DEVICE_TO_DEVICE
在之前所有版本的 cuFFT 中为 2D 和 3D 变换返回错误的结果。这已得到修复。