NVIDIA GPUer får SYCL-støtte etter at kodespill bidrar til utvikling av DPC ++ Standard
Etter å ha fått støtte fra ledende selskaper som Intel, Xilinx, Renesas og Imagination Technologies, SYCL (uttalt ‘sigd’), vil utviklerne som bruker NVIDIA GPUer, nå kunne få fordelene også. Codeplay, organisasjonen som standhaftig har vært en aktiv bidragsyter til SYCL Community, har nå kulminert den avanserte utviklingen av DPC ++ (Data Parallel C ++), som har resirkulering og gjenbruk av kode på tvers av flere maskinvareplattformer. Resultatet er ComputeCpp, Codeplay sin egen implementering av SYCL.
ComputeCpps siste utgave tilbyr eksperimentell støtte for NVIDIA-GPUer som bruker OpenCL og NVIDIAs PTX
I fjor tok Intel et avgjørende skritt for å gi et press til SYCL, og begynte til og med å jobbe med oneAPI Standard. OneAPI inkluderer DPC ++ (en implementering av SYCL med utvidelser) for Intels CPUer, GPUer og FPGAer. Bevegelsen ble snart ganske stor og fikk fart etter at støtte for SYCL kom inn fra Xilinx, Renesas og Imagination Technologies. Enkelt sagt, programvareutviklere er nå i stand til å målrette mot et bredt spekter av enheter som bruker SYCL.
ComputeCpp tilbyr eksperimentell støtte for NVIDIA GPUer ved hjelp av OpenCL og NVIDIAs PTX. Men DPC ++ (Intels SYCL-implementering) gir muligheten til å legge til full støtte for NVIDIA GPUer integrert i LLVM-kompilatoren uten å gå gjennom OpenCL. Codeplay kunngjorde at de åpner for den første, eksperimentelle fasen av implementeringen som gjør det mulig for SYCL-utviklere å målrette NVIDIA GPUer. Kodebasen for denne implementeringen holder segen egen gaffel fra både hoved LLVM-kompilatorprosjektet og DPC ++ -grenen. Organisasjonen la til at de har til hensikt å samarbeide med Intel for å få NVIDIA GPU-støtte lagt til oppstrøms Intel / LLVM-kompilatoren.
Hvordan kan utviklere dra nytte av SYCL-støtte for NVIDIA GPUer?
Dette prosjektet gjør det mulig for utviklere å målrette NVIDIA GPUer ved hjelp av SYCL-kode, uten å måtte gå gjennom OpenCL-laget i systemet. Med andre ord, med bare en NVIDIA GPU, kan utviklere kjøre DPC ++ på systemet sitt for å kompilere SYCL-applikasjoner. Videre kan ethvert eksisterende CUDA-program porteres trinnvis til SYCL ved hjelp av CUDA-støtten, og deretter kjøre det på en plattform som ikke har CUDA. Dette sparer helt klart mye tid og gjentatte anstrengelser.
Codeplay har tilbudt instruksjoner om prosjektet README-fil som forklarer hvordan du bruker NVIDIA-backend for DPC ++. Utviklere er pålagt å bruke noen flagg når de kompilerer, og noen kode for å sette opp enhetsvelgeren for å sikre at kjøretiden vet hvilken enhet de skal målrette mot. Spesielt avsnittet “Bygg SYCL-verktøykjede med støtte for NVIDIA CUDA”Og Clang-kompilatoralternativene harspesifikke instruksjoner.
Codeplay bekreftet at de vellykket kjørte prosjektet med Ubuntu 18.04 ved hjelp av CUDA 10.1 på en Titan RTX GPU (beregningsfunksjoner 7.5). Teamet forsikrer at det også skal fungere på andre Linux-versjoner med hvilken som helst NVIDIA GPU som er kompatibel med SM 5.0 eller nyere. Imidlertid vil den kompilerte SYCL-applikasjonen bare kunne målrette CUDA eller OpenCL, ikke begge samtidig.
Teamet advarer også om at den første utgivelsen av prosjektet ikke er optimalisert, så ytelsen er kanskje ikke optimal under alle omstendigheter. Med andre ord, utviklere vil måtte distribuere det samme og fastslå hastighetsforbedringene selv, hvis det er noen. Dette er fordi kodegenerering ikke bruker noen spesielle optimaliseringskort. Videre bruker ikke CUDA-implementeringen av SYCL-spesifikasjonen i Plugin Interface noen avanserte CUDA-funksjoner.
Codeplay har antydet at å øke kompatibilitet og funksjonalitet forblir deres topp prioriteter. De indikerte at det nåværende fokuset er å implementere så mye funksjonalitet som mulig, slik at utviklere kan kjøre en rekke SYCL-applikasjoner på NVIDIA GPU-plattformer. Ytelsesoptimaliseringer kommer senere ved hjelp av fellesskapsmedlemmer.