了解 AMD GPU 中的 oneAPI 和 SYCL

Posted

技术标签:

【中文标题】了解 AMD GPU 中的 oneAPI 和 SYCL【英文标题】:Understanding oneAPI and SYCL in AMD GPU 【发布时间】:2020-08-17 10:52:50 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

最近,英特尔赞助 hipSYCL 开发可提高与 DPC++ 兼容性的功能(例如 SYCL 2020 USM)。 urz.uni-heidelberg.de/en/2020-09-29-oneapi-coe-urz【参考方案2】:

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

【讨论】:

感谢您的努力。但是,我认为这根本不能回答我的任何问题...... 但 OneAPI 来自英特尔。来自 Nouveau 的 Mesa。来自 Khronos 的 SYCL 和 OpenCL。你问这一切是如何结合在一起的?我不是说这是答案,但我没有足够的声誉来评论你的问题。但是,如果您使用 Intel 的 OneAPI 安装程序,您将进一步了解事物。 HIP 是 AMD 的 CUDA(或者说是一开始,也许现在只是将 CUDA 代码移植到 AMD)。 OpenCL 类似于 OpenGL,但用于 GPGPU 而不是图形。它由不同的硬件供应商缓慢实施。在我看来,OpenCL 似乎被英特尔放弃了,我认为用 OneAPI 代替它。我认为 Apple 和 Nvidia 在支持 OpenCL 2 方面已经落后了。他们各自开发了自己的(CUDA、Metal),还有 Vulkan。 你的问题可能会被义务警员否决。他们不想在这里提出这些有趣的问题。

以上是关于了解 AMD GPU 中的 oneAPI 和 SYCL的主要内容,如果未能解决你的问题,请参考以下文章

英特尔首推异构编程神器 oneAPI,可让程序员少加班!

CPU OpenCL 开源 OneAPI

如何在 GPU(AMD)中运行 ffmpeg

如何以正确的方式使用英特尔 oneAPI?

英特尔、AMD、英伟达,三大厂商同台竞技混合GPU+CPU

Intel,Nvidia,AMD三大巨头火拼GPU与CPU