Optimalizace, vyplatí se ?

Článek se snaží popsat cestu pro co největší efektivnost distribuovaných výpočtů. Někdy se dá jen zvolenou optimalizací, nebo systémem, získat/ ztratit opravdu hodně.

Úvod

Dnes se podíváme na problém každého, komu kredity nedají spát. Mé začátky s počítáním SETI byly jako u každého jiného z vás. Nainstalování BOINC Manageru, připojení k projektu SETI a chroustání jednotek. Teprve po nějaké době jsem zaslechl něco málo o optimalizacích a tak jsem brouzdal po internetu a nacházel spousty upravených aplikací BOINC manageru, BOINC jádra a samozřejmě i samotných aplikací SETI se slibem, že výpočet bude rychlejší. V té době žádné návody nebyly a tak jsem to nechal plavat. Postupem času se hodně změnilo, fórum CNT týmu je plné návodů a rad a tak je to snadné. V tomto článku se nebudeme zabývat jen optimalizacemi jako takovými, ale i vlivem overclockingu na 32/64-bitové aplikace.

Do redakce dorazila tato sestava:

  • Intel Core i-7 920 2,66GHz
  • základní deska Asus Rampage II Extreme
  • kit OCZ Platinum 6GB (3x2GB) DDR3 1866MHz PC15000 CL9-9-9-28
  • zdroj CHIEFTEC CFT-1200G-DF 1200W
  • grafická karta od společnosti Gigabite GTX260 N26OC-896I
  • HDD SAMSUNG SpinPoint F1 1000GB NCQ 32MB Cache 7200ot/min
  • a chladič NOCTUA NH-U12P Special Edition

Našemu štědrému sponzorovi děkujeme za zapůjčení. My už se nemůžeme dočkat, až se této sestavě podíváme na zoubek.

Seznam testů pro CPU

  • Seti: Testuje se aplikace Seti Enhanced 6.03 32-bit/64-bit a optimalizace SSE3, SSE4.
  • Milkyway: Testuje se vliv 32-bit/64-bitové aplikace a vliv instrukčních sad SSE/SSE2/SSE3.
  • Enigma: Testuje se, zda se u optimalizované aplikace projeví nárůst výkonu.
  • Primegrid: Test 32-bit/64-bit aplikace a vliv OC na podprojektu PSP/SoB (Sieve).
  • Collatz: Testuje se 32-bit/64-bit aplikace.

Úskalí s vytvářením testovacích balíčků

Ze začátku to vše vzniklo jen jako nápad - vytvořit článek o optimalizacích a vlivu ladění výkonu pro overclockery a kredit-huntery. Já splňuji oba požadavky a tak jsem se do tohoto problému pustil. Sáhl jsem po instalačním balíčku Boinc Portable a doufal jsem, že to bude to pravé ořechové. Bohužel si stále odněkud bere informace o vzhledu a zobrazení okna a moje instalace BOINCu se tím rozhodila. Nedaří se informace o okně uložit (vyřeší to snad odinstalace a opětovná instalace). Dále vznikl problém s tím, že jsem nemohl dostat požadovaný počet jednotek do klienta. Někdy mi přišla pouze jedna jednotka a jindy mi všechny jednotky zmizely se změnou aplikace. Tyto problémy nakonec vyřešil zásah do souboru client_state.xml a to mi zajistilo úspěch u projektu Collatz a PrimeGrid. U obou projektů se podařilo dostat do klienta o sedm jednotek více. Nakonec se mi povedla do klienta menším znásilněním vložit i kompletní změna aplikace z původní 32-bitové na 64-bitovou. Když to tak půjde dál, budu snad moci do jednoho balíčku vložit libovolné jednotky různých projektů.

Zde jsou k nahlédnutí sestavené testovací balíčky, dalo práci je dát dohromady.

Měření výkonu aplikací a metodika měření

