Prečo stále používame CPU Namiesto GPU?
Stále viac sa používajú GPU pre negrafické úlohy, ako sú výpočty rizík, výpočty dynamiky tekutín a seizmická analýza. Čo zabráni tomu, aby sme prijali zariadenia poháňané GPU?
Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.
Otázka
Čítačka SuperUser Ell sa drží technických správ a je zvedavý, prečo nepoužívame viac systémov založených na GPU:
Zdá sa mi, že v týchto dňoch sa veľa výpočtov vykonáva na GPU. Je zrejmé, že grafika sa tam robí, ale pomocou CUDA a podobne, AI, algoritmy hašovania (think Bitcoins) a ďalšie sú tiež vykonané na GPU. Prečo sa nemôžeme jednoducho zbaviť CPU a použiť GPU samostatne? Čo robí GPU oveľa rýchlejšie ako procesor?
Prečo skutočne? Čo robí CPU jedinečným?
Odpoveď
Spravodajský prispievateľ DragonLord ponúka dobre zdokumentovaný rozdiel medzi GPU a procesormi:
TL; DR odpoveď: GPU majú oveľa viac procesorových jadier ako procesory, ale pretože každé GPU jadro beží podstatne pomalšie ako jadro procesora a nemá funkcie potrebné pre moderné operačné systémy, nie sú vhodné na vykonávanie väčšiny spracovania v každodennom výpočtovej technike. Sú najvhodnejšie pre operácie náročné na výpočet, ako je napríklad spracovanie videa a fyzikálne simulácie.
Podrobná odpoveď: GPGPU je stále relatívne nová koncepcia. GPU boli pôvodne použité na vykresľovanie len grafiky; keďže technológia pokročila, veľký počet jadier v GPU v porovnaní s CPU bol využitý vývojom výpočtových schopností pre GPU, aby mohli spracovávať mnohé paralelné toky dát súčasne bez ohľadu na to, aké sú tieto dáta. Zatiaľ čo GPU môžu mať stovky alebo dokonca tisíce prúdových procesorov, každý z nich prebieha pomalšie ako jadro CPU a má menej funkcií (aj keď sú dokončené a môžu byť naprogramované tak, aby spustili akýkoľvek program, ktorý CPU môže spustiť). Funkcie, ktoré chýbajú z GPU, zahŕňajú prerušenia a virtuálnu pamäť, ktoré sú potrebné na implementáciu moderného operačného systému.
Inými slovami, procesory a GPU majú výrazne odlišné architektúry, ktoré ich robia vhodnejšími pre rôzne úlohy. GPU dokáže spracovať veľké množstvo údajov v mnohých prúdoch a vykonávať na nich pomerne jednoduché operácie, ale nie je vhodná na ťažké alebo komplexné spracovanie na jednom alebo niekoľkých dátových tokoch. Procesor je oveľa rýchlejší na základe jadra (v zmysle pokynov za sekundu) a môže vykonávať zložité operácie na jednom alebo niekoľkých tokoch dát ľahšie, ale nemôže efektívne zvládnuť mnohé toky súčasne.
Výsledkom toho je, že GPU nie sú vhodné na spracovanie úloh, ktoré významne neprospievajú alebo nemôžu byť paralelizované, vrátane mnohých bežných spotrebiteľských aplikácií, ako sú napríklad textové procesory. GPU okrem toho používajú zásadne odlišnú architektúru. jeden by musel naprogramovať aplikáciu špecifickú pre GPU, aby fungovala, a na programovanie GPU sú potrebné výrazne odlišné techniky. Tieto rôzne techniky zahŕňajú nové programovacie jazyky, modifikácie existujúcich jazykov a nové paradigmy programovania, ktoré sú lepšie prispôsobené na vyjadrenie výpočtu ako paralelnej operácie, ktorú majú vykonať mnohé streamové procesory. Ďalšie informácie o technikách potrebných na naprogramovanie GPU nájdete v článkoch Wikipedia o spracovaní prúdov a paralelných výpočtoch.
Moderné GPU sú schopné vykonávať vektorové operácie a aritmetiku s pohyblivou rádovou čiarkou s najnovšími kartami schopnými manipulovať s číslicami s pohyblivou rádovou čiarkou s dvojitou presnosťou. Rámy ako CUDA a OpenCL umožňujú napísať programy pre GPU a povaha GPU ich najviac prispôsobuje vysoko paralelizovateľným operáciám, ako napríklad vo vedeckých výpočtoch, kde rad špeciálnych výpočtových kariet GPU môže byť životaschopnou náhradou za malú ako je to v NVIDIA Tesla Personal Supercomputers. Spotrebitelia s modernými GPU, ktorí majú skúsenosti s Folding @ home, ich môžu využiť na to, aby prispeli k klientom GPU, ktorí môžu vykonávať simulácie skladania bielkovín pri veľmi vysokých rýchlostiach a prispievajú k práci viac práce (najprv si prečítajte časté otázky, najmä tie, ktoré sa týkajú GPU). GPU môžu tiež umožniť lepšiu simuláciu fyziky vo videohrách pomocou PhysX, urýchliť kódovanie a dekódovanie videa a vykonávať ďalšie úlohy náročné na výpočet. Práve tieto typy úloh sú GPU najvhodnejšie na vykonávanie.
AMD je priekopníkom v procesore, nazvanom Accelerated Processing Unit (APU), ktorý kombinuje konvenčné x86 CPU jadrá s GPU. To by mohlo umožniť, aby súčasti CPU a GPU spolupracovali a zlepšili výkonnosť systémov s obmedzeným priestorom pre samostatné komponenty. Keďže technológia pokračuje v pokroku, uvidíme rastúcu mieru konvergencie týchto jednorazových častí. Mnohé úlohy vykonávané operačnými systémami a aplikáciami pre počítače sú však ešte lepšie vhodné pre procesory a je potrebná veľa práce na urýchlenie programu pomocou GPU. Keďže toľko existujúcich softvérov používa architektúru x86 a pretože GPU vyžadujú rôzne programovacie techniky a chýbajú niekoľko dôležitých funkcií potrebných pre operačné systémy, všeobecný prechod z CPU na GPU pre každodenné výpočty je veľmi ťažký.
Máte niečo doplniť vysvetlenie? Vyjadrite sa v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.