NVIDIA GPU's krijgen SYCL-ondersteuning nadat codeplay bijdraagt aan de ontwikkeling van de DPC ++ -standaard
Na steun te hebben gekregen van toonaangevende bedrijven zoals Intel, Xilinx, Renesas en Imagination Technologies, de SYCL (uitgesproken als ‘sikkel’), kunnen de ontwikkelaars die NVIDIA GPU's gebruiken nu ook van het voordeel profiteren. Codeplay, de organisatie die voortdurend actief heeft bijgedragen aan de SYCL-gemeenschap, heeft nu zijn hoogtepunt bereikt met de geavanceerde ontwikkeling van DPC ++ (Data Parallel C ++), waarmee code op verschillende hardwareplatforms kan worden gerecycled en hergebruikt. Het resultaat is ComputeCpp, Codeplay's eigen implementatie van SYCL.
De nieuwste editie van ComputeCpp biedt experimentele ondersteuning voor NVIDIA GPU's die OpenCL en NVIDIA's PTX gebruiken
Vorig jaar nam Intel een beslissende stap om SYCL een duwtje in de rug te geven en begon zelfs te werken aan oneAPI Standard. De oneAPI bevat DPC ++ (een implementatie van SYCL met uitbreidingen) voor Intel's CPU's, GPU's en FPGA's. De beweging werd al snel behoorlijk groot en kwam in een stroomversnelling nadat steun voor SYCL kwam van Xilinx, Renesas en Imagination Technologies. Simpel gezegd, softwareontwikkelaars kunnen nu een breed scala aan apparaten targeten met SYCL.
De ComputeCpp biedt experimentele ondersteuning voor NVIDIA GPU's met OpenCL en NVIDIA's PTX. Maar DPC ++ (Intel's SYCL-implementatie) biedt de mogelijkheid om volledige ondersteuning toe te voegen voor NVIDIA GPU's die zijn geïntegreerd in de LLVM-compiler zonder via OpenCL te gaan. Codeplay heeft aangekondigd dat ze de initiële, experimentele fase van hun implementatie opensourcen, waardoor SYCL-ontwikkelaars zich kunnen richten op NVIDIA GPU's. De codebase voor deze implementatie blijft ineen aparte vork van zowel het hoofd LLVM-compilerproject als de DPC ++ branch. De organisatie voegde eraan toe dat ze van plan zijn om met Intel samen te werken om de NVIDIA GPU-ondersteuning toe te voegen aan de upstream Intel / LLVM-compiler.
Hoe kunnen ontwikkelaars profiteren van de SYCL-ondersteuning voor NVIDIA GPU's?
Dit project stelt ontwikkelaars in staat NVIDIA GPU's te targeten met behulp van SYCL-code, zonder door de OpenCL-laag in het systeem te hoeven gaan. Met andere woorden, met slechts een NVIDIA GPU kunnen ontwikkelaars DPC ++ op hun systeem uitvoeren om SYCL-applicaties te compileren. Bovendien kan elke bestaande CUDA-applicatie incrementeel worden geport naar SYCL met behulp van de CUDA-ondersteuning, en deze vervolgens uitvoeren op een platform dat geen CUDA heeft. Dit scheelt duidelijk veel tijd en herhaalde inspanningen.
Codeplay heeft instructies gegeven over het README-bestand van het project waarin wordt uitgelegd hoe de NVIDIA-back-end voor DPC++ moet worden gebruikt. Ontwikkelaars zijn verplicht om enkele vlaggen te gebruiken bij het compileren, en wat code om hun apparaatkiezer in te stellen om ervoor te zorgen dat de runtime weet op welk apparaat ze zich moeten richten. In het bijzonder de sectie "Bouw SYCL-toolchain met ondersteuning voor NVIDIA CUDA”En de Clang-compileropties hebbenspecifieke instructies.
Codeplay bevestigde dat ze het project met succes hebben uitgevoerd met Ubuntu 18.04 met behulp van CUDA 10.1 op een Titan RTX GPU (rekenmogelijkheden 7.5). Het team verzekert dat het ook zou moeten werken op andere Linux-versies met elke NVIDIA GPU die compatibel is met SM 5.0 of hoger. De gecompileerde SYCL-applicatie kan echter alleen CUDA of OpenCL targeten, niet beide tegelijk.
Het team waarschuwt ook dat de initiële release van het project niet is geoptimaliseerd, waardoor de prestaties mogelijk niet onder alle omstandigheden optimaal zijn. Met andere woorden, ontwikkelaars zullen hetzelfde moeten implementeren en zelf de snelheidsverbeteringen moeten vaststellen, als die er zijn. Dit komt doordat bij het genereren van code geen specifieke optimalisatiekanalen worden toegepast. Bovendien gebruikt de CUDA-implementatie van de SYCL-specificatie in de plug-in-interface geen geavanceerde CUDA-functies.
Codeplay heeft aangegeven dat het verbeteren van compatibiliteit en functionaliteit hun topprioriteiten blijven. Ze gaven aan dat de huidige focus ligt op het implementeren van zoveel mogelijk functionaliteit, zodat ontwikkelaars een reeks SYCL-applicaties op NVIDIA GPU-platforms kunnen draaien. Prestatieverbeteringen zullen later komen met de hulp van communityleden.