Hjemmeside » hvordan » Hvorfor bruger vi stadig CPU'er i stedet for GPU'er?

    Hvorfor bruger vi stadig CPU'er i stedet for GPU'er?

    I stigende grad bruges GPU'er til ikke-grafiske opgaver som risikobegrænsninger, væskedynamikberegninger og seismisk analyse. Hvad er at stoppe os fra at vedtage GPU-drevne enheder?

    Dagens Spørgsmål og Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-drive gruppering af Q & A websteder.

    Spørgsmålet

    SuperUser-læser Ell holder op med tekniske nyheder og er nysgerrig, hvorfor vi ikke bruger flere GPU-baserede systemer:

    Det forekommer mig, at i dag er mange beregninger udført på GPU'en. Det er klart, at der er grafik der, men ved hjælp af CUDA og lignende, AI, hashing algoritmer (think Bitcoins) og andre gøres også på GPU'en. Hvorfor kan vi ikke bare slippe af med CPU'en og bruge GPU'en alene? Hvad gør GPU'en så meget hurtigere end CPU'en?

    Hvorfor faktisk? Hvad gør CPU'en unik?

    Svaret

    SuperUser bidragyder DragonLord tilbyder et godt understøttet overblik over forskellene mellem GPU'er og CPU'er:

    TL; DR svar: GPU'er har langt flere processorkerner end CPU'er, men fordi hver GPU-kerne løber betydeligt langsommere end en CPU-kerne og ikke har de nødvendige funktioner til moderne operativsystemer, er de ikke egnede til at udføre det meste af behandlingen i dagligdags computing. De er mest velegnede til beregningsintensive operationer som videobehandling og fysik simuleringer.

    Det detaljerede svar: GPGPU er stadig et relativt nyt koncept. GPU'er blev oprindeligt brugt til kun at gengive grafik; Som avanceret teknologi blev det store antal kerner i GPU'er i forhold til CPU'er udnyttet ved at udvikle beregningsmæssige egenskaber til GPU'er, så de kan behandle mange parallelle strømme af data samtidigt, uanset hvad disse data kan være. Mens GPU'er kan have hundredvis eller endda tusindvis af stream processorer, kører de hver gang langsommere end en CPU-kerne og har færre funktioner (selvom de er komplette og kan programmeres til at køre ethvert program, som en CPU kan køre). Funktioner, der mangler fra GPU'er, omfatter afbrydelser og virtuel hukommelse, som er nødvendige for at implementere et moderne operativsystem.

    Med andre ord har CPU'er og GPU'er betydeligt forskellige arkitekturer, der gør dem bedre egnet til forskellige opgaver. En GPU kan håndtere store mængder data i mange strømme, der udfører relativt enkle operationer på dem, men er uegnet til tung eller kompleks behandling på en enkelt eller få datastrømme. En CPU er meget hurtigere pr. Kerne (i form af instruktioner pr. Sekund) og kan let udføre komplekse operationer på en enkelt eller få strømme af data, men kan ikke effektivt håndtere mange strømme samtidig.

    Som et resultat er GPU'er ikke egnede til at håndtere opgaver, der ikke har stor nytte af eller ikke kan paralleliseres, herunder mange almindelige forbrugerapplikationer som tekstbehandlere. Derudover bruger GPU'er en fundamentalt anderledes arkitektur; man skulle programmere en applikation specifikt til en GPU, for at den kan fungere, og der kræves væsentligt forskellige teknikker til at programmere GPU'er. Disse forskellige teknikker omfatter nye programmeringssprog, modifikationer af eksisterende sprog og nye programmeringsparadigmer, der er bedre egnet til at udtrykke en beregning som en paralleloperation, der skal udføres af mange stream processorer. For mere information om de teknikker, der er nødvendige for at programmere GPU'er, se Wikipedia artikler om stream behandling og parallel computing.

    Moderne GPU'er er i stand til at udføre vektoroperationer og flydende aritmetik med de nyeste kort, der er i stand til at manipulere dobbelt præcision flydende punktnumre. Rammer som CUDA og OpenCL gør det muligt at skrive programmer til GPU'er, og arten af ​​GPU'er gør dem mest velegnede til meget paralleliserbare operationer, såsom i videnskabelig databehandling, hvor en række specialiserede GPU-beregningskort kan være en levedygtig erstatning for en lille beregne klynge som i NVIDIA Tesla Personal Supercomputers. Forbrugere med moderne GPU'er, der er erfarne med Folding @ home, kan bruge dem til at bidrage med GPU-klienter, der kan udføre proteinfoldsimuleringer med meget høje hastigheder og bidrage mere til arbejdet med projektet (sørg for at læse FAQs først, især de relaterede til GPU'er). GPU'er kan også muliggøre bedre fysik simulering i videospil ved hjælp af PhysX, accelerere video kodning og afkodning og udføre andre computerkrævende opgaver. Det er disse typer af opgaver, som GPU'er er bedst egnet til at udføre.

    AMD er banebrydende med et processor design kaldet Accelerated Processing Unit (APU), der kombinerer konventionelle x86 CPU kerner med GPU'er. Dette kunne give CPU- og GPU-komponenterne mulighed for at arbejde sammen og forbedre ydeevnen på systemer med begrænset plads til separate komponenter. Da teknologien fortsætter med at blive fremskreden, vil vi se en stigende grad af konvergens mellem disse engangskilte dele. Mange opgaver, der udføres af pc-operativsystemer og applikationer, er dog stadig bedre egnet til CPU'er, og der kræves meget arbejde for at accelerere et program ved hjælp af en GPU. Da så meget eksisterende software bruger x86-arkitekturen, og fordi GPU'er kræver forskellige programmeringsteknikker og mangler flere vigtige funktioner, der er nødvendige for operativsystemer, er en generel overgang fra CPU til GPU til daglig computing ekstremt vanskelig.


    Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.