Релиз PoCL 1.1, независимой реализации стандарта OpenCL
Состоялся релиз проекта PoCL 1.1 (Portable Computing Language OpenCL), развивающего реализацию стандарта OpenCL, независимую от производителей графических ускорителей и позволяющую использовать различные бэкенды для выполнения OpenCL-ядер на разных типах графических и центральных процессоров. Код проекта распространяется под лицензией MIT. Поддерживается работа на платформах X86_64, MIPS32, ARM v7, AMD HSA APUs и различных специализированных 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/Clang 6.0 и 5.0. Обеспечена экспериментальная поддержка промежуточных представлений кода SPIR и SPIR-V (используется в API Vulkan), которые могут применяться как для представления шейдеров для графики, так и для параллельных вычислений. Поддержка SPIR/SPIR-V основана на коде SPIRV-LLVM. Проведена работа по сокращению времени компиляции ядер OpenCL, которая позволила в разы сократить время сборки Luxmark и на 30–50% ускорить прохождения внутренних тестов. Проведён рефакторинг работы кэша. Улучшена поддержка архитектур ARM и ARM64 (системы с CPU Cortex-A53 и Cortex-A15 теперь проходят все внутренние тесты).
© OpenNet