#sycl
Вопрос:
SYCL имеет различные реализации , такие как DPC /oneAPI, ComputeCpp , hipSYCL, triSYCL. Можно ли написать один и тот же код SYCL и скомпилировать его со всеми различными реализациями?
Если это не так, то насколько это может быть по-другому?
Спасибо
Комментарии:
1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.
Ответ №1:
SYCL является открытым стандартом, поэтому это означает, что любая реализация SYCL должна соответствовать спецификации.
Таким образом, теоретически, если вы напишете код SYCL, он может быть скомпилирован и запущен с использованием любой из реализаций SYCL без изменений.
Однако в этом есть некоторые предостережения.
Единой системы сборки для реализаций SYCL еще не существует, некоторые используют CMake, но на этом уровне могут потребоваться изменения для компиляции файлов кода.
Некоторые из них еще не реализовали всю спецификацию, поэтому некоторые функции могут отсутствовать. Это не должно быть проблемой в целом, хотя отдельные реализации, скорее всего, покажут, что поддерживается, а что нет. Это связано с тем, что SYCL 2020 был ратифицирован совсем недавно, и некоторые функции все еще реализуются компиляторами.
Помимо этих проблем, вы должны быть очень уверены, что ваш код SYCL будет скомпилирован и запущен с использованием ComputeCpp, hipSYCL и DPC . Например, упражнения Академии SYCL могут быть скомпилированы для любого из этих компиляторов с некоторыми незначительными изменениями, которые подпадают под две категории, перечисленные мной выше.