If-Koubou

Kāpēc mēs joprojām izmantojam CPU nevis GPU?

Kāpēc mēs joprojām izmantojam CPU nevis GPU? (Kā)

Arvien vairāk GPU tiek izmantoti tādiem grafiskiem uzdevumiem kā riska aprēķini, šķidruma dinamikas aprēķini un seismiskā analīze. Kas mūs apturēs no GPU vadītu ierīču pieņemšanas?

Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, Q & A tīmekļa vietņu kopienas diskusiju grupu.

Jautājums

SuperUser lasītājs Ell turpina sekot līdzi tehnoloģiju jaunumiem, un ir interesanti, kāpēc mēs neizmantojam vairāk uz GPU balstītu sistēmu:

Man šķiet, ka šodienas GPU veic daudz aprēķinu. Acīmredzot grafika tiek veikta tur, bet izmantojot CUDA un tamlīdzīgus, AI, maiņas algoritmi (domā Bitcoins) un citi tiek veikti arī GPU. Kāpēc mēs nevaram vienkārši atbrīvoties no CPU un izmantot pašu GPU? Kas padara GPU tik daudz ātrāk kā CPU?

Kāpēc patiešām? Kas padara CPU unikālu?

Atbilde

SuperUser ieguldītājs DragonLord piedāvā labi atbalstītu pārskatu par atšķirībām starp GPU un CPU:

TL; DR atbilde: Grafiskajiem procesoriem ir daudz procesoru serdeņu nekā CPU, taču, tā kā katrs GPU kodols darbojas ievērojami lēnāk nekā CPU kodols un tam nav mūsdienīgām operētājsistēmām nepieciešamās funkcijas, tās nav piemērotas, lai veiktu lielāko daļu apstrādes ikdienas skaitļošanas jomā. Tie ir vispiemērotākie intensīvām darbībām, piemēram, video apstrādei un fizikas simulācijām.

Sīkāka atbilde:GPGPU joprojām ir relatīvi jauna koncepcija. Sākotnēji GPU tika izmantoti tikai grafikas pārveidošanai; kā tehnoloģiju attīstībā tika izmantots daudzu serdeņu daudzums grafikatoros salīdzinājumā ar CPU, izstrādājot GPU skaitļošanas iespējas, lai tās vienlaikus varētu apstrādāt daudzas paralēlās datu plūsmas neatkarīgi no tā, kādus datus var iegūt. Lai gan GPU var būt simtiem vai pat tūkstošiem plūsmas procesoru, katrs no tiem darbojas lēnāk nekā CPU kodols un tiem ir mazāk iespēju (pat ja tie ir pabeigti un tos var ieprogrammēt, lai palaistu jebkuru programmu, kuru var darbināt CPU). GPU trūkst pazīmju, piemēram, pārtraukumi un virtuālā atmiņa, kas nepieciešamas, lai ieviestu modernu operētājsistēmu.

Citiem vārdiem sakot, CPU un GPU ir ievērojami atšķirīgas arhitektūras, kas padara tās labāk piemērotas dažādiem uzdevumiem. GPU var apstrādāt lielu daudzumu datu daudzās plūsmās, veicot salīdzinoši vienkāršas operācijas ar tām, bet tas ir nepiemērots smagai vai sarežģītai apstrādei vienā vai vairākās datu plūsmas. Centrālais procesors ir daudz ātrāks (pēc instrukcijām sekundē) un var vieglāk veikt sarežģītas operācijas ar vienu vai vairākām datu plūsmām, bet vienlaikus nevar efektīvi apstrādāt daudzas straumes.

Tā rezultātā grafikas ierīces nav piemērotas, lai apstrādātu uzdevumus, kas būtiski neizmanto vai nevar tikt paralēli, tostarp daudzas kopējas lietojumprogrammas, piemēram, vārdu procesori. Turklāt grafikas ierīces izmanto pamatā citu arhitektūru; vienam būtu jāprojektē programma īpaši grafiskajam procesoram, lai tā darbotos, un, lai programmētu GPU, ir nepieciešami ievērojami atšķirīgi paņēmieni. Šie dažādie paņēmieni ietver jaunas programmēšanas valodas, esošo valodu modifikācijas un jaunās programmēšanas paradigmas, kas ir labāk piemērotas skaitļošanas izteikšanai kā paralēla darbība, kas jāveic daudziem straumēšanas procesoriem. Lai iegūtu papildinformāciju par paņēmieniem, kas vajadzīgi, lai programmētu GPU, skatiet Wikipedia rakstus par plūsmas apstrādi un paralēlu skaitļošanu.

Mūsdienu GPU spēj veikt vektora darbības un peldošā komata aritmētiku ar jaunākajām kartēm, kas spēj manipulēt ar dubultās precizitātes peldošā komata skaitļiem. Grafiki, tādi kā CUDA un OpenCL ļauj programmām rakstīt GPU, un GPU raksturs padara tos vispiemērotākos ļoti paralelizējamos darījumos, piemēram, zinātniskos skaitļošanas procesos, kur virkne specializētu GPU aprēķinu karšu var būt dzīvotspējīgs aizstājējs mazai aprēķināt klasteri kā NVIDIA Tesla personālajos superdatoros. Patērētāji ar mūsdienu GPU, kuriem ir pieredze ar Folding @ home, var izmantot tos, lai piedalītos GPU klientiem, kuri var veikt olbaltumvielu locīšanas simulācijas ļoti lielā ātrumā un dot lielāku ieguldījumu projektam (vispirms pārliecinieties, ka vispirms lasāt FAQ, jo īpaši tos, kas saistīti ar GPU). GPU var arī uzlabot fizikas simulāciju video spēlēs, izmantojot PhysX, paātrināt video kodēšanu un dekodēšanu, kā arī veikt citus skaitļošanas intensīvos uzdevumus. Šie uzdevumu veidi ir tādi, ka GPU ir vispiemērotākie izpildei.

AMD ir vadošais procesoru projekts, ko sauc par paātrinātās apstrādes vienību (APU), kas apvieno parastos x86 procesoru kodolus ar GPU. Tas varētu ļaut CPU un GPU komponentiem strādāt kopā un uzlabot veiktspēju sistēmās ar ierobežotu vietu atsevišķām sastāvdaļām. Tā kā tehnoloģijas turpina attīstīties, mēs redzēsim pieaugošo šo vienreizējo atsevišķo daļu konverģenci. Tomēr daudzi uzdevumi, ko veic PC operētājsistēmas un lietojumprogrammas, joprojām ir labāk piemēroti CPU, un ir nepieciešams daudz darba, lai paātrinātu programmu, izmantojot GPU. Tā kā tik daudz esošā programmatūra izmanto x86 arhitektūru, un tāpēc, ka grafiskajām ierīcēm ir nepieciešamas atšķirīgas programmēšanas paņēmieni, un tām trūkst vairākas svarīgas operētājsistēmas nepieciešamās funkcijas, ir ļoti grūti pāriet no procesora uz grafisko procesoru ikdienas skaitļošanai.

Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.