SETI optimalizovany klient-desitky procent narustu vykonu I

Smetiště aneb propadliště dějin pro neaktuální příspěvky. Po pár dnech bude ručně smazáno, pokud nebudou hlasy pro zachovaní

Moderátoři: zdespi, Moderátoři

Zamčeno
Uživatelský avatar
'bosh
Pokročilý
Pokročilý
Příspěvky: 284
Registrován: úte zář 07, 2004 2:17 am
Bydliště: Ottawa

SETI optimalizovany klient-desitky procent narustu vykonu I

Příspěvek od 'bosh »

SETI Windows Optimised Clients and Instructions, and downloads here:

http://www.shadyshack.dyndns.org/boinc.html

and here:

http://home.arcor.de/jojo4ubin/seti/

Then post your times....
Uživatelský avatar
trux
Banánová odměna
Banánová odměna
Příspěvky: 874
Registrován: čtv kvě 12, 2005 2:16 am
Kontaktovat uživatele:

Příspěvek od trux »

Miiichal píše:Nicmene vzhledem k tomu, ze NIKDO nedokazal rict, v cem optimalizace skutecne spociva a tudiz nikdo NEVYVRATIL pochybnosti o spravnosti vypoctu jednotek, ...
Jaktoze nikdo nedokaze rict v cem je optimalizace?! Vzdyt je to uplne jasne a bylo to tu receno nekolikrat! To je proste optimalizace kompileru - programy jsou psany ve vyssim programovacim jazyku (C++ pro BOINC, S@H, Einstein,... Fortran pro CPDN, etc.). Kompilator pak prevadi tento vyssi jazyk na jazyk kteremu rozumi procesor - strojak. Problem je v tom, ze pri kompilaci vetsinou neni jasno na jakem procesoru program pojede, tak se kompiluje pro ten s nejmensimi moznostmi. Novejsi procesory ale vetsinou maji instrukce, ktere jsou ucinnejsi, rychlejsi, nebo nahrazuji cele bloky starych instrukci.

Navic, jednoduche i slozite funkce vyssich jazyku se daji prelozit do strojaku ruznym zpusobem, podle toho jaky je k dispozici procesor, ale taky podle toho zda je potreba kod rychly (ale mozna veliky), nebo radsi maly, kompaktni (ale mozna pomaly). Jako uplne primitivni priklad si vem vyraz A+2 - ten se da prelozit bud pomoci INC - dvakrat inkrement petky o jednu, neboli (A++)++; anebo jako soucet - instrukce ADD (soucet A + 2). Na prvni pohled se muze zdat nelogicke pricitat dvojku inkrementaci o jednu, ale ve skutecnosti to je rychlejsi, protoze inkrementace na rozdil od scitani nepotrebuje registry a trva jenom jeden strojovy krok.

To je jen velmi trivialni priklad. Se slozitejsimi funkcemi, nebo s posloupnosti prikazu se da delat milionkrat vic. Napriklad opakujici se kod se da nahradit jednim (pri optimalizaci na velikost), nebo naopak logicke smycky se rozepisi (zopakuji) - tim se sice kod sice podstatne zvetsi, ale i zrcyhli. Pak se daji pouzivat ruzne vymozenosti modernich procesoru, jako paralelni zpracovavani nekterych primitivnich instrukci, apod. Nema cenu moc zabihat do detailu, pokud nevis nic o strukture mikroprocesoru a o assembleru.

Kazdopadne ale takova optimalizace v zadnem pripade nezmeni to co programator napsal - pokud chces spocitat patou odmocnitu z devatenacti, optimalizovany kod bude porat pocita patou odmocninu z devatenacti. To same i pro jakekoli jine treba i nejslozitejsi funkce.

V tomto konkretni pripade, Maverick zkompiloval BOINC a S@H Intelovskym kompilatorem s optimalizacema pro nekolik procesoru (misto Microsoftskyho bez optimalizaci). Intelovsky kompiler ma navic vlastni knihovny funkci (ktere kazdy programator pouziva) a ty jsou taky vypiplane tak, aby fungovali s jejich procesory optimalne. Porad ale sinus zustane sinem, mocni mocninou, 1+1 je porad 2, atd.

