GPU-databehandling – hva er det?

Hører du stadig om GPU-databehandling eller akselerasjon, men er ikke sikker på hva de betyr? Her er alt du trenger å vite.

GPU eller grafikkbehandlingsenheter er til stede i alle elektroniske kretser som produserer en eller annen form for skjerm, spesielt datamaskinen.

Tidlige grafikkprosessorer var relativt enkle. Men med bruken av spill, 3D-animasjon og videogjengivelsesoppgaver som presset CPUer utover grensene, måtte kraftigere GPUer komme til unnsetning.

Disse nye GPU-kortene vokste i kraft og kompleksitet over tid, med forskjellige selskaper og forskere som søkte etter måter å utnytte deres parallelle kjøringsfordeler. Dette innlegget viser deg hvordan det har gått så langt.

Hva er en GPU?

En GPU eller Graphics Processing Unit er en spesialisert krets designet for manipulering av data for å hjelpe til med å lage bilder for visning. Med andre ord er en GPU et system som lager bildene du ser på en hvilken som helst skjermflate, for eksempel dataskjermen, smarttelefonskjermen, spillkonsoller og så videre.

GPUer var i utgangspunktet enkle enheter som satte grafiske elementer sammen for å skape en ideell utgang for en bestemt enhet. Over tid, og med bruken av dataspill, begynte imidlertid GPU-er å vokse i kompleksitet og kraft, og fødte GPGPU eller generell databehandling på GPUer.

Hva er GPU-databehandling?

GPU-databehandling eller GPGPU er bruken av en GPU for beregning utover grafikk. Dette betyr å bruke GPU-ene som er innebygd i en datamaskins skjermkort og opprinnelig ment for å behandle datagrafikk for beregning av andre typer data, for eksempel vitenskapelige simuleringer, gruvedrift av kryptovaluta, algebraberegninger, værvarsling, nevrale nettverk og så videre.

Årsaken til denne utviklingen av GPU-databehandling kommer fra den imponerende utviklingen av grafikkbehandlingsenheter, som kommer fra den distribuerte parallelle arkitekturen til moderne GPU-systemer.

Etter hvert som datamaskinens CPU ble kraftigere og kunne håndtere mer komplekse programmer og spill, prøvde skjermkortprodusenter også å holde tritt med utviklingen innen moderne databehandling og 3D-grafikk. Nvidia avduket GeForce 256 i 1999 som verdens første GPU-skjermkort, og ting utviklet seg derfra.

Den største fordelen med GPU-kort fremfor CPUer er deres parallelle prosesseringsarkitektur, som gjør dem i stand til å behandle store dataoppgaver på en distribuert, parallell måte som forhindrer flaskehalser og CPU-frysing.

Hva er applikasjonene for GPU-databehandling?

Applikasjonene til GPU-databehandling er mange, her er en titt på noen av de beste bruksområdene:

  1. Maskinlæring og nevrale nettverk
  2. Uklar logikk
  3. Bio-informatikk
  4. Molekylær modellering
  5. Videogjengivelse
  6. Geometrisk databehandling
  7. Klimaforskning og værvarsling
  8. astrofysikk
  9. Kryptografi
  10. Datasyn
  11. Knekking av passord
  12. Kvanteforskning

GPU vs CPU-behandling

GPUer og CPUer behandler begge digitale data, men de gjør det på forskjellige måter. CPU-en eller den sentrale prosessorenheten er designet for seriell behandling ved høye hastigheter, mens GPU-er er designet for parallell prosessering ved mye lavere hastigheter. Selvfølgelig kan en CPU bruke hyper-threading for å få 2 tråder per kjerne, eller til og med ha dusinvis av kjerner, men de er i utgangspunktet serielle prosessorer.

Mens CPU-er kan ha noen få kjerner, kommer moderne GPU-er med tusenvis av kjerner, for eksempel Nvidia GeForce RTX 3090 som har 10K+ kjerner. For å få en fordel i forhold til CPU-er, må dataene være i stand til parallell behandling, for eksempel å behandle en strøm som inneholder tusenvis av bilder samtidig.

GPU-er vs ASIC-er

