为不同的实现编写 SYCL 代码

Posted

技术标签:

【中文标题】为不同的实现编写 SYCL 代码【英文标题】:Writing SYCL code for different implementations 【发布时间】:2021-10-08 19:48:10 【问题描述】:

SYCL 有各种不同的实现,例如 DPC++/oneAPI、ComputeCpp、hipSYCL、triSYCL。是否可以编写相同的 SYCL 代码并使用所有不同的实现进行编译?

如果不是,那能有多大不同?

谢谢

【问题讨论】:

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

SYCL 是一个开放标准,因此这意味着任何 SYCL 实现都需要遵循规范。

因此,理论上,如果您编写 SYCL 代码,则无需修改即可使用任何 SYCL 实现对其进行编译和运行。

但是有一些注意事项。

SYCL 实现尚不存在统一的构建系统,有些使用 CMake,但可能需要在此级别进行修改才能编译代码文件。

有些尚未实现整个规范,因此可能缺少某些功能。不过,这通常不应该是一个问题,并且个别实现可能会显示支持和不支持的内容。这是因为 SYCL 2020 是最近才获得批准的,并且编译器仍在实现一些功能。

除了这些问题之外,您应该非常有信心使用 ComputeCpp、hipSYCL 和 DPC++ 编译和运行您的 SYCL 代码。例如,the SYCL Academy exercises 可以针对这些编译器中的任何一个进行编译,只需对我上面列出的两个类别进行一些小的更改。

【讨论】:

以上是关于为不同的实现编写 SYCL 代码的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法可以创建一个 cl::sycl::pipe 数组?

有没有办法可以创建一个 cl::sycl::pipe 数组?

抖音白天与晚上触发不同特效的Graph节点编写

抖音白天与晚上触发不同特效的Graph节点编写

抖音白天与晚上触发不同特效的Graph节点编写

如何在 XCode 中为不同版本的 iPhone OS 编写代码?