15

我是一名 GPGPU 开发人员,我使用 CUDA 完成了所有工作。最近我为我的家庭设置购买了一个 AMD GPU,并且我一直在阅读有关 SYCL 和 oneAPI 的信息,但我不确定我是否了解它们中的每一个是什么,它们是如何补充的。如果我理解正确的话,SYCL 是由 Khronos 开发的标准,允许在 C++ 中创建并行软件。它需要一个自定义工具链,由 SYCL 实现提供,并且存在多个实现。

另一方面,oneAPI 是 SYCL 的实现,带有一些额外的扩展(将来可能会添加到 SYCL 标准中)和一些具有典型并行库的库,对吧?

由于我有一个 AMD GPU,我想用它来做一些 GPGPU,但是生态系统有点吓人。我们有台面驱动程序、AMD 驱动程序、不同的 openCL 实现、HIP……所有这些假设如何组合在一起?

4

2 回答 2

15

SYCL - 这是来自 Khronos 的开放标准,它有效地为开发人员定义了一个接口,用于对包括 GPU 和其他高性能处理器的异构架构进行编程。有几种 SYCL 实现(在此处列出),美妙之处在于您可以使用 SYCL 编写代码,它可以在不同的编译器实现中工作,这意味着您可以针对各种处理器。该图在显示这些以及它们支持的硬件方面非常有用。每个实施都将指导您了解所需的驱动程序。

oneAPI - 这是由英特尔领导的一项计划,其中包括DPC++,它是 SYCL 实现之一。您可以将其与 Intel 处理器一起使用,并且还支持 Nvidia GPU和对 AMD GPUS 的实验性支持。

如果您有 AMD 硬件,我还建议您探索使用 hip 将并行指令卸载到 AMD 处理器的 hipSYCL 实现。

最终,所有这些都只使用 SYCL 代码,并且一些实现添加了特定的扩展,这些扩展要么最终出现在 SYCL 规范的下一个版本中,要么是为特定硬件上的特定功能而设计的。

于 2020-08-18T12:15:04.840 回答
-2

您可以从 Intel 下载 One API 安装程序。它会指导你。例如,它会告诉您需要集成显卡的计算驱动程序。它可以安装使用 sycl.dll 的 Intel oneAPI DPC++ 编译器,这是一个相当小的库。我不知道 SYCL 是一个标准,我只是在带有 C++ API 的 PyTorch 项目中使用 DLL。有趣的是,您当时如何提到 AMD,以及所有这些 Intell 软件。MESA 是 NVIDIA 卡 afaik 的开源变体。

于 2020-08-17T11:18:38.427 回答