SYCL 有各种不同的实现,如 DPC++/oneAPI、ComputeCpp、hipSYCL、triSYCL。是否可以编写相同的 SYCL 代码并使用所有不同的实现进行编译?
如果不是,那能有多大不同?
谢谢
SYCL 有各种不同的实现,如 DPC++/oneAPI、ComputeCpp、hipSYCL、triSYCL。是否可以编写相同的 SYCL 代码并使用所有不同的实现进行编译?
如果不是,那能有多大不同?
谢谢
SYCL 是一个开放标准,因此这意味着任何 SYCL 实现都需要遵循规范。
因此,理论上,如果您编写 SYCL 代码,则无需修改即可使用任何 SYCL 实现对其进行编译和运行。
但是,对此有一些警告。
SYCL 实现尚不存在统一的构建系统,有些使用 CMake,但可能需要在此级别进行修改才能编译代码文件。
有些尚未实现整个规范,因此可能缺少某些功能。不过,这通常不应该是一个问题,并且个别实现可能会显示支持和不支持的内容。这是因为 SYCL 2020 是最近才获得批准的,并且编译器仍在实现一些功能。
撇开这些问题不谈,您应该非常确信您的 SYCL 代码将使用 ComputeCpp、hipSYCL 和 DPC++ 编译和运行。例如,可以为这些编译器中的任何一个编译SYCL Academy 练习,只需对我上面列出的两个类别进行一些小的更改。