ASIC står for Application Specific Integrated Circuit og dette betyr at den bare kan utføre én oppgave – det vil si oppgaven den ble designet for å utføre. En ASIC er en unik maskin som er utviklet fra bunnen av og krever ekspert hardwarekunnskap for å bygge. ASIC-er brukes ofte i gruvedrift av kryptovaluta, da de tilbyr gode parallellbehandlingsfordeler og bedre effektivitet enn GPU-er.

Den største forskjellen mellom de to er imidlertid at GPU-er er mer allsidige. For eksempel kan du enkelt bygge en gruverigg for kryptovaluta ved å bruke GPUer. Delene er lett tilgjengelige, og hvis du er ferdig med gruvedrift, kan du alltid selge GPU-kortet til spillere eller andre gruvearbeidere. Med ASIC-er kan du imidlertid bare selge en brukt maskin til andre gruvearbeidere, fordi du nesten ikke kan gjøre noe annet med den.

Utover gruvedrift av kryptovaluta, blir det enda vanskeligere å legge hendene på en ASIC-maskin, fordi de ikke er masseprodukter. Dette står i sterk kontrast til GPU-systemer som du kan få overalt og enkelt konfigurere.

GPU vs Cluster Computing

Mens et enkelt GPU-kort inneholder tusenvis av kjerner, som gir enorm kraft til enhver datamaskin du kobler det til, kan du teoretisk legge til så mange GPU-kort til datamaskinens hovedkort som det kan håndtere, og ytterligere øke prosesseringsevnen.

En datamaskinklynge, derimot, refererer til flere datamaskiner som er koblet sammen for å fungere som en stor datamaskin - en superdatamaskin. Hver datamaskin på nettverket kalles en node og kan ha en multi-core CPU, samt ett eller flere GPU-kort om bord.

Hver klynge må ha en hovednode, som er den fremre datamaskinen som er ansvarlig for å administrere og planlegge arbeidsnodene. Den vil også inneholde programvare som tildeler data og programmer for sine arbeidernoder for å beregne og returnere resultater.

GPU-akselerasjon vs hyper-threading

CPU-en er designet for å håndtere flere oppgaver samtidig, og det er derfor den kjører med svært høye hastigheter, og planlegger behandlingstid mellom disse flere prosessene. Men når den støter på en beregningsintensiv funksjon, kan den tilbringe en stund i løkken før den går tilbake til de andre prosessene. Dette resulterer vanligvis i en generell senking av datamaskinen, og i verre tilfeller, en fullstendig frysing av systemet.

Datadesignere kan unngå dette fryktede scenariet ved enten å bruke hyper-threading eller GPU-akselerasjon. Hyper-threading lar en enkelt CPU-kjerne fungere som to behandlingstråder. Så når en tråd er fanget i en beregningsintensiv sløyfe, kan den andre tråden fortsatt holde systemet sammen.

Moderne datamaskiner har nå flere kjerner fra 2 til 4, 8, 16, 32 og så videre. I tillegg har de hyper-threading, så en 2-kjerne CPU tilbyr 4 tråder, en 4-kjerne tilbyr 8 tråder, og så videre.

Hyper-threading med multi-core CPUer vil løse de fleste dataproblemer, forhindre flaskehalser og levere topp ytelse med enkle spill, musikkproduksjon og små grafikk-, video- og maskinlæringsprosjekter. Men når du trenger mer kraft enn det, så er ofte en GPU den rette løsningen.

GPU eller maskinvareakselerasjon er muligheten til en programvareapplikasjon til å utnytte en GPUs parallelle prosessorkraft til å knuse store mengder data, uten å tære på CPU. Mange profesjonelle applikasjoner er avhengige av GPU-akselerasjon for å fungere godt. Disse inkluderer video- og animasjonsdesign/gjengivelsesprogrammer, kodere, kryptografi, store nevrale nettverk og så videre.

Grunnleggende om GPGPU-programmering

Generell programmering av GPUer ble opprinnelig utført ved hjelp av DirectX og OpenGL biblioteker. Disse ble designet strengt for grafikkutvikling, så du måtte omforme dataene dine til grafisk-lignende modeller for å fungere.