S funkčními balíčky už to byla rutina - spustit balíček a jen čekat na výsledky. Bohužel u projektu Collatz jsem zjistil, že by výpočet trval 6 - 7 hodin, stejně jako u projektu Milkyway a to už bylo na mě moc. Na pár dní si mohu dovolit ztrátu RAC (o pár kreditů míň ještě nikoho nezabilo), ale nesmí se to přehánět. Problém jsem vyřešil zásahem do jednotek, které jsem zkrátil pro vlastní potřebu na polovinu. Metodika měření byla zvolena jednoduše, pozastavil jsem jednotky BOINCu, které mám na počítači a ten restartoval, aby mi nezůstaly jednotky v paměti. Nejdříve jsem měřil první sadu balíčků při overclocku, druhou sadu jsem měřil na základním taktu procesoru. Pokud to jen bylo možné, naměřil jsem výsledky na jeden zátah. Jediná komplikace bylo měření na projektu PrimeGrid, který jsem chtěl mít dopočítaný nejdříve z důvodu budoucího turnaje. Při samotném testování jsem se snažil vytěžovat prací počítač co nejméně, ale za to po celou dobu testování, takže k žádným odchylkám by nemělo dojít. Odchylku vzniklou vlivem vedlejšího zatížení jsem eliminoval také tak, že jsem výpočty nechal zpracovat 2x na základní frekvenci i po přetaktování. Žádná významná odchylka přitom nebyla naměřena.

Zde je log, že opravdu docházelo jen k minimu restartů a změn v biosu.

Tabulka s výsledky

Nebudu vás dlouho napínat a podělím se o výsledky. Doufám, že vás překvapily stejně jako mě. Já osobně po tomto testu změním optimalizace jak pro projekt SETI@home, tak i pro projekt Milkyway. Jen bych chtěl zopakovat co jsem uvedl na fóru a to, že na aplikaci PSP/SoB (Sieve) je lepší počítat s agresivním časováním pamětí a nižší frekvencí. Potvrdil to i test, který dříve prezentoval forest u výsledků CNT balíčku.

Pro zobrazení kompletní tabulky, klikněte na obrázek.

Pro zobrazení tabulky v excelu, kliknte zde =>>

Kde stáhnout optimalizace pro můj vybraný projekt ?

Pokud vás výsledky tabulky přesvědčily a chtěli by jste vyměnit originální aplikaci za některou z uvedených v tabulce, neexistuje nic jednoduššího, než na stránkách CNT v sekci projekty projekty.czechnationalteam.cz/ nalézt vámi požadovaný projekt, kde velmi rychle zjistíte jestli existuje optimalizace. Odkazy jsou pravidelně aktualizovány a pokud narazíte na optimalizaci, která na stránkách chybí, určitě na ni upozorněte na fóru.

Jak nainstalovat optimalizaci ?

Návod je jednoduchý a pokud nic neuspěcháte, tak se vše povede beze ztráty rozpočítaných jednotek. Při spuštění si BOINC sáhne do každého zapojeného projektu a hledá soubor app_info.xml. Ten se nachází v adresáři projektu, který je umístěn ve složce s ostatními daty klienta BOINC Manager. U starších verzí systému Windows jej naleznete většinou v umístění "Users\All Users\Boinc" a pokud používáte Windows 7, tak "ProgramData\Boinc". Složka obsahuje spousty souborů a dalších složek, ale nás zajímá jediná s názvem projects. V této složce najdete všechny projekty, které máte připojeny. Optimalizace mají jedinou nevýhodu, v případě vydání nové aplikace se může stát, že vám projekt nepošle žádné jednotky ke zpracování a ve výpisu zpráv můžete najít text, že pro vámi používanou aplikaci projekt nemá práci. Pokud se tak stane, je nejlepší řešení buď smazat optimalizaci a nebo restartovat projekt, který si stáhne znovu originální aplikaci.

Pět jednoduchých kroků, které musíte dodržet.

