Запуск новая версия проекта ПОКЛ 1.6 (Portable Computing Language OpenCL), из основных моментов версии 1.6 - это поддержка Clang / LLVM 11.0, а также проделанная работа по улучшению производительности и функций CUDA, улучшенная совместимость с PowerPC и улучшенное использование отладки OpenCL.
Тем, кто не знаком с PoCL, следует знать, что это такое. портативная реализация с открытым исходным кодом (под лицензией MIT) стандарта OpenCL (1.2 с поддержкой некоторых функций 2.0). Помимо того, что это реализация OpenCL с открытым исходным кодом для нескольких устройств (действительно разнородные) легко переносимые, основная цель этого проекта - улучшить функциональную совместимость множества OpenCL-совместимых устройств путем их интеграции в единую централизованно управляемую платформу.
Кроме того, одной из ключевых долгосрочных целей является повышение производительности переносимости программ OpenCL на типы устройств, использующие методы времени выполнения и компиляции.
Компилятор ядра OpenCL основан на LLVM, а Clang используется в качестве интерфейса для OpenCL C. Для обеспечения надлежащей переносимости и производительности компилятор ядра OpenCL может генерировать комбинированные функции, которые могут использовать различные аппаратные ресурсы для распараллеливания выполнения кода, такие как VLIW, суперскаляр. , SIMD, SIMT, многоядерные и многопоточные. Есть поддержка драйверов ICD (Installable Client Driver). Существуют бэкенды для обеспечения работы через CPU, ASIP (TCE / TTA), GPU на основе архитектуры HSA и NVIDIA GPU (CUDA).
Основные новые возможности PoCL 1.6
Эта новая версия PoCL 1.6 подчеркивает возможность скомпилировать эту реализацию с драйверами устройств, включенными во время компиляции, а также доступность устройства будет проверяться при запуске (ранее системы, на которых построен и запускается PoCL, они должны были иметь такая же поддержка контроллера). Реализована возможность использования диспетчера пакетов conda для распространения двоичных пакетов PoCL с поддержкой CUDA для систем Linux-x86_64 и Linux-ppc64le.
Еще одно важное изменение - это поддержка LLVM 11 наряду с расширенными возможностями отладки кода OpenCL при использовании контроллера ЦП.
Кроме того, подчеркивается, что была проведена оптимизация производительности бэкэнда CUDA, что позволило значительно ускорить операции, связанные с использованием локальной памяти (FFT, GEMM).
Тесты с использованием тестов SHOC (которые сейчас постоянно тестируются, показывают, что эти оптимизации привели к гораздо более высокой производительности, особенно для тестов с использованием локальной памяти, таких как FFT и GEMM, по сравнению с предыдущим эталоном. PoCL теперь часто достигает конкурентоспособной производительности с помощью проприетарного OpenCL от Nvidia. Водитель). Мы приветствуем вклады для выявления и устранения коренных причин остающихся проблемных областей. Мы также приветствуем вклад в улучшение охвата функций стандартов OpenCL 1.2 / 3.0.
- Производительность PoCL во многих тестах теперь близка к проприетарному драйверу OpenCL NVIDIA.
- Добавлен параметр компиляции HARDENING_ENABLE, позволяющий параметрам компилятора создавать более безопасный libpocl.so за счет снижения производительности.
- Возвращена поддержка систем PowerPC 8/9, для которых уровень реализации OpenCL при использовании устройств pthread и CUDA соответствует уровню CUDA в системах x86_64.
- Изменен ABI для ядер CUDA, использующих __ локальные блоки. После обновления пользователям необходимо очистить кеш pocl.
- Поддержка параметра сборки SINGLE_LLVM_LIB была удалена, вместо использования STATIC_LLVM и llvm-config для определения библиотек для привязки.
Наконец, если вы хотите узнать больше об этой новой версии, вы можете проверить подробности в исходном объявлении.
Хотя для тех, кто хочет узнать больше об этой реализации, они могут проконсультироваться официальный сайт отсюда вы можете найти документацию и скачать файлы.
Код проекта распространяется по лицензии MIT и работа поддерживается на платформах X86_64, MIPS32, ARM v7, AMD HSA APU и различных специализированных процессорах TTA с архитектурой VLIW.