0

我的目标是获得并行化代码的能力,以便能够在 GPU 上运行它,而 Graal 将是拥有可以在任何 GPU 甚至 CPU(英特尔、NVIDIA、AMD 和所以...)。

据我了解,最好的解决方案是使用 OpenCL。但在那之后不久,我还阅读了有关 SYCL 的文章,它旨在简化在 GPU 上运行的代码。

但仅此而已吗?使用较低级别的语言以确保可以在尽可能多的硬件中使用不是更好吗?

我知道所有的兼容性都列在The Khronos Group 网站上,但我正在互联网上阅读所有内容和相反的内容(例如,如果 NVIDIA 卡支持 CUDA,那么它支持 OpenCL,或者 NVIDIA 卡将永远无法与 OpenCL 一起使用,即使OpenCL 应该适用于一切)...

这对我来说是一个新话题,互联网上有很多信息......如果有人能给我一个简单的答案,那就太好了。

4

1 回答 1

2

可能是。

自 2009 年左右以来,所有 AMD/Nvidia/Intel GPU 和所有 Intel CPU 都支持 OpenCL。为了与几乎所有设备实现最佳兼容性,请使用 OpenCL 1.2。好消息是 OpenCL Runtime 包含在图形驱动程序中,因此您无需安装任何额外的东西来使用它或让它在另一台机器上运行。

另一方面,SYCL 较新,但尚未建立得那么好。例如,Nvidia GPU 上尚未正式支持它:https : //forums.developer.nvidia.com/t/is-sycl-available-on-cuda/37717/7 但是已经有 SYCL 实现了与 Nvidia/AMD GPU 兼容,基本上建立在 CUDA 或 OpenCL 1.2 之上,请参见此处:https ://stackoverflow.com/a/63468372/9178992

于 2022-02-10T17:47:41.297 回答