PoCL 1.6, en frittstående implementering av OpenCL-standarden

Lanseringen av den nye versjonen av prosjektet PoCL 1.6 (Portable Computing Language OpenCL), av høydepunktene i versjon 1.6, er støtten til Clang / LLVM 11.0, samt arbeidet som er gjort for å forbedre ytelsen og funksjonene til CUDA, forbedret kompatibilitet med PowerPC og forbedret bruk av OpenCL-feilsøking.

For de som ikke er kjent med PoCL, bør du vite hva det er en bærbar åpen kildekode-implementering (lisensiert av MIT) av OpenCL-standarden (1.2 med noen støttede 2.0-funksjoner). I tillegg til å være en openCL-implementering med åpen kildekode for flere enheter (virkelig heterogen) lett bærbar, et hovedmål for dette prosjektet er å forbedre interoperabiliteten til mangfoldet av OpenCL-kompatible enheter ved å integrere dem i en enkelt sentralt orkestrert plattform.

I tillegg er et av de viktigste langsiktige målene å forbedre ytelsesportabiliteten til OpenCL-programmer på enhetstyper som bruker kjøretid og kompileringsteknikker.

OpenCL-kjernekompilatoren er basert på LLVM og Clang brukes som grensesnitt for OpenCL C. For å gi tilstrekkelig ytelse og bærbarhet kan OpenCL-kjerne-kompilatoren generere kombinerte funksjoner som kan bruke forskjellige maskinvarressurser til å parallellisere kodeutførelse. , for eksempel VLIW, superscalar, SIMD, SIMT, multi-core og multi-threaded. Det er støtte for ICD-drivere (Installable Client Driver). Det er backender som gir arbeid gjennom CPU, ASIP (TCE / TTA), GPU basert på HSA-arkitektur og NVIDIA GPU (CUDA).

Viktigste nye funksjoner i PoCL 1.6

Denne nye versjonen av PoCL 1.6 fremhever muligheten til å kompilere denne implementeringen med enhetsdrivere som er aktivert ved kompileringstidspunkt, samt tilgjengeligheten av enheten vil bli bekreftet ved oppstart (tidligere systemene som PoCL er bygget og kjørt på de burde hatt samme kontrollerstøtte). Implementerte muligheten til å bruke conda package manager til å distribuere PoCL binære pakker med CUDA-støtte for Linux-x86_64 og Linux-ppc64le-systemer.

En annen endring som skiller seg ut er støtten til LLVM 11 sammen med de utvidede mulighetene for feilsøking av OpenCL-kode når du bruker CPU-kontrolleren.

I tillegg er det fremhevet at ytelsesoptimaliseringen av CUDA-backend ble utført, noe som muliggjorde betydelig raskere operasjoner knyttet til bruk av lokalt minne (FFT, GEMM).

Benchmarks ved bruk av SHOC-referanser (som nå kontinuerlig testes viser at disse optimaliseringene resulterte i mye bedre ytelse, spesielt for referanser som involverer lokalt minne som FFT og GEMM, sammenlignet med PoCL oppnår nå ofte konkurransedyktige ytelser med Nvidias proprietære OpenCL-driver). Vi ønsker bidrag for å identifisere og eliminere grunnårsakene til de gjenværende problemområdene. Vi ønsker også bidrag for å forbedre funksjonsdekningen for OpenCL 1.2 / 3.0-standardene.

  • PoCL-ytelse i mange tester er nå nær NVIDIAs proprietære OpenCL-driver.
  • Lagt til HARDENING_ENABLE kompileringsparameter for å aktivere kompilatoralternativer for å generere en sikrere libpocl.so på bekostning av ytelsesnedbrytning.
  • Returnert støtte for PowerPC 8/9-systemer, der OpenCL-implementeringsnivået når du bruker pthread og CUDA-enheter tilsvarer CUDA-nivået på x86_64-systemer.
  • Endret ABI for CUDA-kjerner som bruker __ lokale blokker. Etter oppgradering må brukerne tømme pocl-cache.
  • Fjernet støtte for SINGLE_LLVM_LIB-byggealternativet, i stedet for å bruke STATIC_LLVM og llvm-config for å definere hvilke biblioteker du skal binde til.

Til slutt, hvis du vil vite mer om denne nye versjonen, kan du sjekke detaljene i den opprinnelige annonsen. 

Mens de som er interessert i å vite mer om denne implementeringen, kan de konsultere den offisielle hjemmesiden av dette, hvor du finner dokumentasjonen og laster ned filer.

Prosjektkoden distribueres under MIT-lisensen, og arbeidet støttes på plattformene X86_64, MIPS32, ARM v7, AMD HSA APU og forskjellige spesialiserte TTA-prosessorer med VLIW-arkitekturen.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.