25.01.2021

Релиз PoCL 1.6, независимой реализации стандарта OpenCL


Представлен релиз проекта PoCL 1.6 (Portable Computing Language OpenCL), развивающего реализацию стандарта OpenCL, независимую от производителей графических ускорителей и позволяющую использовать различные бэкенды для выполнения OpenCL-ядер на разных типах графических и центральных процессоров. Код проекта распространяется под лицензией MIT. Поддерживается работа на платформах X86_64, MIPS32, ARM v7, AMD HSA APU и различных специализированных TTA-процессорах (Transport Triggered Architecture) c архитектурой VLIW.

Реализация компилятора ядер OpenCL построена на базе LLVM, а в качестве фронтэнда для OpenCL C используется Clang. Для обеспечения должной переносимости и производительности компилятор ядер OpenCL может генерировать комбинированные функции, которые могут использовать различные аппаратные ресурсы для распараллеливания выполнения кода, такие как VLIW, суперскалярность, SIMD, SIMT, многоядерность и многопоточность. Имеется поддержка ICD-драйверов (Installable Client Driver). Присутствуют бэкенды для обеспечения работы через CPU, ASIP (TCE/TTA), GPU на базе архитектуры HSA и GPU NVIDIA (CUDA).

В новой версии:

  • Добавлена поддержка LLVM 11.
  • Расширены возможности по отладке кода OpenCL при использовании драйвера CPU.
  • Добавлен сборочный параметр HARDENING_ENABLE для включения опций компилятора для генерации более защищённого варианта libpocl.so ценой снижения производительности.
  • Проведена оптимизации производительности бэкенда CUDA, позволившая заметно ускорить операции, связанные с использованием локальной памяти (FFT, GEMM). Производительность PoCL во многих тестах теперь близка к проприетарному драйверу OpenCL от компании NVIDIA.

  • Возвращена поддержка систем PowerPC 8/9, уровень реализации OpenCL для которых при использовании устройств pthread и CUDA соответствует уровню CUDA на системах x86_64.
  • Добавлена возможность компиляции PoCL с драйверами устройств, включёнными во время сборки — доступность устройств будет проверена при запуске (ранее системы, на которых собирается и выполняется PoCL, должны были иметь идентичную поддержку драйверов). Реализована возможность применения пакетного менеджера conda для распространения бинарных пакетов PoCL с поддержкой CUDA для систем Linux-x86_64 и Linux-ppc64le.
  • Изменён ABI для ядер CUDA, в которых используются блоки __local. После обновления пользователям необходимо удалить кэш pocl.
  • Прекращена поддержка сборочной опции SINGLE_LLVM_LIB, вместо которой для определения библиотек для связывания задействованы STATIC_LLVM и llvm-config.

Источник: https://www.opennet.ru/opennews/art.shtml?num=54299

Добавить комментарий