Proč stále používáme CPU Namísto GPU?
Stále více se používají GPU pro negrafické úkoly, jako jsou výpočty rizik, výpočty dynamiky tekutin a seizmická analýza. Co nás má zabránit v přijímání zařízení poháněných GPU?
Dnešní zasedání Otázky a odpovědi se k nám přichází s laskavým svolením SuperUser - subdivize Stack Exchange, seskupení webových stránek Q & A.
Otázka
Čtenář SuperUser Ell udržuje technologické novinky a je zvědavý, proč nepoužíváme více systémů založených na GPU:
Zdá se mi, že v dnešní době jsou na GPU prováděny spousty výpočtů. Je zřejmé, že grafika je tam provedena, ale pomocí CUDA a podobně, AI, algoritmy hašování (think Bitcoins) a další jsou také prováděny na GPU. Proč se nemůžeme zbavit CPU a používat GPU samostatně? Co dělá GPU mnohem rychleji než procesor?
Proč vlastně? Co dělá procesor jedinečný?
Odpověď
Příspěvek SuperUser DragonLord nabízí dobře podporovaný přehled o rozdílech mezi procesory GPU a procesory:
TL; DR odpověď: GPU mají mnohem více procesorových jader než procesory, ale protože každé GPU jádro běží podstatně pomaleji než jádro procesoru a nemají funkce potřebné pro moderní operační systémy, nejsou vhodné pro provádění většiny zpracování v každodenních počítačích. Jsou nejvhodnější pro výpočetně intenzivní operace, jako je zpracování videa a simulace fyziky.
Podrobná odpověď: GPGPU je stále relativně novou koncepcí. GPU byly zpočátku použity pouze pro grafiku; protože technologie pokročila, velký počet jader v GPU ve vztahu k procesorům byl využit vývojem výpočetních schopností pro GPU, takže mohou zpracovávat mnoho paralelních datových proudů současně bez ohledu na to, jaké údaje mohou být. Zatímco GPU mohou mít stovky nebo dokonce tisíce proudových procesorů, každý z nich běží pomaleji než jádro CPU a má méně funkcí (i když jsou dokončené a mohou být naprogramovány tak, aby spustili libovolný program, který CPU může spustit). Funkce, které chybí z GPU, zahrnují přerušení a virtuální paměť, které jsou nutné pro implementaci moderního operačního systému.
Jinými slovy, procesory a GPU mají výrazně odlišné architektury, které je lépe přizpůsobují různým úkolům. GPU může zpracovávat velké objemy dat v mnoha streamech, provádí na nich relativně jednoduché operace, ale není vhodná pro těžké nebo složité zpracování na jednom nebo několika tocích dat. Procesor je mnohem rychlejší na základě jednoho jádra (podle instrukcí za sekundu) a může složitější operace na jednom nebo několika tocích dat snadněji, ale nemůže efektivně zpracovávat mnoho proudů současně.
Výsledkem je, že jednotky GPU nejsou vhodné pro práci s úlohami, které významně nevyužívají nebo nemohou být paralelizovány, včetně mnoha běžných spotřebitelských aplikací, jako jsou textové procesory. Navíc GPU používají zcela odlišnou architekturu; jeden by musel naprogramovat aplikaci specifickou pro GPU, aby fungovala, a pro programování GPU jsou zapotřebí výrazně odlišné techniky. Tyto různé techniky zahrnují nové programovací jazyky, modifikace stávajících jazyků a nové programovací paradigmy, které jsou lépe vhodné pro vyjádření výpočtu jako paralelní operace, kterou mají provádět mnohé proudové procesory. Další informace o technikách potřebných pro programování GPU naleznete v článcích Wikipedia o zpracování dat a paralelních výpočtech.
Moderní GPU jsou schopny provádět vektorové operace a plovoucí aritmetiku s nejnovějšími kartami schopnými manipulovat s čísly s dvojitou přesností s plovoucí čárou. Rámečky, jako jsou programy CUDA a OpenCL, umožňují zápis do GPU a povaha GPU je nejvhodnější pro vysoce paralelizovatelné operace, jako je například vědecký výpočet, kde řada specializovaných výpočetních karet GPU může být životaschopnou náhradou za malou výpočetní cluster jako v NVIDIA Tesla Personal Supercomputers. Spotřebitelé s moderními GPU, kteří mají zkušenosti s Folding @ home, je mohou využít k tomu, aby přispívali klienty GPU, kteří mohou provádět simulace skládání bílkovin při velmi vysokých rychlostech a přispět více práce k projektu (nejdříve si přečtěte nejčastější dotazy, zejména ty, které se týkají GPU). GPU mohou také umožnit lepší fyzikální simulaci ve videohrách pomocí PhysX, urychlit kódování a dekódování videa a provádět další výpočetně náročné úkoly. Tyto typy úkolů jsou pro GPU nejvhodnější pro výkon.
AMD je průkopníkem procesoru nazvaného Accelerated Processing Unit (APU), který kombinuje běžné procesorové jádro x86 s GPU. To by umožnilo, aby součásti CPU a GPU spolupracovaly a zlepšily výkonnost systémů s omezeným prostorem pro samostatné komponenty. Vzhledem k tomu, že technologie pokračuje v postupu, uvidíme rostoucí stupeň konvergence těchto oddělených částí. Nicméně mnoho úkolů prováděných operačními systémy a aplikacemi PC je stále vhodnější pro CPU a je zapotřebí hodně práce pro urychlení programu pomocí GPU. Vzhledem k tomu, že tolik existujících softwarů používá architekturu x86 a protože GPU vyžadují různé programovací techniky a chybí několik důležitých funkcí potřebných pro operační systémy, je všeobecný přechod z CPU na GPU pro každodenní výpočetní techniku extrémně obtížný.
Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.