了解 AMD GPU 中的 oneAPI 和 SYCL

2023-12-19

我是一名 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(使用前将#替换为@)

了解 AMD GPU 中的 oneAPI 和 SYCL 的相关文章

随机推荐

  • 验证 SOAP 消息

    我无法将任何 SOAP 消息验证为有效的 XML 例如 我从 Wikipedia 上获取了下面的 SOAP 消息 但它失败了Validome验证器 http www validome org xml validate 是验证器错误还是 SO
  • 使用正则表达式的 CakePHP 路由

    我有一个控制器设置来接受两个变量 clients view var1 var2 我想将其显示为 var1 var2 所以我尝试过 Router connect array admin gt false controller gt clien
  • TextureView getBitmap() 忽略 setTransform

    我正在为 CameraPreview 使用纹理视图 由于我使用的显示比例和预览比例之间存在差异textureView setTransform matrix in onSurfaceTextureAvailable 用于缩放预览 当我需要t
  • MySQL 表连接与 AVG()

    我有一个 评级 表 其中包含 作为外键 正在评级的事物的 ID 一个事物可能有多个评级 或者一个值没有评级 我想加入表格来查看所有不同 ID 的不同评级 但现在我在查看没有评级的内容时遇到问题 例如 mysql gt select avg
  • 在Retrofit中将表单数据发送到服务器

    尝试通过 Retrofit 向服务器发送表单数据 但无法向服务器请求 我想发布带有他们的数据的图像数组 val builder MultipartBody Builder MultipartBody Builder setType Mult
  • jQuery 1.6 浏览器检测

    随着 jquery 中所有这些 api 的变化 在 jQuery 中检测浏览器名称和版本的 最新 最佳实践是什么 另外 jquery 是检测浏览器的推荐语言还是应该使用服务器端 您希望避免浏览器检测 而是进行功能检测 浏览器检测很容易被伪造
  • 使用 window.open() 在特定时间间隔后打开新窗口

    我正在寻找 javascript 代码 它将在特定时间间隔后自动打开新选项卡 窗口 我这里有几个网站 在这段代码中 当我按下 html 页面上的按钮时 这些网站会自动打开 我希望这些网站在特定时间间隔后打开 例如 当用户按下 打开 Wind
  • 在内容可编辑的 div 中设置光标位置

    Summary 我试图达到当用户输入 a 时的效果 or 在内容可编辑的div 第二 or 是自动插入的 并且插入符号位于两者之间 即之间 and FIDDLE http jsfiddle net N6xFx 1 在右侧键入 s 并看看它在
  • 用字符串反应本机创建元素

    我看到很多人在 React Native 中创建类似于以下的路由映射 if route id Blah return
  • Python/Pandas Dataframe 用中值替换 0

    我有一个带有几列的 python pandas 数据框 其中一列有0价值观 我想更换0值与median or mean本专栏的 data是我的数据框 artist hotness是列 mean artist hotness data art
  • 从Spring 3.2.3升级到Spring 4后出错

    将我的网络应用程序从 Spring 3 2 3 升级到 Spring 4 后 我遇到了NoSuchMethodError java lang NoSuchMethodError org springframework security we
  • SQL Server Varbinary(max):从 varbinary 字段中选择字节子集

    在 SQL Server 2008 中从 varbinary MAX 字段 不使用 FileStreams 读取部分二进制数据的最有效方法是什么 将数据写入列时 T SQL 中提供了 VarBinary Write 函数 允许将字节增量写入
  • 从 Zend Framework 2 中的模块发布资产

    通常建议将模块资产存储在模块的目录中moduleName public 或者您想要命名资产目录的任何名称 不幸的是 Zend Framework 2 不支持资产发布默认情况下用于模块资产 根据MWOP 大约 1 个月前没有任何计划 我想仍然
  • 在windows服务中设置端口号

    我要开发一个windows服务 当服务启动时 就会有一个端口 我的问题是我们可以为其分配一个特定的端口号吗 例如 端口号为 55431 是的 假设您使用 WCF 作为通信层 您只需配置要侦听的绑定 协议作为服务配置的一部分 在您的服务中On
  • 重写条件总和和计数查询/日期范围比较的更好方法

    我不确定我所做的尝试是否正确 看来有很多重复的事情 以下示例在本月 上个月运行 但通常我不希望能够设置我的子句以供以后使用 例如 昨天与今天 这是一个简单的比较查询 只是为了让我们更容易 我们在这个 上个月进行操作 我的数据 CREATE
  • 如果log4net日志无法写入数据库,如何设置?

    我知道可以同时登录文件和数据库 也可以登录不止一种资源 https stackoverflow com questions 1372435 configure log4net to write to multiple files 但是如果l
  • 如何使用 Spring data REST 公开自定义 DTO CRUD 存储库?

    我不想公开我的模型类 jpa 实体 而是使用不同的数据传输对象 DTO 公开其属性的不同子集 这个想法是DTO CrudRepository lt gt JpaRepository lt gt entities 我想通过 Spring Da
  • 通过 ng build 构建 Angular 项目时,出现 angular.json 文件未找到错误

    我在笔记本电脑上克隆了一个存储库 该存储库是我一个月前从另一台计算机创建的 我的项目很成功 一个月前没有出现任何错误 但今天在我将存储库克隆到新计算机中后 我遇到了一些错误 其实我写的npm i为了安装软件包 然后我尝试通过构建我的项目ng
  • 计算上传文件的数量

    我正在开发我的 CodeIgniter 项目 到目前为止它运行得很好 但是 我需要某种方法来计算上传文件的数量 因为我想在某些情况下 但不是全部 限制它 我怎样才能做到这一点 我试过count FILES 但这没有给我任何可用的东西 我还尝
  • 了解 AMD GPU 中的 oneAPI 和 SYCL

    我是一名 GPGPU 开发人员 我使用 CUDA 完成了所有工作 最近 我为我的家庭设置购买了 AMD GPU 并且我一直在阅读有关 SYCL 和 oneAPI 的内容 但我不确定我是否理解它们各自是什么以及它们如何互补 如果我理解正确的话