Представлен (http://portablecl.org/pocl-0.14.html) релиз проекта PoCL (http://portablecl.org/) 0.14 (Portable Computing Language OpenCL), развивающего реализацию стандарта OpenCL, независимую от производителей графических ускорителей и позволяющую использовать различные бэкенды для выполнения OpenCL-ядер на разных типах графических и центральных процессоров. Код проекта распространяется (https://github.com/pocl/pocl/) под лицензией MIT.
Поддерживается работа на платформах X86_64, MIPS32, ARM v7, AMD HSA APUs и различные специализированные TTA-процессоры (Transport Triggered Architecture (https://ru.wikipedia.org/wiki/Transport_triggered_architecture)) c архитектурой VLIW (https://ru.wikipedia.org/wiki/VLIW).
Реализация компилятора ядер OpenCL построена на базе LLVM, а в качестве фронтэнда для OpenCL C используется Clang. Для обеспечения должной переносимости и производительности компилятор ядер OpenCL может генерировать комбинированные функции, которые могут использовать различные аппаратные ресурсы для распараллеливания выполнения кода, такие как VLIW, суперскалярность, SIMD, SIMT, многоядерность и многопоточность.
Имеется поддержка ICD-драйверов
(Installable Client Driver) и устройств на базе архитектуры HSA (https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture). PoCL пока не полностью охватывает весь API OpenCL, но уже подходит для выполнения большинства OpenCL-программ и тестовых наборов. Например, выполняются ViennaCL 1.5.1, Rodinia 2.0.1, Parboil Benchmarks, Luxmark v2.0 и примеры из руководства по OpenCL и AMD APP SDK v2.9. PoCL также проходит более 97% тестов из набора piglit.
В новой версии реализована возможность использования выпусков LLVM/Clang 3.9 и 4.0. Представлен новый бинарный формат, включающий итоговые исполняемые компоненты, которые позволяют запускать OpenCL-приложения на хостах без online-компилятора. Обеспечена начальная поддержка планирования выполнения задач по неупорядоченной очереди команд. Внесены оптимизации и исправлены некоторые давно висевшие проблемы.
URL: http://lists.llvm.org/pipermail/llvm-dev/2017-April/111910.html
Новость: http://www.opennet.dev/opennews/art.shtml?num=46364