Настройка и использование технологий гетерогенных вычислений, включая стандарт OpenCL.
Раздел содержит общие рекомендации и описание особенностей разработки программ, использующих технологии гетерогенных вычислений (преимущественно в контексте графических ускорителей).
Начиная с редакции 2020 года ОСРВ поддерживает несколько реализаций данного стандарта, зависящих от архитектуры, графического процессора и его поколения.
Вывод сведений о доступных платформах и релаизациях стандарта осуществляется при помощи утилиты clinfo.
Стандарт подразумевает использование GPU-специфичных компиляторных средств. Преимущественно на стороне целевой системы. Компилятор тесно интегрирован с OpenCL драйвером и в общем случае его настройка на целевой системе не требуется.
Для переключения между реализациями предусмотрен универсальный загрузчик, инсталлируемый по адресу /usr/lib/libOpenCL.so. При разработке конечные программы следует линковать исключительно с этой библиотекой. Загрузчик производит поиск конфигурационных файлов *.icd в директории:
/etc/OpenCL/vendors/
Каждый найденный конфигурационный файл характеризует загружаемую библиотеку конкретной реализации стандарта. Состав содержимого директории варьируется между архитектурами, операционными системами и их редакциями. Так, для архитектуры x86 доступны не менее двух драйверных библиотек:
# ls -1 /etc/OpenCL/vendors/intel-beignet.icdmesa.icd
|  | При возникновении проблем с настройкой или эксплуатации драйверных библиотек имеет смысл исключить все лишние конфигурационные файлы или использовать переменную OCL_ICD_VENDORS. Это позволит упростить конфигурацию системы и уменьшить число передаточных звеньев. В ряде случаев это может несколько ускорить первичную загрузку OpenCL библиотек. | 
/etc/OpenCL/vendors/. Переменная OCL_ICD_VENDORS имеет более высокий приоритет.    *.icd файл, загрузчик будет пытаться загрузить только данный конфигурационный файл. При этом, если значение переменной не содержит слэшей, то загрузчик будет искать конфигурационный файл по адресу /etc/OpenCL/vendors/$OCL_ICD_VENDORS (либо по адресу $OPENCL_VENDOR_PATH/$OCL_ICD_VENDORS, если переменная OPENCL_VENDOR_PATH установлена). Если эти варианты не оказываются успешными или значение содержит слэши, загрузчик рассматривает значение в качестве относительного или абсолютного пути до конфигурационного файла.    
Загрузка данной реализации драйверных OpenCL библиотек регулируется конфигурационным файлом:
/etc/OpenCL/vendors/mesa.icd
В настоящий момент стандарт OpenCL поддерживается для графических контроллеров седьмого поколения в сочетании графическими драйверами с классической архитектурой.
Перечень поддерживаемых драйверов:
Поддержка OpenCL для этих графических контроллеров доступна начиная с ОСРВ редакции 2020 года. В качестве технической основы используется адаптация официального проекта Beignet.
Загрузка данной реализации драйверных OpenCL библиотек регулируется конфигурационным файлом:
/etc/OpenCL/vendors/intel-beignet.icd
|  | Для успешной загрузки OpenCL драйвера требуется установка переменной окружения LD_LIBRARY_PATH: 
 
 | 
В качестве компилятора kernel-модулей на целевой системе используется LLVM, поставляемый вместе с дистрибутивом ОСРВ или в составе пакетов обновления Mesa 3D.
|  | Поддержка прекомпилированных kernel-модулей в штатную поставку не входит и требует наличия GPU-специфичных компиляторных средств на стороне инструментальной системы. Они могут быть поставлены отдельно по запросу и в полной мере не тестировались. | 
|  | Поддержка контроллеров семейства Haswell имеет  известную проблему с If you переменными __local. Для игнорирования предупреждений об этой проблеме следует указывать переменную окружения 
 
 | 
Пользовательские переменные окружения
1 переменная позволяет отключить загрузку тяжеловесных компиляторных библиотек. Компиляция kernel-модулей при этом будет невозможна.    1 переменная позволяет отключить встроенную в драйверное обеспечение проверку исполнения kernel-модулей.  
Поддержка OpenCL для этих графических контроллеров доступна начиная с ОСРВ редакции 2021 года в рамках графических драйверов с модульной архитектурой. Для этого требуется:
 
Предыдущий раздел:  Руководство пользователя