Ahoj redakce.
Díky za zajímavý článek. Rád bych, ale znal názor autorů na dosažitelnost teoretického výkonu dané architektury. Nebylo by špatné přidat rovněž kritické zhodnocení a Váš názor na věc :-) Takto je to jak kopie white paperu nebo části přednášky z SC12 či GTC.
To že Nvidia píše 3.52TFLOPS, je sice pěkné ale tento výkon je dosažitelný pouze s využitím totálně uměle vytvořeného instrukčního mixu (nebo Linpacku), který ideálně počítá 1000 mocninu prvků vektoru stylem x = x *x*x*x*x....*x
Problém GPU jako výpočetní architektury je celkem šílený poměr FLOP/B. Pokud se totiž zamyslíme nad propustností pamětí cca 250GB/s a řekněme single precision, pak paměťově limitovaná aplikace (což je skoro všechno co streamuje data stylem c[i] = a[i] + b[i]) dosáhne výkonu 62 GFLOPs. Pro plný teoretický výkon musíme nad každým číslem v single precision provést 56 operací. Což je pro spoustu HPC algoritmů dost zásadní problém!
Problém totiž je, že výpočetní jednotky musíme něčím krmit. A tady si myslím, že má NVIDIA co dělat. Naskládání více výpočetních jednotek vedle sebe je jednoduché a poměrně levné řešení, ale přidání registrů a cache už je mnohem větší problém, protože větší cache = větší latence... Zde bych v prvé řadě opravil chybku autorů. Jestliže mám 65536 registrů pro float a max 2048 vláken, tak mi pro jedno vlákno zůstane pouze 32 registrů (ne 255), a to není moc. V double precision je to ještě hroší, tam zůstane pouze 16! Rovněž sílená paměť téměř nenarostla, což vidím jako největší problém architektury. 48KB při takovém počtu vláken a CUDA jader je vlastně nic. L2 moc nepomůže protože je jen pro pře-uspořádávání dat a časové nebo prostorové lokalitě dat nepomůže. Z pohledu CUDA programátor na Fermi, mám tedy více výkonu, ale méně paměti. A to v porovnání s gigantický cahcei na CPU moc bolí. Další zásadní problém je málo grafické paměti. Běžný uzel superpočítače má dnes 4GB na CPU jádro, zde je to 6GB na GPU. Spousta programátorů by ocenila jádro Fermi a 32GB DRAM místo Keplera se 6GB. (ono totiž v rámci superpočítače je rovněž nutné data přeposílat mezi uzly což je zde zásadní problém pro efektivitu - takže chcete mít lokálně o největší balík dat).
Bude tedy zajímavé sledovat vědecké články o aplikacích pro Titan. Doufám, že někdo ukáže prakticky dosažitelnou efektivitu výpočtu (teorie vs. praxe). Dnes v běžných GPGPU je to cca 10% (pokud se provádí srovnaní správně). NVIDIA totiž velice ale velice ráda přehání. Když začalo GPGPU a CUDA se dostala ven, celý internet a i firemní prezentace NVIDIA hlásaly zrychlení 1000x atd. Poté co to už pár lidí psychicky neuneslo (včetně mě) a pár borců z Intelu sepsalo hustý článek o tom, jaká kravina je srovnávat GPU proti 1 vláknu CPU bez SSE, bez optimalizací atd, a ukázalo svoje efektivní implementace na 6 jádrovém Xeonu, NVIDIA každého půl roku snižuje dosažitelný výkon 2x. Po 5 letech už dnes tvrdí něco kolem 10ti :-)
BTW: Surový výkon Sandy Bridge-E bez AVX je někde kolem 80-100GFLOPS s AVX by to bylo 8x více (ale to intel nikde neukazuje, protože ví, že je to naprosto nedosažitelné).
Díky za zajímavý článek. Rád bych, ale znal názor autorů na dosažitelnost teoretického výkonu dané architektury. Nebylo by špatné přidat rovněž kritické zhodnocení a Váš názor na věc :-) Takto je to jak kopie white paperu nebo části přednášky z SC12 či GTC.
To že Nvidia píše 3.52TFLOPS, je sice pěkné ale tento výkon je dosažitelný pouze s využitím totálně uměle vytvořeného instrukčního mixu (nebo Linpacku), který ideálně počítá 1000 mocninu prvků vektoru stylem x = x *x*x*x*x....*x
Problém GPU jako výpočetní architektury je celkem šílený poměr FLOP/B. Pokud se totiž zamyslíme nad propustností pamětí cca 250GB/s a řekněme single precision, pak paměťově limitovaná aplikace (což je skoro všechno co streamuje data stylem c[i] = a[i] + b[i]) dosáhne výkonu 62 GFLOPs. Pro plný teoretický výkon musíme nad každým číslem v single precision provést 56 operací. Což je pro spoustu HPC algoritmů dost zásadní problém!
Problém totiž je, že výpočetní jednotky musíme něčím krmit. A tady si myslím, že má NVIDIA co dělat. Naskládání více výpočetních jednotek vedle sebe je jednoduché a poměrně levné řešení, ale přidání registrů a cache už je mnohem větší problém, protože větší cache = větší latence... Zde bych v prvé řadě opravil chybku autorů. Jestliže mám 65536 registrů pro float a max 2048 vláken, tak mi pro jedno vlákno zůstane pouze 32 registrů (ne 255), a to není moc. V double precision je to ještě hroší, tam zůstane pouze 16! Rovněž sílená paměť téměř nenarostla, což vidím jako největší problém architektury. 48KB při takovém počtu vláken a CUDA jader je vlastně nic. L2 moc nepomůže protože je jen pro pře-uspořádávání dat a časové nebo prostorové lokalitě dat nepomůže. Z pohledu CUDA programátor na Fermi, mám tedy více výkonu, ale méně paměti. A to v porovnání s gigantický cahcei na CPU moc bolí. Další zásadní problém je málo grafické paměti. Běžný uzel superpočítače má dnes 4GB na CPU jádro, zde je to 6GB na GPU. Spousta programátorů by ocenila jádro Fermi a 32GB DRAM místo Keplera se 6GB. (ono totiž v rámci superpočítače je rovněž nutné data přeposílat mezi uzly což je zde zásadní problém pro efektivitu - takže chcete mít lokálně o největší balík dat).
Bude tedy zajímavé sledovat vědecké články o aplikacích pro Titan. Doufám, že někdo ukáže prakticky dosažitelnou efektivitu výpočtu (teorie vs. praxe). Dnes v běžných GPGPU je to cca 10% (pokud se provádí srovnaní správně). NVIDIA totiž velice ale velice ráda přehání. Když začalo GPGPU a CUDA se dostala ven, celý internet a i firemní prezentace NVIDIA hlásaly zrychlení 1000x atd. Poté co to už pár lidí psychicky neuneslo (včetně mě) a pár borců z Intelu sepsalo hustý článek o tom, jaká kravina je srovnávat GPU proti 1 vláknu CPU bez SSE, bez optimalizací atd, a ukázalo svoje efektivní implementace na 6 jádrovém Xeonu, NVIDIA každého půl roku snižuje dosažitelný výkon 2x. Po 5 letech už dnes tvrdí něco kolem 10ti :-)
BTW: Surový výkon Sandy Bridge-E bez AVX je někde kolem 80-100GFLOPS s AVX by to bylo 8x více (ale to intel nikde neukazuje, protože ví, že je to naprosto nedosažitelné).
Odpovědět3 0