Taky jsem pochopil, že se jedná o kompletní kompilaci, tak jsem chtěl vidět to železo, které to zvládne, říkal jsem si zda tam mají pole grafických karet.
Na Gentoo s tmpfs 6GB pro gcc, na 8 FX jadrech od AMD s ccache + 4 jadra Phenom v praci s pomocí distcc přes Internet, dám poslední LibreOffice za hodinu, skoro přesně.
Tak 17sec...
a ono tohle :-/
vzheledm k tomu, že jsem loni četl článek, jak nějaký rusák si hraje stím, že uplně celé Gentoo nechal běhat ve výpočetních jadrech grafické karty, které jiní používají na lámání šifer, tak si to právě představit dovedu...
A proč by to němělo být to pravé ořechové, vždyť platforma x86 je dávno překonaná, na to kolik má tranzistorů, tak moc výkoná není.
Jen ty si predstavujes to jadro GK prave jako tu tvoji prekonanou x86 platformu. GK jsou vykonne v nekterych aplikacich (a je to docela uzka skupina) a rekl bych ze kompilace mezi ne nutne patrit nemusi. Ostatne proc se uz GK nevyuzivaji v kazde firme zabyvajici se vyvojem sw?
To je dost naivní názor. GPU provádí nad pamětí spoustu poměrně triviálních operací, které nejsou závislé na pořadí. Díky vysokému počtu výpočetních jednotek je to fakt rychlé.
CPU ovšem pracuje úplně jinak. Provádí daleko složitější operace, a podstatou jeho práce je větvení podle podmínek. Jde o operace, které nelze pořádně paralelizovat.
Jinými slovy GPU jsou vhodné na primitivní operace nad spoustou dat, a CPU jsou vhodné pro většinu ostatních algoritmů.
Samozřejmě je možné OS poskládat tak, aby konkrétní funkce běžely na dedikovaném HW. Část networkingu může běžet na síťové kartě, část grafiky na grafické kartě. Lze na to použít ten samý kód, který jede na CPU. Příkladem může být Barrelfish OS od MS Research. Nicméně do mainstreamových OS se to asi dostane až později.
Co třeba OpenCL? To by vyřešilo zmíněné problémy s jinou architekturou?
Problém je ale v tom, že GPU je určena pro něco úplně jiného než CPU. Tatáž instrukce se typicky provádí v několika threadech současně. Pokud by ty thready ale měly dělat každý něco jiného, musely by na sebe čekat.
Výkon jednoho vlákna je na GPU typicky mnohem menší než na CPU. Pokud ale všechna vlákna dělají zhruba totéž (což je u kompilátoru asi prakticky problém), GPU dokáže díky různým technikám spustit efektivně kolem 1M vláken "současně", pokud se nemýlím.