AMD oversætter Nvidias supercomputer-trick til C++ og AMD's gpu'er

Nvidias CUDA har gjort Nvidias gpu'er til fast inventar i supercomputere, men nu får AMD's mulighed for at komme med i kapløbet.

AMD har for nylig frigivet version 1.0 af et værktøj, der kan give AMD lidt af det tabte terræn tilbage inden for HPC, high performance computing. Her har Nvidia haft en fordel takket være CUDA, der har gjort det nemmere at skrive kode, der udnyttede Nvidias grafikprocessorer til tunge udregninger.

Derfor har mange af de største supercomputere i dag grafikkort fra Nvidia, men i løbet af 2016 har AMD arbejdet på værktøjet HIP.

HIP kan bruges til at oversætte kode skrevet til CUDA til C++. CUDA fungerer som et ekstra lag, der kan bruges sammen med C, C++ og Fortran, som skal oversættes til CUDA.

AMD's HIP går i meget overordnede træk den anden vej og kan oversætte eksisterende CUDA-kode til C++. Det betyder, at man kan arbejde i ren C++ hele vejen i forløbet, hvis man ønsker det.

Fordelen for AMD er imidlertid, at den resulterende C++ kode kan afvikles på både Nvidias og AMD's grafikprocessorer. Det kan lade sig gøre, fordi begge hardwareplatforme understøtter OpenCL. I princippet kunne man derfor blot skrive i OpenCL, men CUDA er på få år blevet det foretrukne redskab, så for at bygge videre på dét arbejde, har AMD altså udviklet HIP.

Samtidig kan man altså skrive al sin kode i C++ og dermed udnytte nogle af de funktioner og biblioteker, som CUDA mangler understøttelse for.

Der er tale om et open source-redskab, som stadig er under udvikling, og man skal ifølge AMD være forberedt på at skulle lave visse finjusteringer af sin CUDA-kode for at opnå optimal ydelse.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (7)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Magnus Jørgensen

CUDA fungerer som et ekstra lag, der kan bruges sammen med C, C++ og Fortran, som skal oversættes til CUDA.

Den sætning giver ikke rigtigt mening.

Fordelen for AMD er imidlertid, at den resulterende C++ kode kan afvikles på både Nvidias og AMD's grafikprocessorer. Det kan lade sig gøre, fordi begge hardwareplatforme understøtter OpenCL

Men det må jo så være fordi de også har lavet et værktøj til at oversætte fra C++ til OpenCL. Men fremgår ikke rigtigt af artiklen.

Samtidig kan man altså skrive al sin kode i C++ og dermed udnytte nogle af de funktioner og biblioteker, som CUDA mangler understøttelse for.

Men CUDA mangler jo ikke understøttelse da det er den foretrukne platform. Eller hur?
Generelt virker denne artikkel som om at den er skrevet af en person der ikke har kendskab til problemstillingen.

  • 1
  • 0
Magnus Jørgensen

Hvis AMD rent faktisk har lavet et værktøj der kan lave optimerede oversættelser fra C++ til OpenCL vil det være noget af et scoop. Så det kunne være rart hvis det blev uddybet.

Det største problem ved at skrive optimeret kode til OpenCL og CUDA er jo netop at der skal lægges en del arbejde i at arrangere data og beregninger i en rækkefølge som passer med stream processesorene i et grafik kort. Selvom man har en opgave som umiddelbart er parallelliserbar er det jo ikke nødvendigvis sikkert at den også eksekveres optimalt på en GPU.

  • 1
  • 0
Troels Henriksen

Men det må jo så være fordi de også har lavet et værktøj til at oversætte fra C++ til OpenCL. Men fremgår ikke rigtigt af artiklen.

Nej, det er et værktøj til at lave (semi-)automatisk oversættelse af CUDA C++ (en dialekt af C++ med nogle NVIDIA GPU-udvidelser) til HIP, som er en anden C++-dialekt med nogle andre GPU-udvidelser[0]. Det er ikke en oversættelse til ren OpenCL.

Et værktøj som dette er af kritisk betydning for AMD, da langt det meste GPGPU-kode desværre er skrevet i CUDA C++.

Personligt synes jeg at det er helt hul i hovedet at bruge et sprog som C++ til en massivt parallel maskine, men det er åbenbart hvad folk vil have.

[0]: Det er lidt mere kompliceret. På en NVIDIA-platform kan HIP C++ omdannes til CUDA C++ med nogle headerdefinitioner, og på en AMD-platform kan det omdannes til noget der hedder HCC C++. Derefter forsvinder historien ind i AMDs labyrint af forladte projekter og forvirrende forkortelser.

  • 2
  • 0
Magnus Jørgensen

Derefter forsvinder historien ind i AMDs labyrint af forladte projekter og forvirrende forkortelser.

De fleste super computere kører alligevel Linux og AMD/Radeon har desværre aldrig rigtigt leveret hverken opensource eller proproetære drivere til Linux som var ret meget værd.
De sidste benchmarks jeg har set på Phoronix viste at Nvidia outperformede AMD på OpenCL opgaver. Så er det ikke så underligt at AMD ikke bliver valgt til super computerene.

  • 2
  • 0
Troels Henriksen

Hvis du bygger en supercomputer med AMD-komponenter, så lur mig om ikke du også kan få AMD til at levere en ordentlig driver. Det er jo OpenGL-delen af driveren der er virkelig kompliceret, og den er ikke vigtig her. En fornuftig OpenCL-driver er ikke lige så svær at lave. Min erfaring med GPGPU på Linux er at AMD er en anelse nemmere at have med at gøre.

At NVIDIA til tider er hurtigere end AMD skyldes nok bare at deres hardware er bedre. NVIDIAs OpenCL-understøttelse er ikke så dårlig som folk som regel går og siger - de bruger jo samme kodegenerator som til CUDA. Problemet med NVIDIAs OpenCL-understøttelse er at de kun understøtter ældre udgaver, og at deres mere avancerede udviklingsværktøjer slet ikke understøtter det.

  • 2
  • 0
Troels Henriksen

Iøvrigt, når man kan køre OpenCL opgaver på low-power FPGA'er, er AMD GPU'ere så overhovedet interessante til OpenCL?

FPGA'er er i forhold til GPUer væsentligt dyrere at anskaffe, ikke lige så udbredte, ikke lige så fleksible, og ikke velegnede til samme typer opgaver. F.eks. har GPUer større og hurtigere arbejdslager end du selv kan syntetisere på en FPGA. En FPGA er primært smart hvis du kan formulere dit problem som en meget lang pipeline, med kommunikation i registre. Derudover tager det enormt lang tid at syntetisere et FPGA-layout, uanset om kildeteksten er i OpenCL eller VHDL.

  • 1
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize