Выпуск PoCL 1.0, независимой реализации стандарта OpenCL

Доступен релиз проекта PoCL 1.0 (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).

В новой версии добавлена экспериментальная поддержка GPU NVIDIA через новый бэкенд CUDA. В бэкенде, использующем CPU, полностью реализована спецификация OpenCL 1.2, а также поддержка отдельных элементов стандарата OpenCL 2.0. Проведена оптимизация производительности на многоядерных системах при выполнении большого числа мелких ядер OpenCL. Реализована возможность использования выпусков LLVM/Clang 4.0 и 5.0. Обновлён бинарный формат, в котором нарушена совместимость с прошлыми выпусками. Улучшена поддержка инструкций AVX512.

© OpenNet