Zde je náhled na projekt Milkyway a nakopírovanou optimalizaci se kterou chceme projekt počítat.

 

  1. Dopočítat jednotky na daném projektu. Rozpočítané jednotky by skončily chybou při změně aplikace. Pokud nahrazujete starší verzi novější, mohly by vám zmizet stažené jednotky. Pokud si nejste jistí, je nejlepším řešením nahradit aplikaci jen pokud na daném projektu nemáte žádné stažené a rozpočítané jednotky.
  2. Vypnout BOINC (jak manager, tak core). Pokud máte při počítání vždy spuštěný BOINC Manager, stačí přímo v něm zadat kompletní vypnutí jak klienta, tak i samotných výpočtů. Pokud máte nainstalovány výpočty jako službu a klienta pouštíte jen pro obsluhu, vejděte do adresáře programu BOINC Manager a zadejte příkaz „boinccmd –quit“. V každém případě si potom ve správci úloh zkontrolujte, zda byly výpočty skutečně ukončeny – využití CPU je na nula %.
  3. Vybrat si správnou aplikaci (optimalizaci) do vámi zvoleného projektu. Pro některé projekty se může objevit větší výběr aplikací s různými instrukčními sadami. Mnozí z nás jistě nemáme přehled o podporovaných instrukčních sadách, které obsahuje procesor, pro který chceme najít nejlepší volbu optimalizace. Proto zde uvedu jednoduchý program, který nám dokáže vypsat důležité informace nejen o instrukčních sadách, které procesor podporuje, ale i nastavení taktu procesoru a pamětí. Program CPU-z se dá stáhnout zde www.cpuid.com
     

     

         

    CPU-z na počítači s procesorem i-7 920

         

    CPU-z na počítači s procesorem C2D T7200

    Jak vidíte, zde nejsme limitováni výběrem.

         

    Bohužel jsme omezeni na výběr a při špatně zvolené aplikaci nespočítáme nic. Proto prosím pečlivě vybírejte.

  4. Nakopírovat exe soubor (nová aplikace) spolu se souborem app_info.xml do adresáře projektu (nemusíte mazat originální aplikaci, automaticky se smaže s dalším spuštěním BOINCu)
  5. Spustit BOINC , ten si z adresáře načte soubor app_info.xml a stáhne si nové jednotky, nebo bude pokračovat s těmi nerozpočítanými, pokud souhlasí verze uvedená v app_info.xml a původní aplikací.

Závěr

Použití optimalizace pro nejvyšší dostupnou instrukční sadu neznamená vždy dosažení nejvyššího výkonu. Výsledky na projektech SETI@home a Milkyway hovoří za vše. Dále použití 64-bitové aplikace výrazně urychluje výpočet u většiny testovaných projektů, oproti výpočtům s 32-bitovou aplikací. Projekty SETI@home a Milkyway jsou ale výjimkou potvrzující pravidlo. Doporučení autora zní - vyplatí se používat 64-bitový systém. Argumenty typu "Já nepoužiji nikdy více než 4GB paměti." jsou už snad minulost a tento test potvrdil, že rozdíl není jen ve velikosti pamětí se kterými systém může pracovat navíc. Já osobně doufám, že brzy přibude více 64-bit aplikací pro systém Windows a nebude to jen výhoda Linuxu.

A jako vždy, perlička na konec:

Tak doslovně mě zase s 64-bitovým systémem neberte :-)

Autor:
Jakub Sedláček (gigadisk) - Czech National Team

Korektura:
Dušan Vykouřil (forest) - Czech National Team
Jaroslav Mikšovský (JardaM) - Czech National Team
 

Svůj komentář na tento článek, co by mělo být opraveno, či doplněno můžete napsat do této sekce na našem týmovém fóru. Téma s komentářem k tomuto konkrétnímu článku, by mělo nést stejný název, jako článek na webu.


Nahoru