我从问题开始,以防有人可以在不读整篇文章的情况下说些什么:
在 Windows 中使用 C++ 开始使用 Radeon Pro VII 进行编程的最简单方法是什么?
对于任何对背景感兴趣的人:
我是一名机械工程师,对编程和模拟感兴趣。几年前,我决定使用 nVidia 的消费类显卡(当时可能是 GTX 970)和 CUDA 尝试 GPGPU。我决定尝试使用 CUDA 来对抗 OpenCL,这是当时的主要替代方案,因为 CUDA 理论上更容易学习,或者至少比 OpenCL 有更多可用的学习资源。
几周后,我在 Visual Studio 中使用 C++ 实现了我想要的目标(在卡上运行机械模拟)。与 CPU 相比,它并没有提供很大的优势,部分原因是消费卡在双精度数学方面受到严重限制,但我很高兴能够在 GPU 中运行这些模拟。
从那时起,尝试其他具有更多 FP64 功能的卡的想法就一直在我的脑海中回响,但此类卡太贵了,对于爱好者来说很难证明是合理的。 Radeon VII 似乎是一个不错的选择,但在我决定购买之前它们大多已售罄。直到最近几周,我从未听说过的该卡的“PRO”版本大幅降价,我以不到 350 欧元的价格买到了一张新卡,其 1:2 FP64 比例和稍微超过 6 TFLOPS(970 为 0.1。)
由于 AMD 卡无法使用 CUDA,因此在过去的几天里我花了相当多的时间试图了解该卡应该使用什么编程环境。实际上,一开始我只是想找到将 OpenCL 与 Visual Studio 和一些示例结合使用的最佳方法。但我发现的图片似乎比我预想的要复杂得多。
OpenCL 似乎被许多人认为已经死了,他们只是建议不要花任何时间从头开始学习它。除此之外,我还发现了一些我完全不知道的术语:HIP、SYCL、DPC++ 和 oneAPI,有时它们似乎以我尚未掌握的方式组合在一起(即 hipSYCL 等)。在我的研究中,oneAPI 似乎可能是一种方法,因为对 AMD 卡有一些支持(尽管处于测试阶段),直到在安装所需软件包期间的某个时刻,我发现仅针对 Linux 提供了对 AMD 的支持.
所以,我有点迷茫,努力想了解所有这些选项的含义以及在 Radeon 上开始运行一些数学运算的最佳方式。我将非常感谢任何想要阐明该主题的人。
OpenCL 绝不会消亡。它仍然是最好的跨供应商 GPGPU 框架,支持 Windows、Linux、macOS 和 Android,并且支持每个供应商的几乎所有 GPU,同时提供与 Nvidia 上的专有 CUDA 和 AMD 上的专有 HIP 相同的性能。 AMD 的 OpenCL 支持目前非常成熟,Radeon VII Pro 对于 OpenCL 的 FP64 非常出色。在攻读博士学位期间,我在 Radeon VII 上广泛使用了OpenCL。
从这里开始,这将使 OpenCL 立即在 Visual Studio 中运行,并且没有任何代码开销。 在此处查找 OpenCL 参考卡,概述了 OpenCL C 的所有出色的数学和矢量功能等。