Zakaj še uporabljamo procesorje Namesto grafičnih procesorjev?
Vse bolj se uporabljajo grafične procesorske enote za grafične naloge, kot so izračunavanje tveganj, izračun dinamike tekočin in analiza seizmičnosti. Kaj nas bo ustavilo pri sprejemanju naprav, ki jih poganja GPU?
Današnja seja vprašanj in odgovorov prihaja z namenom SuperUser-a, ki je del skupine Stack Exchange, ki združuje skupino spletnih mest za vprašanja in odgovore.
Vprašanje
Bralnik SuperUser Ell sledi tehnološkim novicam in je radoveden, zakaj ne uporabljamo več sistemov, ki temeljijo na GPU:
Zdi se mi, da se v teh dneh veliko preračuna opravi na GPU. Očitno je grafika tam narejena, vendar z uporabo CUDA in podobnih, AI, algoritmov za zgoščevanje (mislim Bitcoins) in drugih na GPU. Zakaj se ne moremo samo znebiti CPU in uporabljati GPU sam? Kaj naredi GPU tako hitreje kot CPU?
Zakaj pravzaprav? Kaj naredi CPU edinstveno?
Odgovor
Prispevek uporabnika SuperUser DragonLord ponuja dobro podprt pregled razlik med grafičnimi procesorji in procesorji:
TL, DR odgovor: Grafični procesorji imajo veliko več procesorskih jeder kot CPU, vendar ker vsako jedro grafičnega procesorja deluje precej počasneje kot jedro CPU in nimajo funkcij, potrebnih za sodobne operacijske sisteme, niso primerne za izvajanje večine obdelav v vsakdanjem računalniku. Najbolj so primerni za intenzivne operacije, kot so obdelava videa in simulacije fizike.
Podroben odgovor: GPGPU je še vedno relativno nov koncept. GPU-ji so bili prvotno uporabljeni samo za upodabljanje grafike; kot napredna tehnologija, je bilo veliko število jeder v grafičnih procesorjih glede na CPU izkoriščeno z razvojem računalniških zmogljivosti za grafične procesorje, tako da lahko obdelujejo več vzporednih tokov podatkov hkrati, ne glede na to, kakšni so podatki. Čeprav imajo lahko grafične procesne enote na stotine ali celo tisoče pretočnih procesorjev, vsaka od njih deluje počasneje kot jedro CPE in ima manj funkcij (tudi če so popolne in jih je mogoče programirati za zagon kateregakoli programa, ki ga lahko izvaja CPU). Med manjkajočimi grafičnimi enotami so prekinitve in navidezni pomnilnik, ki so potrebni za izvajanje sodobnega operacijskega sistema.
Z drugimi besedami, CPU-ji in GPU-ji imajo bistveno različne arhitekture, zaradi katerih so bolj primerne za različne naloge. GPU lahko obdeluje velike količine podatkov v številnih tokovih, opravlja sorazmerno preproste operacije na njih, vendar ni primeren za težko ali kompleksno obdelavo na enem ali nekaj tokovih podatkov. CPU je veliko hitrejši na osnovi jedra (v smislu navodil na sekundo) in laže izvede kompleksne operacije na enem ali nekaj tokovih podatkov, vendar ne more učinkovito upravljati več tokov hkrati.
Zaradi tega grafični procesorji niso primerni za opravila, ki ne koristijo bistveno ali ne morejo biti vzporedni, vključno s številnimi običajnimi potrošniškimi aplikacijami, kot so urejevalniki besedil. Poleg tega GPU uporabljajo popolnoma drugačno arhitekturo; eno bi morali programirati aplikacijo posebej za grafično procesno enoto, da lahko deluje, in za programiranje grafičnih procesorskih enot so potrebne bistveno drugačne tehnike. Te različne tehnike vključujejo nove programske jezike, modifikacije obstoječih jezikov in nove paradigme programiranja, ki so bolj primerne za izražanje izračunov kot vzporedno operacijo, ki jo izvede veliko procesorjev. Za več informacij o tehnikah, ki so potrebne za programiranje grafičnih procesorjev, si oglejte članke Wikipedije o obdelavi toka in vzporednem računanju.
Sodobni grafični procesorji so sposobni izvajati vektorske operacije in aritmetiko s plavajočo vejico, z najnovejšimi karticami, ki lahko manipulirajo z dvojno natančnostjo s plavajočo vejico. Okviri, kot so CUDA in OpenCL, omogočajo, da so programi zapisani za grafične procesorje, narava grafičnih procesorjev pa jih najbolj ustreza zelo vzporednim operacijam, kot je na primer v znanstvenem računalništvu, kjer je lahko serija specializiranih kartic za izračun GPU izvedljiva zamenjava za majhno računski grozd kot v osebnih superračunalnikih NVIDIA Tesla. Potrošniki s sodobnimi grafičnimi procesorji, ki imajo izkušnje s programom Folding @ home, jih lahko uporabijo za sodelovanje s strankami v grafični programski opremi, ki lahko izvajajo simulacije z zlaganjem beljakovin z zelo visokimi hitrostmi in prispevajo k projektu več dela (najprej preberite pogosta vprašanja, še posebej tista, ki so povezana s GPU). GPU-ji lahko omogočajo tudi boljšo fizikalno simulacijo pri video igrah, ki uporabljajo PhysX, pospešujejo kodiranje in dekodiranje videa ter opravljajo druge računsko intenzivne naloge. Te vrste nalog, ki jih GPU najbolj ustreza.
AMD je pionir na področju oblikovanja procesorjev, imenovanega Pospešena procesna enota (APU), ki združuje običajne jedra procesorja x86 z grafičnimi procesorji. To bi lahko omogočilo, da komponente CPU in GPU delujejo skupaj in izboljšajo zmogljivost sistemov z omejenim prostorom za ločene komponente. Ker tehnologija še naprej napreduje, bomo videli vse večjo stopnjo konvergence teh nekoč ločenih delov. Vendar pa so številne naloge, ki jih izvajajo operacijski sistemi in aplikacije računalnika, še vedno primernejše za procesorje in veliko dela je potrebnega za pospešitev programa z uporabo GPU. Ker tako veliko obstoječe programske opreme uporablja arhitekturo x86 in ker grafične procesne enote zahtevajo različne tehnike programiranja in manjkajo nekatere pomembne funkcije, potrebne za operacijske sisteme, je splošen prehod iz CPU na GPU za vsakodnevno računalništvo izjemno težaven..
Imate kaj dodati pojasnilu? Zvok izključen v komentarjih. Želite prebrati več odgovorov drugih uporabnikov tehnologije Stack Exchange? Oglejte si celotno nit razprave tukaj.