Hvorfor bruker vi fortsatt CPUer i stedet for GPUer?
I økende grad brukes GPUer for ikke-grafiske oppgaver som risikobegrensninger, væskedynamikberegninger og seismisk analyse. Hva er å stoppe oss fra å vedta GPU-drevne enheter?
Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en gruppedriving av Q & A-nettsider.
Spørsmålet
SuperUser leser Ell holder opp med tekniske nyheter og er nysgjerrig på hvorfor vi ikke bruker flere GPU-baserte systemer:
Det ser ut til at i dag er det mange beregninger på GPU. Det er åpenbart at grafikk er gjort der, men med CUDA og lignende, AI, hashing algoritmer (think Bitcoins) og andre er også gjort på GPU. Hvorfor kan vi ikke bare kvitte seg med CPU og bruke GPUen alene? Hva gjør GPU så mye raskere enn CPU?
Hvorfor faktisk? Hva gjør CPU unik?
Svaret
SuperUser-bidragsyter DragonLord tilbyr et godt støttet oversikt over forskjellene mellom GPUer og CPUer:
TL; DR svar: GPUer har langt flere prosessorkjerner enn CPUer, men fordi hver GPU-kjernen går betydelig tregere enn en CPU-kjerne og ikke har de funksjonene som trengs for moderne operativsystemer, er de ikke hensiktsmessige for å utføre mesteparten av behandlingen i hverdagen. De er best egnet til beregningsintensive operasjoner som videobehandling og fysikk simuleringer.
Det detaljerte svaret: GPGPU er fortsatt et relativt nytt konsept. GPUer ble først brukt for å gjengi grafikk bare; Som teknologi avansert, ble det store antallet kjerner i GPUer i forhold til CPUer utnyttet ved å utvikle beregningsevne for GPUer, slik at de kan behandle mange parallelle datastrømmer samtidig, uansett hva disse dataene kan være. Selv om GPUer kan ha hundrevis eller tusenvis av strømprosessorer, kjører de hverandre langsommere enn en CPU-kjerne, og har færre funksjoner (selv om de er fullstendig og kan programmeres for å kjøre et program som en CPU kan kjøre). Funksjoner som mangler fra GPUer inkluderer avbrudd og virtuelt minne, som kreves for å implementere et moderne operativsystem.
Med andre ord har CPUer og GPUer betydelig forskjellig arkitektur som gjør dem bedre egnet til ulike oppgaver. En GPU kan håndtere store mengder data i mange bekker, og utfører relativt enkle operasjoner på dem, men er dårlig egnet til tung eller kompleks behandling på en eller flere datastrømmer. En CPU er mye raskere per kjerne (i form av instruksjoner per sekund) og kan utføre kompliserte operasjoner på en eller flere datastrømmer, men kan ikke effektivt håndtere mange strømmer samtidig.
Som et resultat er GPUer ikke egnet til å håndtere oppgaver som ikke har vesentlig nytte av eller ikke kan parallelliseres, inkludert mange vanlige forbrukerprogrammer som tekstbehandlere. Videre bruker GPUer en fundamentalt annerledes arkitektur; man må programmere en applikasjon spesifikt for en GPU for at den skal fungere, og det må kreves betydelig forskjellige teknikker for å programmere GPUer. Disse forskjellige teknikkene inkluderer nye programmeringsspråk, modifikasjoner av eksisterende språk og nye programmeringsparadigmer som er bedre egnet til å uttrykke en beregning som en parallell operasjon som skal utføres av mange strømprosessorer. For mer informasjon om teknikkene som trengs for å programmere GPUer, se Wikipedia-artiklene om strømbehandling og parallell databehandling.
Moderne GPUer er i stand til å utføre vektoroperasjoner og flytende aritmetikk, med de nyeste kortene som er i stand til å manipulere dobbelt-presisjon flytende punktnumre. Rammer som CUDA og OpenCL gjør at programmer kan skrives for GPUer, og arten av GPUer gjør dem mest egnet til svært parallelliserbare operasjoner, for eksempel i vitenskapelig databehandling, hvor en serie spesialiserte GPU-beregningskort kan være en levedyktig erstatning for en liten beregne klyngen som i NVIDIA Tesla Personal Supercomputers. Forbrukere med moderne GPUer som er erfarne med Folding @ home, kan bruke dem til å bidra med GPU-klienter, som kan utføre proteinfoldsimuleringer med svært høye hastigheter og bidra til mer arbeid på prosjektet (sørg for å lese vanlige spørsmål først, spesielt de som er relatert til GPU). GPUer kan også aktivere bedre fysikk simulering i videospill ved hjelp av PhysX, akselerere video koding og dekoding, og utføre andre beregningsintensive oppgaver. Det er disse typer oppgaver som GPUer er mest egnet til å utføre.
AMD er en banebrytende prosessor design kalt Accelerated Processing Unit (APU) som kombinerer konvensjonelle x86 CPU-kjerner med GPUer. Dette kan tillate at CPU- og GPU-komponentene samarbeider og forbedrer ytelsen på systemer med begrenset plass til separate komponenter. Som teknologien fortsetter å utvikle, vil vi se en økende grad av konvergens mellom disse engangspartiene. Men mange oppgaver utført av PC-operativsystemer og applikasjoner er fortsatt bedre egnet til CPUer, og mye arbeid er nødvendig for å akselerere et program ved hjelp av en GPU. Siden så mye eksisterende programvare bruker x86-arkitekturen, og fordi GPUer krever forskjellige programmeringsteknikker og mangler flere viktige funksjoner som trengs for operativsystemer, er en generell overgang fra CPU til GPU for daglig bruk ekstremt vanskelig..
Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.