If-Koubou

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

Zašto još koristimo procesore umjesto GPU-ova? (Kako da)

Sve više GPU-ovi se koriste za ne-grafičke zadatke poput računanja rizika, izračuna dinamike fluida i seizmičke analize. Što nas je zaustavilo u usvajanju GPU-driven uređaja?

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajedničkom pogonu Q & A web stranica.

Pitanje

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

Čini mi se da ovih dana mnogo se izračuna obavlja na GPU-u. Očigledno je da su grafički prikazani, ali pomoću CUDA i slično, AI, hashing algoritmi (mislim Bitcoins) i drugi se također obavljaju na GPU-u. Zašto se ne možemo riješiti procesora i koristiti sam GPU? Što GPU čini bržim od CPU-a?

Zašto doista? Što čini jedinstveni CPU?

Odgovor

SuperUser suradnik DragonLord nudi dobro podržani pregled razlika između GPU i procesora:

TL, DR odgovor: GPU-ovi imaju mnogo više procesorskih jezgri od procesora, ali zato što svaka jezgra GPU-a radi znatno sporije od CPU jezgre i nema značajke potrebne za suvremene operacijske sustave, one nisu prikladne za obavljanje većeg dijela obrade u svakodnevnom računalstvu. Oni su najprikladniji za računanje intenzivne operacije kao što su video obrada i fizike simulacije.

Detaljan odgovor:GPGPU je još uvijek relativno novi koncept. GPU-ovi su u početku korišteni samo za prikazivanje grafike; kao napredna tehnologija, veliki broj jezgri u GPU-ima u odnosu na CPU je iskorišten razvojem računalnih mogućnosti za GPU-ove tako da oni mogu obraditi mnoge paralelne tokove podataka istodobno, bez obzira na to koji podaci mogu biti. Dok GPU-ovi mogu imati stotine ili čak tisuće procesora strujanja, one se pokreću sporijima od CPU jezgre i imaju manje mogućnosti (čak i ako su u potpunosti i mogu se programirati za pokretanje bilo kojeg programa koji CPU može raditi). Značajke koje nedostaju iz GPU-ova uključuju prekide i virtualnu memoriju, potrebne za implementaciju suvremenog operativnog sustava.

Drugim riječima, procesori i GPU-ovi imaju značajno različite arhitekture koje ih čine prikladnijim za različite zadatke. GPU može nositi velike količine podataka u mnogim streamovima, obavljajući relativno jednostavne operacije na njima, ali nije prikladan za tešku ili složenu obradu na jednom ili nekoliko tokova podataka. CPU je mnogo brži po osnovnoj osnovi (u smislu instrukcija u sekundi) i može lakše izvesti složene operacije na jednom ili nekoliko tokova podataka, ali ne može istodobno učinkovito riješiti mnoge tokove.

Kao rezultat toga, GPU-ovi nisu prikladni za rješavanje zadataka koji nemaju značajnu korist od ili ne mogu biti paralelizirani, uključujući mnoge uobičajene aplikacije potrošača kao što su obrađivači teksta. Nadalje, GPU-ovi koriste temeljno drugačiju arhitekturu; trebao bi programirati aplikaciju posebno za GPU da bi radila, a bitno su različite tehnike potrebne za programiranje GPU-ova. Te različite tehnike uključuju nove programske jezike, modifikacije postojećih jezika i nove programske paradigme koje su bolje prilagođene izražavanju računanja kao paralelne operacije koju će izvesti mnogi procesori struje. Dodatne informacije o tehnikama potrebnim za programiranje GPU-ova potražite u člancima iz Wikipedije o obradi struje i paralelnom računalstvu.

Suvremeni GPU sposobni su obavljati vektorske operacije i aritmetiku s pomičnim točkama, s najnovijim karticama koje mogu manipulirati dvostrukim preciznim brojevima s pomičnim zarezom. Okviri kao što su CUDA i OpenCL omogućuju programe za GPU-ove, a priroda GPU-a čini ih najprikladnijom za visoko paralelizirane operacije, poput znanstvenog računanja, gdje niz specijaliziranih grafičkih kartica GPU može biti održiva zamjena za male računati klaster kao u NVIDIA Tesla osobnim superračunala. Potrošači s modernim GPU-ima koji imaju iskustva s Folding @ home mogu ih koristiti za doprinos GPU klijentima, koji mogu izvoditi simulacije proteznih proteza pri vrlo velikim brzinama i pridonijeti većem broju radova na projektu (svakako pročitajte često postavljana pitanja, posebno one vezane uz GPU). GPU-ovi također mogu omogućiti bolju simulaciju fizike u videoigrama pomoću PhysX-a, ubrzati video kodiranje i dekodiranje, te obavljati druge zadatke s računskim zahtjevima. To su ove vrste zadataka koje GPUs najviše odgovaraju za obavljanje.

AMD je pionirski procesor koji se naziva Ubrzana procesorska jedinica (APU) koja kombinira konvencionalne CPU jezgre x86 s GPU-ima. To bi moglo omogućiti CPU i GPU komponente da rade zajedno i poboljšati performanse na sustavima s ograničenim prostorom za zasebne komponente. Kako tehnologija i dalje napreduje, vidjet ćemo sve veći stupanj konvergencije tih jednodijelnih dijelova. Međutim, mnogi zadaci koje obavljaju operacijski sustavi i aplikacije za računala još su bolje prilagođeni procesorima, a potrebno je mnogo rada za ubrzavanje programa pomoću GPU-a. Budući da toliko postojećeg softvera koristi x86 arhitekturu, i zato što GPU-ovi zahtijevaju različite tehnike programiranja i nedostaju nekoliko važnih značajki potrebnih za operacijske sustave, opći prijelaz s CPU-a na GPU za svakodnevno računanje je iznimno teško.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.