Početna » kako da » Zašto još uvijek koristimo procesore umjesto GPU-ova?

    Zašto još uvijek koristimo procesore umjesto GPU-ova?

    GPU-ovi se sve više koriste za grafičke zadatke kao što su izračunavanje rizika, proračun dinamike fluida i seizmička analiza. Što će nas spriječiti u usvajanju GPU-pogonskih uređaja?

    Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupne grupacije web-lokacija s pitanjima i odgovorima..

    Pitanje

    Čitač SuperUser Ell prati tehnološke vijesti i znatiželjan je zašto ne koristimo više sustava temeljenih na GPU-u:

    Čini mi se da se ovih dana na GPU-u radi mnogo izračuna. Očigledno je da se tu radi grafika, ali koristeći CUDA i slično, AI, algoritmi za raspršivanje (mislim Bitcoins) i drugi također se rade na GPU-u. Zašto se jednostavno ne možemo riješiti CPU-a i koristiti vlastiti GPU? Što čini GPU toliko bržim od CPU-a?

    Zašto doista? Ono što čini CPU jedinstvenim?

    Odgovor

    Suradnik SuperUser-a DragonLord nudi dobro podržan pregled razlika između GPU-ova i CPU-ova:

    TL; DR odgovor: GPU-ovi imaju daleko više procesorskih jezgri od CPU-a, ali budući da svaka GPU jezgra radi znatno sporije od CPU jezgre i nemaju značajke potrebne za moderne operacijske sustave, one nisu prikladne za obavljanje većine obrade u svakodnevnom računalstvu. Oni su najprikladniji za intenzivne operacije kao što su obrada videa i simulacije fizike.

    Detaljan odgovor: GPGPU je još uvijek relativno novi koncept. GPU-ovi su se početno koristili samo za prikazivanje grafike; kako je tehnologija napredovala, veliki broj jezgri u GPU-ima u odnosu na CPU-ove iskorišten je razvojem računalnih mogućnosti za GPU-ove, tako da mogu istovremeno obraditi mnoge paralelne tokove podataka, bez obzira na to koji su ti podaci. Dok GPU-ovi mogu imati stotine ili čak tisuće stream procesora, svaki od njih radi sporije od CPU jezgre i ima manje značajki (čak i ako su kompletne i mogu se programirati za pokretanje bilo kojeg programa koji CPU može pokrenuti). Značajke koje nedostaju u GPU-ovima uključuju prekide i virtualnu memoriju koja su potrebna za implementaciju modernog operativnog sustava.

    Drugim riječima, CPU-ovi i GPU-ovi imaju značajno različite arhitekture koje ih bolje prilagođavaju različitim zadacima. GPU može obraditi velike količine podataka u mnogim strujama, izvodeći relativno jednostavne operacije na njima, ali je loše prilagođen za tešku ili složenu obradu na jednom ili nekoliko tokova podataka. CPU je mnogo brži na bazi jezgre (u smislu naredbi u sekundi) i može lakše izvesti složene operacije na jednom ili nekoliko tokova podataka, ali ne može istovremeno učinkovito upravljati mnogim tokovima.

    Kao rezultat toga, GPU-ovi nisu prikladni za rukovanje zadacima koji ne donose značajne koristi ili se ne mogu paralelizirati, uključujući mnoge uobičajene korisničke aplikacije kao što su procesori riječi. Nadalje, GPU-ovi koriste fundamentalno različitu arhitekturu; netko bi morao programirati aplikaciju posebno za GPU da bi mogao raditi, a za programiranje GPU-a potrebne su znatno različite tehnike. Te različite tehnike uključuju nove programske jezike, modifikacije postojećih jezika i nove paradigme programiranja koje su prikladnije za izražavanje računanja kao paralelne operacije koju obavljaju mnogi stream procesori. Za više informacija o tehnikama potrebnim za programiranje grafičkih procesora, pogledajte članke Wikipedije o obradi struje i paralelnom računalstvu.

    Moderni GPU-ovi sposobni su za obavljanje vektorskih operacija i aritmetike s pomičnim zarezom, s najnovijim karticama koje su sposobne manipulirati brojevima s pomičnim zarezom s dvostrukom preciznošću. Okviri poput CUDA-e i OpenCL-a omogućuju programima pisanje za GPU-ove, a priroda GPU-ova ih čini najprikladnijima za vrlo paralelizirajuće operacije, kao što je to u znanstvenom računalstvu, gdje niz specijaliziranih GPU kartica može biti održiva zamjena za male računski klaster kao u NVIDIA Tesla osobnim superračunalima. Potrošači s modernim GPU-ovima koji imaju iskustva s Folding @ homeom mogu ih upotrijebiti kako bi pridonijeli GPU klijentima, koji mogu izvoditi simulacije preklapanja proteina na vrlo visokim brzinama i pridonijeti većem radu projektu (prvo pročitajte često postavljana pitanja, posebno one vezane za GPU). GPU-ovi također mogu omogućiti bolju simulaciju fizike u videoigrama pomoću PhysX-a, ubrzati kodiranje i dekodiranje videa te obavljati druge računalno intenzivne zadatke. Upravo ove vrste zadataka koje GPU-ovi najviše odgovaraju za izvođenje.

    AMD je pionir u dizajnu procesora nazvanom ubrzana procesorska jedinica (APU) koja kombinira konvencionalne x86 procesorske jezgre s GPU-ovima. To bi moglo omogućiti da CPU i GPU komponente rade zajedno i poboljšaju performanse na sustavima s ograničenim prostorom za odvojene komponente. Kako tehnologija nastavlja napredovati, vidjet ćemo sve veći stupanj konvergencije tih nekad odvojenih dijelova. Međutim, mnogi zadaci koje izvode operacijski sustavi i aplikacije na računalu još su bolje prilagođeni procesorima, a potrebno je mnogo rada kako bi se program ubrzao pomoću GPU-a. Budući da toliko postojećih softvera koristi arhitekturu x86, a zbog toga što GPU-ovi zahtijevaju različite tehnike programiranja i nedostaju im neke važne značajke potrebne za operacijske sustave, opći prijelaz s CPU-a na GPU za svakodnevno računanje je izuzetno težak.


    Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.