1

我正在查看一些 hpc 代码的 sycl 端口的性能,我通过 hipSYCL 在 GV100 卡上运行这些代码。

通过分析器运行代码告诉我,非常高的寄存器使用率可能是性能的限制因素。

有什么方法可以影响 hipSYCL / clang 生成的 gpu 代码的寄存器使用,类似于 nvcc 的-maxregcount选项?

4

1 回答 1

1

hipSYCL 调用 clang CUDA 工具链。据我所知,clang CUDA 和 LLVM nvptx 后端没有直接的类似物-maxregcount,但 LLVM nvptx 后端选项--nvptx-sched4reg可能会有所帮助。它告诉优化器安排最小的注册压力,而不是仅仅跟随源。

如果您使用访问器,您也可以尝试使用 SYCL 2020 USM 指针代替。在 hipSYCL[1] 中,访问器总是会使用更多的寄存器,因为它们还需要存储有效的访问范围和偏移量。

[1] 以及任何其他严重依赖于纯库语义的 SYCL 实现

于 2021-04-07T14:49:57.780 回答