Стартирането на новата версия на проекта PoCL 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.