PoCL 1.6

Теги

Поддерживается работа PoCL на платформах X86_64, MIPS32, ARM v7, AMD HSA APU и различных специализированных TTA-процессорах (Transport Triggered Architecture) c архитектурой VLIW. 

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

Реализация компилятора ядер 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.

Код проекта распространяется под лицензией MIT. 

 

Последние материалы