实现高性能#

在高性​​能计算中,编写自定义代码的能力使用户能够实现更好的性能。对于 cuFFTDx 而言,现有 FFT 应用程序的性能改进潜力很高,但这在很大程度上取决于库的使用方式。以常规 cuFFT 库为基准,性能可能会好或差一个数量级。因此,将现有资源移植到 cuFFTDx 应该始终与性能分析并行进行。下面我们列出一些可能在此过程中有所帮助的通用建议。

通用建议#

  • 尝试使用库提供的默认设置以获得最佳计算性能。

  • 计算密集型和内存密集型内核的最佳参数可能并不相同。

  • 确保 FFT 内核运行足够的块以填充 GPU,从而达到峰值性能。

  • 将相邻的内存密集型内核(预处理和后处理)与 FFT 内核合并,以节省全局内存访问。

内存管理#

  • 避免从全局内存读取/写入数据。

  • 确保全局内存读取/写入是合并的(如果需要,增加 每个块的 FFT 算子 的值)。

  • 使用 shared 共享内存或额外的寄存器来存储临时数据。

内核融合#

  • 对于复杂的内核,请考虑调整 FFT 操作以匹配用户内核。(例如,调整 每个线程的元素算子 将会改变所需的 CUDA 块大小)。即将推出的 cuFFTDx 版本将提供更多自定义选项。

  • 对于简单的操作,请考虑将操作合并到针对 FFT 性能优化的 FFT 内核中。

高级#

延伸阅读#

参考文献#