实现高性能

在高性能计算领域,编写定制化代码的能力能帮助用户实现更优性能表现。对于cuFFTDx而言,现有FFT应用程序的性能提升潜力巨大,但这很大程度上取决于库的使用方式。以常规cuFFT库为基准,性能表现可能会有高达一个数量级的波动。因此将现有代码移植到cuFFTDx时,必须始终同步进行性能分析。以下我们列出可能对此过程有帮助的通用建议。

通用建议

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

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

  • 确保FFT内核运行足够的块以填满GPU,实现峰值性能。

  • 将相邻的内存受限内核(预处理和后处理)与FFT内核合并,以减少全局内存访问次数。

内存管理

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

  • 确保全局内存的读取/写入是合并的(如果需要,增加FFTs Per Block Operator的值)。

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

内核融合

  • 对于复杂的内核,建议调整FFT操作以匹配用户内核。 (例如,调整Elements Per Thread Operator将改变所需的CUDA块大小)。即将发布的 cuFFTDx版本将提供更多自定义选项。

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

高级