Понимание oneAPI и SYCL в графическом процессоре AMD

Я разработчик GPGPU и всю свою работу выполнял с помощью CUDA. Недавно я приобрел графический процессор AMD для своей домашней установки, и я читал о SYCL и oneAPI, но не уверен, что понимаю, что такое каждый из них, как они дополняют. Если я правильно понял, SYCL - это стандарт, разработанный Khronos, который позволяет создавать параллельное программное обеспечение на C++. Для этого требуется настраиваемый набор инструментов, предоставляемый реализацией SYCL, и существует несколько реализаций.

С другой стороны, oneAPI - это реализация SYCL с некоторыми дополнительными расширениями (которые могут быть добавлены в стандарт SYCL в будущем) и некоторыми библиотеками с типичными параллельными библиотеками, верно?

Поскольку у меня есть графический процессор AMD, я хочу использовать его для некоторых GPGPU, но экосистема немного пугает. У нас есть драйверы mesa, драйверы AMD, различные реализации openCL, HIP... Как все это должно сочетаться?

2 ответа

SYCL - это открытый стандарт от Khronos, по сути, он определяет интерфейс для разработчиков для программирования гетерогенных архитектур, включающих графические процессоры и другие высокопроизводительные процессоры. Существует несколько реализаций SYCL (перечисленных здесь), и прелесть заключается в том, что вы можете писать код, используя SYCL, и он будет работать с различными реализациями компилятора, что означает, что вы можете ориентироваться на широкий спектр процессоров. Эта диаграмма очень полезна для демонстрации этих устройств и поддерживаемого ими оборудования. Каждая реализация подскажет, какие драйверы вам понадобятся.

oneAPI - это инициатива под руководством Intel, которая, среди прочего, включает DPC++, одну из реализаций SYCL. Вы можете использовать это с процессорами Intel, и есть экспериментальная поддержка графических процессоров Nvidia.

Если у вас есть оборудование AMD, я бы предложил изучить реализацию hipSYCL, которая использует hip для выгрузки параллельных инструкций на процессоры AMD.

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

Вы можете загрузить установщик One API с сайта Intel. Это поможет вам. Например, он сообщит вам, что вам нужны вычислительные драйверы для интегрированной графики. И он может установить компилятор Intel oneAPI DPC++, который использует sycl.dll, довольно небольшую библиотеку. Я не знал, что SYCL - это стандарт, я просто использовал DLL в проекте PyTorch с C++ API. Интересно, как вы тогда упомянули AMD со всем этим программным обеспечением Intell. MESA - это вариант с открытым исходным кодом для карт NVIDIA afaik.

Другие вопросы по тегам