了解AMD GPU中的oneAPI和SYCL



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

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

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

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

oneAPI-这是一个由英特尔领导的首创,其中包括SYCL实现之一的DPC++。您可以将其与英特尔处理器一起使用,还支持英伟达GPU和AMD GPU的实验支持。

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

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

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

最新更新