我是一名 GPGPU 开发人员,我使用 CUDA 完成了所有工作。最近,我为我的家庭设置购买了 AMD GPU,并且我一直在阅读有关 SYCL 和 oneAPI 的内容,但我不确定我是否理解它们各自是什么以及它们如何互补。如果我理解正确的话,SYCL 是 Khronos 开发的一个标准,允许用 C++ 创建并行软件。它需要一个由 SYCL 实现提供的自定义工具链,并且存在多种实现。
另一方面,oneAPI 是 SYCL 的实现,带有一些额外的扩展(将来可能会添加到 SYCL 标准中)和一些具有典型并行库的库,对吗?
由于我有AMD GPU,我想用它来做一些GPGPU,但生态系统有点可怕。我们有台面驱动程序、AMD 驱动程序、不同的 openCL 实现、HIP...所有这些如何组合在一起?
SYCL - 这是 Khronos 的开放标准,它有效地定义了一个接口,供开发人员对包括 GPU 和其他高性能处理器的异构架构进行编程。
有几种 SYCL 实现(此处列出 https://sycl.tech/#get-sycl),美妙之处在于您可以使用 SYCL 编写代码,并且它将在不同的编译器实现上工作,这意味着您可以针对各种处理器。这张图 https://raw.githubusercontent.com/illuhad/hipSYCL/develop/doc/img/sycl-targets.png在显示这些以及它们支持的硬件方面非常有用。每个实施都会指导您了解所需的驱动程序。
oneAPI - 这是由英特尔领导的一项计划,其中包括DPC++ https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-compiler.html,SYCL 实现之一。您可以将其与英特尔处理器一起使用,并且还有支持 Nvidia GPU https://www.codeplay.com/solutions/oneapi/for-cuda/以及对 AMD GPU 的实验性支持。
如果您有 AMD 硬件,我还建议探索 hipSYCL 实现,它使用 hip 将并行指令卸载到 AMD 处理器。
最终,所有这些都只使用 SYCL 代码,并且某些实现添加了特定的扩展,这些扩展要么最终出现在 SYCL 规范的下一版本中,要么是针对特定硬件上的特定功能而设计的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)