了解AMD GPU中的oneAPI和SYCL

如何解决了解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实现(listed here),其优点是您可以使用SYCL编写代码,并且它可以在不同的编译器实现中工作,这意味着您可以针对多种处理器。 This diagram在显示这些内容以及它们支持的硬件方面非常有用。每个实现都会指导您有关所需的驱动程序。

oneAPI-这是由Intel领导的一项计划,除其他外,其中包括SYCL实现之一DPC++。您可以将其与Intel处理器一起使用,并且对Nvidia GPU具有实验性支持。

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

最终,所有这些都仅使用SYCL代码,并且某些实现添加了特定的扩展,这些扩展将最终出现在SYCL规范的下一版本中,或者被设计用于特定硬件上的特定功能。

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?