SYCL有各种不同的实现,如DPC++/oneAPI、ComputeCpp、hipSYCL、triSYCL。是否可以编写相同的SYCL代码并用所有不同的实现编译它?
如果不是的话,还能有多大的不同呢?
谢谢
发布于 2021-10-12 16:17:16
SYCL是一个开放的标准,因此这意味着任何SYCL实现都需要遵循规范。
因此,从理论上讲,如果您编写SYCL代码,则可以使用任何SYCL实现编译和运行它,而无需修改。
然而,对此有一些警告。
SYCL实现还不存在统一的构建系统,有些使用CMake,但在这个级别上可能需要进行修改才能编译代码文件。
有些还没有实现整个规范,因此可能缺少某些特性。但是,这在一般情况下不应该是一个问题,单个实现可能会显示什么是支持的,什么是不支持的。这是因为SYCL 2020只是在最近才得到批准,而且编译器还在实现一些特性。
除了这些问题之外,您应该非常确信您的SYCL代码将使用ComputeCpp、hipSYCL和DPC++编译和运行。例如,可以为这些编译器中的任何一个编译SYCL学院习题,并进行一些小的更改,这些更改属于我前面列出的两个类别。
https://stackoverflow.com/questions/69501055
复制相似问题