1

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

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

谢谢

4

1 回答 1

1

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

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

但是,对此有一些警告。

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

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

撇开这些问题不谈,您应该非常确信您的 SYCL 代码将使用 ComputeCpp、hipSYCL 和 DPC++ 编译和运行。例如,可以为这些编译器中的任何一个编译SYCL Academy 练习,只需对我上面列出的两个类别进行一些小的更改。

于 2021-10-12T16:17:16.307 回答