Hemsida » hur » Varför använder vi fortfarande CPU er istället för GPU?

    Varför använder vi fortfarande CPU er istället för GPU?

    Allt fler GPU används för icke-grafiska uppgifter som riskberäkningar, vätskedynamikberäkningar och seismisk analys. Vad hindrar oss från att anta GPU-driven enheter?

    Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-drive-gruppering av Q & A-webbplatser.

    Frågan

    SuperUser-läsaren Ell håller med tekniska nyheter och är nyfiken på varför vi inte använder fler GPU-baserade system:

    Det verkar för mig att det idag görs många beräkningar på GPU. Självklart är grafiken gjord där, men med CUDA och liknande, AI, hashingalgoritmer (think Bitcoins) och andra görs också på GPU. Varför kan vi inte bara bli av med CPU-enheten och använda GPU-enheten själv? Vad gör GPU så mycket snabbare än CPU: n?

    Varför verkligen? Vad gör CPU unik?

    Svaret

    SuperUser-bidragsgivaren DragonLord erbjuder en välunderbyggd översikt över skillnaderna mellan GPU och CPU: er:

    TL; DR svar: GPU: er har betydligt fler processorkärnor än CPU: er, men eftersom varje GPU-kärna körs betydligt långsammare än en CPU-kärna och inte har de funktioner som behövs för moderna operativsystem, är de inte lämpliga för att utföra det mesta av behandlingen i vardaglig dator. De är mest lämpade för datorintensiva operationer som videobehandling och fysik simuleringar.

    Det detaljerade svaret: GPGPU är fortfarande ett relativt nytt koncept. GPU: er användes initialt för att bara göra grafik; Som tekniken avancerade utnyttjades det stora antalet kärnor i GPU-enheter i förhållande till CPU-enheter genom att utveckla beräkningsförmåga för GPU så att de kan bearbeta många parallella dataströmmar samtidigt, oavsett vad de data kan vara. Medan GPU kan ha hundratals eller till och med tusentals strömprocessorer, kör de sig långsammare än en CPU-kärna och har färre funktioner (även om de är fullständiga och kan programmeras för att köra ett program som en CPU kan köra). Funktioner som saknas från GPU: er inkluderar avbrott och virtuellt minne som krävs för att implementera ett modernt operativsystem.

    Med andra ord har CPUer och GPU: er betydligt olika arkitekturer som gör dem bättre anpassade till olika uppgifter. En GPU kan hantera stora mängder data i många strömmar och utför relativt enkla operationer på dem, men är olämpligt för tung eller komplex bearbetning på en eller flera dataströmmar. En CPU är mycket snabbare per kärna (i form av instruktioner per sekund) och kan lättare utföra komplexa operationer på en eller flera dataflöden, men kan inte effektivt hantera många strömmar samtidigt.

    Som ett resultat är GPU: er inte lämpade att hantera uppgifter som inte dra nytta av eller inte kan parallelleras, inklusive många vanliga konsumentansökningar som ordbehandlare. Dessutom använder GPU: er en fundamentalt annorlunda arkitektur; man skulle behöva programmera en applikation speciellt för en GPU för att den ska fungera, och det krävs väsentligt olika tekniker för att programmera GPU: er. Dessa olika tekniker inkluderar nya programmeringsspråk, modifikationer av befintliga språk och nya programmeringsparadigmer som är bättre lämpade för att uttrycka en beräkning som en parallell operation som ska utföras av många strömprocessorer. För mer information om de tekniker som behövs för att programmera GPU, se Wikipedia-artiklarna om strömbehandling och parallell databehandling.

    Moderna GPU: er är kapabla att utföra vektoroperationer och flytande aritmetik, med de senaste korten som kan manipulera dubbla precisions flytande punktnummer. Ramar som CUDA och OpenCL möjliggör att program skrivs för GPU: er, och arten av GPU: er gör dem mest lämpade för mycket parallelliserbara operationer, såsom i vetenskaplig databehandling, där en serie specialiserade GPU-kalkylkort kan vara en hållbar ersättare för en liten beräkna klustret som i NVIDIA Tesla Personal Supercomputers. Konsumenter med moderna GPUer som är erfarna med Folding @ home kan använda dem för att bidra med GPU-klienter, som kan utföra proteinviktsimuleringar med mycket höga hastigheter och bidra till mer arbete med projektet (var noga med att läsa vanliga frågor, framför allt relaterade till GPU). GPUer kan också möjliggöra bättre fysiksimulering i videospel med PhysX, accelerera videokodning och avkodning och utföra andra beräkningskrävande uppgifter. Det är dessa typer av uppgifter som GPUs är mest lämpade att utföra.

    AMD är en banbrytande processorns design som kallas den accelererade processenheten (APU) som kombinerar konventionella x86-CPU-kärnor med GPU-enheter. Detta kan göra det möjligt för CPU- och GPU-komponenterna att fungera tillsammans och förbättra prestanda på system med begränsat utrymme för separata komponenter. Eftersom tekniken fortsätter att utvecklas, kommer vi att se en ökande grad av konvergens av dessa enstaka delar. Många uppgifter som utförs av operativsystem och applikationer är dock ännu bättre anpassade till processorer, och det krävs mycket arbete för att accelerera ett program med hjälp av en GPU. Eftersom så mycket befintlig programvara använder x86-arkitekturen, och eftersom GPU: er kräver olika programmeringstekniker och saknar flera viktiga funktioner som behövs för operativsystem, är en generell övergång från CPU till GPU för daglig databehandling extremt svår.


    Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.