Pochybuju, že těch 17 sekund platí pro situaci, kdy stáhnu nové zdrojáky a začnu buildit. IMHO jde jen o případ, kdy vyvojář má svou práci už několikrát zbuilděnou, udělá změnu v kódu a spustí "make" na celý projekt.
tmpfs používám na Gentoo, ale nikde jsem si nevšimnul takhle rychlé kompilace u takto velkých projektů.
Chtel sem napsat neco podobneho. 17 vterin? Nemuzu tomu uverit. Treba GCC potrebuje tmpfs ~2.5GB a kompiluju to nakejch 20min (taky Gentoo). MySQL potrebuje ~500MB, a pokud vse je na tmpfs, kompilace bezi ~7min. Zeby pro kompletni kompilaci LibreOffice stacilo jenom 17 vterin (pritom si zada o ~6GB na tmpfs!), tak o tom tedy pochybuju...
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.
Tedy jednou v začátcích, jsem OF kompiloval cca 12 hod., ale jinak běžně cca 8 hod, a to s pomocí serveru s jinou architekturou, kdy mohu klidně pracovat.
A co byste řekli kompilaci za 7 minut?
http://forums.gentoo.org/viewtopic-t-838198-start-0.html
Už se na to těším až to budu zkoušet.