Kdyz reknes dvema prgramatoru aby ti napsali nejakou funcki, tak se muzev vsadit, ze nebudou stejne, i kdy budou davat identicke vysledky. Budou mit ale ruznou delku i rychlost. Muzu ti ukazat priklady i velmi jednoduchyh programu, kde ty rozdily jsou az groteskni. Algoritmus a vysledky jsou ale v obou pripadech identicke. To same plati i pro programatory co pisi kompilery a knihovny - nekterejsou rychlejsi, jine pomalejsi, ale treba univerzalnejsi, nebo generuji mensi kod.

Mimo to, samozrejme, kdyby ten optimalizovany klient pocital neco jineho nez ten standartni, tak bys nedostaval zadne kredity, protoze kredit dostanes jenom pokud se sejdou 4 stejne vysledky. To uz ale vysvetlil Honza taky.

Kazdopadne, tohle je je zacatek optimalizace - jen pomoci kompilace. Pokud by si nekdo dal praci a mel cas hrat si se zdrojovym kodem v C-cku, nebo kriticka mista dokonce napsal primo v Assembleru, a pomeril to s pofilerem, tak jsem presvedcen, ze se da ten program urychlit ne o 30% ale mozna i na desetinu puvodni doby. Ten program taky neni psan pro hyperthreading modernich procesoru, a tak je tato vyhoda vyuzivana jen minimalne. Pokud se v programu rozlozi nektere sekvence prikazu vhodnym zpusobem, da se zajisti jejich paralelni vykonavani v jednotlivych "pipes" procesoru - a tech muze byt podle procesoru i nekolik (nejen dve). Ale uz v samotnem kodu kazdeho programatora je vzdy mnoho veci, ktere se daji vybrousit. Bohuzel to ale stoji hodne casu, a chce to hodne zkuseneho programatora (ktery toho casu naopak nema nikdy dost).

trux
Uživatelský avatar
trux
Banánová odměna
Banánová odměna
Příspěvky: 874
Registrován: čtv kvě 12, 2005 2:16 am
Kontaktovat uživatele:

Příspěvek od trux »

Lord_Scoorpion píše:No tak to sem spatne pochopil :oops: , já myslel že se to týká aji normální seti. Tak sorry se příště třeba polepším :D
No, Vladimir si vlastne thready spletl. Tento je predevsim o normalnim SETI, ne o beta (i kdyz tady mozna o bete taky nejaka zminka byla).

Navod je takovyto:

1) Zastav BOINC. Pokud pouzivas BONC jako sluzbu (coz je ze vseho nejlepsi), tak musis vlezt pre pravy klik na Muj Pocitac do Spravce, tam do Sluzeb, a paz u BOINC, sluzbu zastavit. Jinak BOINC a SETI taky muzes "killnout" pres Task Manager (je to cesky Spravce Ukolu?) (pres pravy klik na Status Bar dole na obrazovce)

2) optimalizovany boinc.exe zkopiruj do C:\program Files\BOINC\
3) optimalizovany setiathome_4.11_windows_intelx86.exe a app_info.xml nahraj do C:\Program Files\BOINC\projects\setiathome.berkeley.edu

Jde to i bez 2) (tzn. bez optimalizovaneho boinc.exe), ale pripravis se tak o dost kreditu. Pokud vim, tak porad jeste nejrychlejsi boinc.exe je k mani tady: http://boinc.truxoft.com

trux
Uživatelský avatar
Howard
Expert
Expert
Příspěvky: 356
Registrován: ned lis 28, 2004 9:25 pm
Bydliště: Plzeň
Kontaktovat uživatele:

Příspěvek od Howard »

Postup nasazeni optimalizovane verze je jednoduchy (thx 2 forest):

