Liberigo de PoCL 3.1 kun sendependa efektivigo de la OpenCL-normo

Publiko de la projekto PoCL 3.1 (Portable Computing Language OpenCL) estis prezentita, kiu disvolvas efektivigon de la normo OpenCL kiu estas sendependa de grafikaj akceliloj kaj permesas la uzon de diversaj backends por ekzekuti OpenCL-kernojn sur malsamaj specoj de grafikaĵoj kaj centraj. procesoroj. La projektkodo estas distribuita sub la MIT-licenco. Subtenas laboron sur platformoj X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU kaj diversaj specialigitaj procesoroj ASIP (Application-Specific Instruction-set Processor) kaj TTA (Transport Triggered Architecture) kun VLIW-arkitekturo.

La efektivigo de la OpenCL-kernkompililo estas konstruita surbaze de LLVM, kaj Clang estas utiligita kiel la antaŭa finaĵo por OpenCL C. Por certigi bonordan porteblon kaj efikecon, la OpenCL-kerno-kompililo povas generi kombinaĵfunkciojn kiuj povas uzi diversajn hardvarresursojn por paraleligi kodekzekuton, kiel ekzemple VLIW, superskalaro, SIMD, SIMT, multi-kerna kaj multi-fadenado. Estas subteno por ICD-ŝoforoj (Installable Client Driver). Estas backends por subteni operacion per CPU, ASIP (TCE/TTA), GPU bazita sur HSA-arkitekturo kaj NVIDIA GPU (per libcuda).

En la nova versio:

  • Aldonita subteno por Clang/LLVM 15.0.
  • Signife plibonigita SPIR-V-ombrilo meza reprezenta subteno por CPU kaj CUDA-ŝoforoj.
  • La pelilo por speciala aparataro (CL_DEVICE_TYPE_ACCELERATOR) kaj kutimaj aparatoj (CL_DEVICE_TYPE_CUSTOM) kiuj ne subtenas interretan kompilon estis signife restrukturita. La akcel- kaj ttasim-ŝoforoj estis kunfanditaj en la novan AlmaIF-ŝoforon.
  • La laboro daŭras pri la ŝoforo por la Vulkan-grafika API.
  • Baza efektivigo de la cl_khr_command_buffer etendo estas proponita, kiu permesas vin skribi sekvencon de OpenCL-komandoj por ekzekuto en unu voko.

fonto: opennet.ru

Aldoni komenton