Heldigvis har det vært store fremskritt i GPGPU gjennom årene, noe som har ført til biblioteker, programmeringsspråk og rammeverk. Det mest populære av disse rammeverkene er CUDA fra Nvidia.

CUDA gjør det enkelt for enhver utviklere å dykke ned i GPU-programmering uten å måtte kjenne til det finurlige med klassisk GPU-programmering. Den gir funksjoner som forbedrer utvikling utover grafikk, med mange enheter som til og med har maskinlæringsspesifikke funksjoner.

Tilgjengelige biblioteker gjør det også enkelt å lage nye GPU-akselererte programmer fra bunnen av eller å tilpasse forhåndsskrevne til parallell behandling. Du velger riktig bibliotek, optimaliserer koden din for parallellsløyfer, rekompilerer, og det er det.

CUDA-kjerner vs strømprosessorer

Ofte vil du komme over begrepene Cuda kjerner og strømprosessorer. Begge begrepene refererer ganske enkelt til GPU-kjernen eller Aritmetiske logiske enheter av en GPU. CUDA Core er en proprietær teknologi fra Nvidia, mens Stream-prosessorer er fra AMD.

Et annet begrep du kan komme over er Streaming Multi-Processor eller SM. Dette er en annen Nvidia-teknologi som opprinnelig grupperte 8 CUDA-kjerner per SM. Den utfører 32-tråds deformering på en gang, og bruker 4 klokkesykluser per kommando. Nyere design har nå over 100 kjerner per streaming multi-prosessor.

Topp GPU-språk og biblioteker

Det er så mange biblioteker og språk der ute som fungerer på både Nvidia CUDA og AMD-plattformer. Følgende er bare noen få:

  1. Nvidia cuBLAS – Grunnleggende lineære algebra-underprogrammer for CUDA
  2. cuDNN – Dype nevrale nettverksbibliotek
  3. OpenCL – Åpen standard for parallell programmering
  4. Openmp – For AMD GPUer
  5. HOFTE – C++ bibliotek
  6. Nvidia cuRAND – Generering av tilfeldig tall
  7. cuFFT – For Fast Fourier-transformasjon
  8. Nvidia NPP – 2D bilde- og signalbehandling
  9. GPU VSIPL – Vektorbilde og signalbehandling
  10. OpenCV – GPU-bibliotek for datasyn
  11. ÅpneACC – Språk for parallell utvikling
  12. I PyCU – Python for CUDA-plattform
  13. TensorRT – Dyplæring for CUDA
  14. CUDA C++ – C++ språk for CUDA
  15. CUDA C – C-språk for CUDA
  16. CUDA Fortran – CUDA for FORTRAN-utviklere

Topp GPU-klyngeprosjekter

Fra juni 2022 er 8 av de 10 raskeste superdatamaskinene i verden GPU-akselerert. De deler alle Linux OS også, og er som følger:

RangNavnPetaflopsCPU-kjernerGPU-kjernerEffekt (kW)År
1.Frontier1,102591,8728,138,24021,1002022
2.ROM151.9075,2641,034,8802,9002022
3.Summit148.6202,7522,211,84010,0962018
4.sierra94.64190,0801,382,4007,4382018
5.Perlmutter64.59N / AN / A2,5892021
6.Selene63.4671,680483,8402,6462020
7.Tianhe-261.445427,0084,554,75218,4822013
8.Adastra46.121,632297,4409212022

Konklusjon

Når du når slutten av dette dykket inn i GPU-databehandling og alt som følger med den, burde du ha fått en ide om kraften og omfanget nå.

For mer informasjon kan du sjekke ut utviklerplattformen til Nvidia her eller det av AMD her.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke er en datamaskinentusiast som elsker å lese et bredt spekter av bøker. Han har en preferanse for Linux fremfor Windows/Mac og har brukt
Ubuntu siden de første dagene. Du kan fange ham på twitter via bongotrax

Artikler: 298

Motta tekniske ting

Tekniske trender, oppstartstrender, anmeldelser, nettinntekter, nettverktøy og markedsføring en eller to ganger i måneden