Я хочу начать использовать SYCL, но пока я обнаружил, что нужно установить ComputeCpp и он поддерживает только Ubuntu, CentOS и Windows. Какие есть альтернативы для использования SYCL на MacOS Catalina?

1
user3116936 31 Май 2020 в 04:12

2 ответа

Лучший ответ

Резюме

Множественные реализации SYCL поддерживают MacOS сегодня, хотя они поддерживают только устройства ЦП.

Поддержка устройств с графическим процессором недоступна, поскольку Apple не поддерживает внутренние зависимости, доступные в Linux или Windows.

Детали

triSYCL поддерживает MacOS, но только выполнение ЦП. Я часто им пользуюсь. Возможно, вам потребуется переключить компиляторы C ++, поскольку собственный набор инструментов может не работать. https://github.com/triSYCL/triSYCL

hipSYCL также поддерживает выполнение ЦП и должен работать в MacOS. Запрос на извлечение № 271 должен содержать подробную информацию.

Мы проделали некоторую работу по созданию Intel DPC ++ на MacOS (см. проблему № 258). но его еще нет. Проблема № 982 связана с отслеживанием поддержки MacOS.

Я обычно использую все компиляторы SYCL для Linux на своем ноутбуке Mac внутри виртуальных машин, но это все еще только для процессора.

Возможности

Самый многообещающий путь к поддержке SYCL GPU в MacOS требует перевода на Metal Shader Language (MSL) , потому что Apple OpenCL не поддерживает SPIR-V. Это можно сделать с помощью SPIRV-Cross, но никто не реализовал это ни в одном компиляторе SYCL, поскольку Я знаю.

Обратите внимание, что перевод ядер из SPIR-V в MSL - это только часть ответа. Другое требование - это поддержка загрузки ядра во время выполнения и т. Д. Некоторые из этих проблем очевидны в https: // github .com / bobpepin / opencl-osx, хотя это всего лишь постановка проблемы, а не решение.

Если бы Apple поддержала CUDA (маловероятно, исходя из https://gizmodo.com / apple-and-nvidia-are-over-1840015246), то серверные части PTX для hipSYCL или DPC ++ могут работать, но я не знаю о каких-либо попытках в этом направлении со старыми компьютерами Mac, поддерживающими (ed) CUDA.

3
Jeff 6 Июл 2020 в 15:52

ComputeCpp - это одна из нескольких реализаций SYCL, полный список здесь.

Ни одна из реализаций в настоящее время не поддерживает macOS, в основном потому, что Apple планирует отказаться от поддержки OpenCL и предоставлять поддержку только для Metal в качестве интерфейса с оборудованием. Однако вы можете выполнить двойную загрузку компьютера Apple с Linux и использовать его для разработки с любой из реализаций SYCL (включая ComputeCpp).

1
Rod Burns 1 Июн 2020 в 07:55