- mejte verzi boincu 4.45, at nejsou pripadne problemy
- dejte No more work/ Nestahovat dalsi jednotky pro SETI
- nechte jednotky v zasobe dopocitat a vsimnete si jejich casu a vysledku benchmarku
- stahnete si CPUZ a zjistete, jakou instrukcni sadu ma vas procesor, napr ja mam: MMX, SSE, SSE2
- NEW: na strance http://www.guntec.de/Crunch3r/setix86.html si stahnete setiathome pro vas procesor. Crunchovo verze jsou nejrychlejsi!
((OLD:
na strance http://www.marisan.nl/seti/index.htm/ stahnete ze sekce "Compiled with Intel C++ using IPP library" R7 verzi pro vas procesor (ty R7 jsou podle zkusenosti nejrychlejsi)))
- pak si tady sosnete boinc.exe pro vas procesor http://boinc.truxoft.com/
- vypnete boinc
- zazalohujte si adresar boincu !!!
- rozbalte soubory app_info.xml a setiathome_4.11_windows_intelx86.exe do adresare BOINC/Projekty/Seti/
- pokud v tom adresari mate setiathome_4.18_windows_intelx86.exe, nechte ho tam, pokud tam mate 4.09, smazte jej
- nahradte boinc.exe tim optimalizovanym v adresari boincu
- spustte boinc (version change 4.45 -> 4.68) a okamzite resetujte SETI projekt
- pote se vam stahnou workunity pro verzi 4.11, ackoliv boinc manager vam stale muze v zalozce 'work' psat 4.18, to je jedno, to poznate na rychlosti vypoctu
- no a nechte to pocitat a hodte sem vysledky (spolu s vasim procesorem)

Je to opravdu tak jednoduche a stoji to za tu trochu prace! Je skoda, ze tolik clenu tymu pocita s neoptimalizovanou verzi, mame tak zbytecne horsi vysledky.


Mé výsledky - doba výpočtu SETI:

- Pentium 4 celeron Northwood 2.4 GHz MMX, SSE, SSE2
původně 8.5 - 9 h
po optimalizaci 2 - 2.5h

- Pentium 3 E Coppermine 800 MHz MMX, SSE
původně 8.5 - 9 h
po optimalizaci 4.7 - 6 h

- Pentium 3 celeron 1.3@1.43 GHz MMX, SSE
původně 7 - 8 h
po optimalizaci 3 - 3.5 h

Všimněte si těch rozdílů - s normálním SETI počítá P4 celeron 2.4 GHz pomaleji, než můj domácí P3 celeron na 1.3 GHz a stejně jako P3 na 800 MHz !!!!!!!!!!!!!!!!!!!!!!

Není to nářez? :D Nebojte se toho, stojí to za to :!:
Naposledy upravil(a) Howard dne úte pro 27, 2005 11:06 pm, celkem upraveno 3 x.
vejpuste
BOINC Guru
BOINC Guru
Příspěvky: 954
Registrován: čtv čer 16, 2005 11:00 am
Bydliště: Praha Zbraslav
Kontaktovat uživatele:

Příspěvek od vejpuste »

® Radim ... ® píše:Mam par otazek :
1. Jak je to s tou optimalizaci clienta, to jako vydalo primo Berkeley :?:
2. doporucuje pouzivat tohoto clienta i Berkeley :?:
3. nema to vliv na citlivost analyzace jednotek nebo zkresleni vysledku vypoctu :?:
4. Jste si 100% jisti ze odpovedi na otazky 1-3 jsou skutecne pravdive :?:
A vo tom to je :idea:
Seti ma zverejnene zdrojaky. Optimalizovane verze delaji nadsenci mimo Berkeley, protoze oficialni kod je vzhledem k univerzalnosti pomaly.
To, ze optimalizovany program ma vysledky v toleranci se pozna podle toho, ze za vysledky dostanes kredit. Pokud by ve vysledku byla chyba, tak nebude Validovana a kredit nedostanes. Stejne by to bylo, pokud by program delal neco jineho nez ma.
Pokud mas vysledky validovane a s kreditem, tak neni proc se bat. Zatim jsem zaregistroval jedinou nevalidovanou jednotku z nekolika tisic, ale to mohlo byt cimkoliv.
Libor
Uživatelský avatar
trux
Banánová odměna
Banánová odměna
Příspěvky: 874
Registrován: čtv kvě 12, 2005 2:16 am
Kontaktovat uživatele:

Příspěvek od trux »

Honza píše:btw, jak se k aktivitam clenu delajici optimalizace stavi SETI team? Nemyslim tim, jestli nezarli, ale jeste nehadou nechteji nejake 'vychytavky' zaclenit do oficialniho klient nebo zda-li primo nevznika nejaka kooperace.
Popravde receno jsem se do komunikace s oficialnim tymem nezapojil. Forum nemaji, jen mail list, ale protoze uz i takhle dostavam denne az tisic emailu, tak se jakymkoli novym mail listum vyhybam. Mozna tomu ale neuniknu a nakonec se tam preci jen prihlasim. Jinak urcita komunikace tam probiha jak primo (pomoci tech vyvojaru, kteri prihlaseni jsou), nebo neprimo - na foru je spousta lidi, kteri sice nic nevyvijeji, ale zajima je to a jsou i na mailing listu, takze obcas tu komunikaci zprostredkovavaji.
Nektere z optimalizaci se uz dostaly do oficialniho zdrojoveho kodu. Jine, obzvlaste ty, ktere jsou prilis specificke na urcite platforme nebo jen s urcitym kompilatorem, tam asi hned tak nebudou - preci je jen je s tim dost prace a tech zmen je hodne a jsou caste, takze by to byl problem porad synchronizovat a vyhybat se ruznym problemum s tim spojenych.
Uživatelský avatar
trux
Banánová odměna
Banánová odměna
Příspěvky: 874
Registrován: čtv kvě 12, 2005 2:16 am
Kontaktovat uživatele:

Příspěvek od trux »

Tak nejnovejsi verze pro nekolik CPU platform jsou ted ke stahnuti na mem serveru.
Jedna se o verzi 4.13.hn126.tx004

Verze budu cislovat nasledujicim zpusobem:
  • 4 - S@H Major Version (puvodni hlavni verze oficialniho zdroje, z ktereho tato verze byla odvozena)
  • 13 - S@H Minor Version (puvodni podverze oficialniho zdroje)
  • hn126 - Naparstova interni verze jeho Linux optimalizace (se zmenami od Tetsujiho, Dorna a dalsich)
  • tx004 - moje interni verze
S Naparstem si zmeny vymenujeme a synchronizujeme, takze zdrojak kompilovateny jak pod Unixem, tak pod Windows bude dostupny na jeho serveru

Downloadujte na nize uvedenych URL, ale zatim to nikde neroztrubujte ani nesirte. Oficialne to asi oznamim na foru S@H zitra nebo pozitri. Tedy, pokud se neobjevi zadne zavazne problemy. Krome te p4_sse3 jsem zkousel vsechny na odpovidajicich procesorech, ale zatim se jednotky jeste dopocitavaji, takze casy ani vysledky validace jeste neznam. Doufam, ze az se nekdy kolem poledne probudim, tak mi prvni ranni ptacci daji trochu feedback.

64-bitovou verzi zatim nemam. S Intel ICC to nejde. Mohl bych to kompilovat jedine s MSVS 2005, ale zatim mi to v tom nejde kompilovat - je tam toho jeste hodne na procisteni. Navic mam obavu, ze to nebude zadna slava, protoze nebudu moci pouzit rychle funkce Fourrierovy Transformace od Intela. Zkusim co to da s FFTW, ale nevim jestli to jde pod MSVS 2005 uz kompilovat. Kazdopadne s tim bude jeste hodne prace, takze to hned tak nebude.
Uživatelský avatar
trux
Banánová odměna
Banánová odměna
Příspěvky: 874
Registrován: čtv kvě 12, 2005 2:16 am
Kontaktovat uživatele:

Příspěvek od trux »

Pro ty, kteri testuji ruzne optimalizovane aplikace, je uzitecne vypocitat referencni jednotku a srovnat vysledek s vysledkem od oficialni verze, aby se videlo jestli by ji validator prijal jako "strong similarity". Tetsuji na to napsal programek a protoze jsem potreboval Windows verzi a nikde ji nevidel, zkompiloval jsme ho a dal na svuj server: http://boinc.truxoft.com/download/rescmp.exe pro ty, kteri si chteji overit jestli jejich pocitac s optimalizovanym klientem (nebo pretocenym procesorem) pocita spravne.

Pouziti je jednoduche - nejdriv zastavet BOINC core klienta, pak vemte referencni nebo jinou jednotku, pojmenujte ji work_unit.sah, dejte ji do adresare s inkriminovanou aplikaci a spuste aplikaci. Pak vemte prislusny result.sah z oficialni aplikaci nebo z jineho pocitace (pokud nemate, vytvorite ji stejnym zpusobem s patricnou aplikaci) a z DOS okna srovnejte takto:

C:\cesta...\rescmp {result.sah 1} {result.sah 2}
Uživatelský avatar
'bosh
Pokročilý
Pokročilý
Příspěvky: 284
Registrován: úte zář 07, 2004 2:17 am
Bydliště: Ottawa

Příspěvek od 'bosh »

vyzkumnik píše: sakra proc to takhle nepocita moje x2-3800+@2750 pretocit to na 2,9 by se to take dalo tak bych snad mohl mit lepsi vysledky mit tu kompilaci ne?
Well, why don't you try the optimised Window client?
http://www.guntec.de/Crunch3r/setix86.html
Uživatelský avatar
forest
Příspěvky: 2573
Registrován: pát srp 27, 2004 12:50 pm
Bydliště: Újezd u Brna 31 let
Kontaktovat uživatele:

Příspěvek od forest »

První dva výsledky jsou velice překvapivé.
S nejlepší Truxovou optimalizací, jsem na Prescottu 2,66 dělal v průměru časy kolem 50 minut a to občas hodilo u některé jednotky chybu ve výpočtu.
Nyní s tou novou optimalizací první výsledek 41 a druhý 42, takže pravděpodobně podstatné snížení času.
Až jich zpočítám ještě víc, tak to upřesním, ale prozatím je to velice nadějné :Honza_clap
Naposledy upravil(a) forest dne pát pro 09, 2005 1:38 pm, celkem upraveno 1 x.
Honza
 
Příspěvky: 4322
Registrován: úte lis 30, 2004 10:50 am

Příspěvek od Honza »

forest píše:Bohužel výsledky k náhledu jen tak asi nebudou, když se nedaøí odesílání hotových WU.
Ooops, jsem si neuvedomil, ze ten projekt ted vlastne jede jenom jednim smerem...obcas.
Prvni WU 32:16. Abych rychleji zjistil vysledky, pozastavil jsem CPDN a necham dojet Rosettu. Naroky na pameti kolem 48MB jsou slusne.
Uživatelský avatar
forest
Příspěvky: 2573
Registrován: pát srp 27, 2004 12:50 pm
Bydliště: Újezd u Brna 31 let
Kontaktovat uživatele:

Příspěvek od forest »

Po dopočítání 6 WU byl největší čas 42 minut, takže zrychlení minimálně o 16%, což je velice slušné na to, že jsem předpokládal že lépe než to udělal Trux už to moc nepůjde :)
Naposledy upravil(a) forest dne pát pro 09, 2005 3:16 pm, celkem upraveno 1 x.
Honza
 
Příspěvky: 4322
Registrován: úte lis 30, 2004 10:50 am

Příspěvek od Honza »

Po spocitani 10 jednotek mam cas 25-35 minut, v prumeru 32 minut. To mi dela nejakych 90 WUs/day. Jeste ze kvota je 100WUs/CPU a ne 100WUs/host, jinak by uz byl problem...
Uživatelský avatar
Indy
Nováček
Příspěvky: 47
Registrován: sob lis 19, 2005 4:37 pm
Kontaktovat uživatele:

Příspěvek od Indy »

Tak na mém A64 Venice 3000+ nyní první jednotka za 50min :D a dříve s truxovou optimalizací 80-85min.
Jsem zvědav na zrychlení P4 v práci.
Obrázek
Uživatelský avatar
Necroman
Expert
Expert
Příspěvky: 496
Registrován: pon led 17, 2005 2:43 pm
Bydliště: Louny
Kontaktovat uživatele:

Re:

Příspěvek od Necroman »

Prvni spatna zprava ke Cruncherove verzi, akousel jsem verzi SSE2 pro Pentium M na mem Pentiu M 705 1,5 GHz Banias s referencni WU, kterou dodaval Tetsui Maverick k uplne prvnim optimalizacim a na ktere jsem testoval nove verze pro muj notebook, Maverickovi verze vzdy behaly v pohode, ale tato hodila po chvilce chybu do stderr.txt:

Kód: Vybrat vše

***UNHANDLED EXCEPTION****
Reason: Access Violation (0xc0000005) at address 0x0043E9A5 read attempt to address 0x00E8D008

1: 12/10/05 15:08:52
1: ..\analyzeFuncs.cpp(1002) +31 bytes (cachep)
1: ..\analyzeFuncs.cpp(388) +51 bytes (seti_analyze)
1: ..\seti.cpp(795) +12 bytes (seti_do_work)
1: ..\worker.cpp(201) +5 bytes (worker)
1: ..\main.cpp(248) +0 bytes (main)
1: ..\main.cpp(269) +11 bytes (WinMain)
1: f:\vs70builds\3077\vc\crtbld\crt\src\crt0.c(251) +29 bytes (WinMainCRTStartup)
asi tam ma jeste nejaku bugy, zkusim to jeste jednou, nebo s obyc verzi SSE2 a podam report...
Obrázek
Zamčeno