GPGPU технологии

Настройка и использование технологий гетерогенных вычислений, включая стандарт OpenCL.

Раздел содержит общие рекомендации и описание особенностей разработки программ, использующих технологии гетерогенных вычислений (преимущественно в контексте графических ускорителей).

OpenCL
Загрузчик OCL ICD
Переменные окружения
Графические процессоры AMD Radeon
Графические процессоры Intel
Intel Gen 7 GPU Cores (IvyBridge, ValleyView, Haswell)
Графические процессоры Vivante

OpenCL

Начиная с редакции 2020 года ОСРВ поддерживает несколько реализаций данного стандарта, зависящих от архитектуры, графического процессора и его поколения.

Вывод сведений о доступных платформах и релаизациях стандарта осуществляется при помощи утилиты clinfo.

Стандарт подразумевает использование GPU-специфичных компиляторных средств. Преимущественно на стороне целевой системы. Компилятор тесно интегрирован с OpenCL драйвером и в общем случае его настройка на целевой системе не требуется.

Загрузчик OCL ICD

Для переключения между реализациями предусмотрен универсальный загрузчик, инсталлируемый по адресу /usr/lib/libOpenCL.so. При разработке конечные программы следует линковать исключительно с этой библиотекой. Загрузчик производит поиск конфигурационных файлов *.icd в директории:

/etc/OpenCL/vendors/

Каждый найденный конфигурационный файл характеризует загружаемую библиотеку конкретной реализации стандарта. Состав содержимого директории варьируется между архитектурами, операционными системами и их редакциями. Так, для архитектуры x86 доступны не менее двух драйверных библиотек:

# ls -1 /etc/OpenCL/vendors/
intel-beignet.icd
mesa.icd


Caution: При возникновении проблем с настройкой или эксплуатации драйверных библиотек имеет смысл исключить все лишние конфигурационные файлы или использовать переменную OCL_ICD_VENDORS. Это позволит упростить конфигурацию системы и уменьшить число передаточных звеньев. В ряде случаев это может несколько ускорить первичную загрузку OpenCL библиотек.

Переменные окружения

OCL_ICD_DEBUG
Переменная регулирует вывод дополнительной отладочной информации. Значение должно быть целым числом, причем, чем выше значение, тем больше будет выведено отладочной информации.
OPENCL_VENDOR_PATH
Переменная позволяет переопределить путь поиска конфигурационных файлов драйверных библиотек. По умолчанию используется путь /etc/OpenCL/vendors/. Переменная OCL_ICD_VENDORS имеет более высокий приоритет.
OCL_ICD_VENDORS
Переменная позволяет изменить принцип поиска драйверных библиотек загрузчиком:

Графические процессоры AMD Radeon

Загрузка данной реализации драйверных OpenCL библиотек регулируется конфигурационным файлом:

/etc/OpenCL/vendors/mesa.icd

Графические процессоры Intel

В настоящий момент стандарт OpenCL поддерживается для графических контроллеров седьмого поколения в сочетании графическими драйверами с классической архитектурой.

Intel Gen 7 GPU Cores (IvyBridge, ValleyView, Haswell)

Перечень поддерживаемых драйверов:

Поддержка OpenCL для этих графических контроллеров доступна начиная с ОСРВ редакции 2020 года. В качестве технической основы используется адаптация официального проекта Beignet.

Загрузка данной реализации драйверных OpenCL библиотек регулируется конфигурационным файлом:

/etc/OpenCL/vendors/intel-beignet.icd


Caution: Для успешной загрузки OpenCL драйвера требуется установка переменной окружения LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=/usr/lib/graphics/mesa


В качестве компилятора kernel-модулей на целевой системе используется LLVM, поставляемый вместе с дистрибутивом ОСРВ или в составе пакетов обновления Mesa 3D.


Note: Поддержка прекомпилированных kernel-модулей в штатную поставку не входит и требует наличия GPU-специфичных компиляторных средств на стороне инструментальной системы. Они могут быть поставлены отдельно по запросу и в полной мере не тестировались.


Caution: Поддержка контроллеров семейства Haswell имеет известную проблему с If you переменными __local. Для игнорирования предупреждений об этой проблеме следует указывать переменную окружения

export OCL_IGNORE_SELF_TEST=1


Пользовательские переменные окружения

OCL_NON_COMPILER
При установке в значение 1 переменная позволяет отключить загрузку тяжеловесных компиляторных библиотек. Компиляция kernel-модулей при этом будет невозможна.
OCL_IGNORE_SELF_TEST
При установке в значение 1 переменная позволяет отключить встроенную в драйверное обеспечение проверку исполнения kernel-модулей.

Графические процессоры Vivante

Поддержка OpenCL для этих графических контроллеров доступна начиная с ОСРВ редакции 2021 года в рамках графических драйверов с модульной архитектурой. Для этого требуется:




Предыдущий раздел: Руководство пользователя