Релиз на PoCL 6.0 с независима реализация на стандарта OpenCL

Обявен е релиз на проекта PoCL 6.0 (Portable Computing Language OpenCL), който развива реализацията на стандарта OpenCL, независима от производителите на графични ускорители и позволяваща използването на различни бекенди за изпълнение на OpenCL ядра на различни типове графични и централни процесори. Кодът на проекта се разпространява под лиценцията MIT. Поддържат се платформи X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU и различни специализирани ASIP (Application-Specific Instruction-set Processor) и TTA процесори (Transport Triggered Architecture) с архитектура VLIW.

Реализацията на компилатора на OpenCL ядра е изградена на базата на LLVM, а за фронт-енд на OpenCL C се използва Clang. За осигуряване на необходимата преносимост и производителност, компилаторът на OpenCL ядра може да генерира комбинирани функции, които могат да използват различни хардуерни ресурси за разпаралеляване на изпълнението на кода, като VLIW, суперскалярност, SIMD, SIMT, многоядерност и многопоточност. Има поддръжка на ICD драйвери.
(Installable Client Driver). Налични са бекенди за осигуряване на работа чрез CPU, ASIP (TCE/TTA), GPU на база HSA архитектура и NVIDIA GPU (чрез libcuda).

В новата версия:

  • Добавена е поддръжка за Clang/LLVM 18.0, спрямо която поддръжката на LLVM 10, 11, 12 и 13 е прекратена.
  • Реализиран е нов бекенд cpu-tbb, използващ библиотеката OneTBB, разработвана от Intel, за паралелизиране на операции и планиране на изпълнението на задачи.
  • В бекенда cpu, осигуряващ изпълнението на OpenCL ядра на CPU, е добавена поддръжка на стандарта за паралелно програмиране OpenMP, добавен е методът clGetDeviceAndHostTimer(), както и реализирани експерименталните разширения cl_pocl_svm_rect, cl_pocl_command_buffer_svm и cl_pocl_command_buffer_host_buffer.
  • В бекенда «Remote», предназначен за организиране на разпределени изчисления чрез прехвърляне на обработката на OpenCL команди на други хостове в мрежата, на които работи фонов процес pocld, е добавена поддръжка на CG SVM (Coarse-Grain Shared Virtual Memory), възможност за достъп до бекенда, използвайки комуникационния протокол Vsock, и поддръжка на компилиране и свързване на програми чрез функциите clCompileProgram() и clLinkProgram().
  • В бекенда LevelZero, който използва API Level Zero, е разрешено създаването на буфери с размер, по-голям от 4ГБ, и са реализирани оптимизации на процесите по синхронизация.
  • В бекенда CUDA са реализирани операциите sub_group_shuffle и sub_group_shuffle_xor, а лимитът CL_DEVICE_MAX_MEM_ALLOC_SIZE е увеличен.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster