využití dalších strojů

Vícejádrové procesory přináší možnost provádět paralelní výpočty i na běžných počítačích. Implementace aplikací využívajících paralelní výpočty je netriviální záležitostí. Cílem předmětu je proto seznámit studenty teoreticky i prakticky se současně používanými softwarovými technologiemi pro zápis paralelních algoritmů, naučit studenty ladit paralelní programy a v neposlední řadě naučit studenty ladit výkon paralelních programů.
Uživatelský avatar
Necroman
Supermatfyz(ák|ačka)
Příspěvky: 459
Registrován: 20. 1. 2005 19:46
Typ studia: Informatika Mgr.
Bydliště: Louny / kolej Jednota, Praha
Kontaktovat uživatele:

využití dalších strojů

Příspěvek od Necroman »

Psal jsem Yaghobovi dotaz a dostal jsem zajimavou odpoved, mozna se vam bude hodit ;)

Jak je mozne vyuzit i zbyvajicich 10 stroju...
...Vyuziti zbyvajicich stroju je mozne bez potizi. Kdyz budete hodne
odvazny, tak muzete zkusit spustit nasledujici prikazovou radku

/home/sshconnectivity.exp /home/machines.LINUX

Zadate heslo a ono to samo vytvori klic na stroji parlab a na zbyvajici
stroje rozkopiruje Vas public klic. Stejne potrebujete pro MPI vytvoreni
SSH spojeni z parlab na w01-w10 bez zadavani hesla.

Jinak si to muzete udelat rucne, hesla by mela byt vsude stejna.

Klidne to muzete prozradit i ostatnim, neni na tom nic tajneho:)
Je dobre to vedet, aby se zas nestalo, ze par dnu pred odevzdanim se na jednom stroji bude mlatit nekolik vypoctu soucasne od ruznych studentu ;)
WANTED:
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
_mffcore_

Re: NPRG042 Programování v paralelním prostředí

Příspěvek od _mffcore_ »

Nemate nekdo step-by-step postup na pripojeni k jinemu serveru (z Windows - Putty)? Na ladeni je treba testovani rychlosti a to je nemozne delat v dobe, kdy to na jednom stroji testuje vice lidi a zatezuji si vzajemne testovaci stroj. Diky
jonny
Matfyz(ák|ačka) level II
Příspěvky: 53
Registrován: 14. 12. 2006 17:14

Re: NPRG042 Programování v paralelním prostředí

Příspěvek od jonny »

_mffcore_ píše:Nemate nekdo step-by-step postup na pripojeni k jinemu serveru (z Windows - Putty)? Na ladeni je treba testovani rychlosti a to je nemozne delat v dobe, kdy to na jednom stroji testuje vice lidi a zatezuji si vzajemne testovaci stroj. Diky
1. pustis WinSCP
2. Pripojis se na parlab
3. nahrajes si do svyho adresare soubory co si vytvoril v Microsoft Visual Studio :)
4. otevres si putty (pres WinSCP je tam takova ikonka) a prihlasis se (na parlab)
5. otevres si jeste jednu
6. v jedny napises mc a tam kliknes na Left a das Shell link a napises tam treba w03, prihlasis se (pozor nepouzivat numerickou klavesnici)
7. na tom w03 si v adresari /tmp vytvoris adresar svyho loginu (treba) a nakopirujes tam ty svoje zdrojaky a nejaky veci z ppp
8. v ty druhy puttyne (kde jsi jeste na parlab) napises ssh w03 a prihlasis se taky na w03
9. ted muzes ve druhy puttyne poustet g++ apod.
10. pokud zmenis soubor na svych Microsoft Windows, tak ho pomoci winscp nakopirujes do svyho home a pak pomoci mc v prvni puttyne na w03

Jak jste na tom? Ja jsem na tech datech large udelal 17.7 :) akorat mi nejak nesedi ty vysledky :D
127.0.0.1, C6H12O6 127.0.0.1
_mffcore_

Re: NPRG042 Programování v paralelním prostředí

Příspěvek od _mffcore_ »

Diky za postup. Drive jsem si nastavil ve WinSCP editor na Vistual Studio a nasledne jsem jen poklepal na dany soubor zdrojaku, otevrelo se Visual Studio a pri ulozeni souboru ve Vistual Studiu jej automaticky WinSCP odesilal na server. Vedle jsem mel spustene Putty a tam mel udelany skript, ktery provedl kompilaci a spustil vysledek. Tento postup je na muj vkus (a ladeni) prilis dlouhy :( Ale porad lepsi nez VI...

Casove se mi obcas poradi na 8 jadrech prekonat ten Intelacky program, ktery bezi na jednom jadre. Ale je to casove hodne nestabilni, takze obcas je to rychle, vetsinou pomale. A neni to zatizenim serveru - aneb dela to i v dobe, kdy je nic jineho nebezi. Sleduji to pres ps -all.
Uživatelský avatar
Necroman
Supermatfyz(ák|ačka)
Příspěvky: 459
Registrován: 20. 1. 2005 19:46
Typ studia: Informatika Mgr.
Bydliště: Louny / kolej Jednota, Praha
Kontaktovat uživatele:

Re: využití dalších strojů

Příspěvek od Necroman »

Jeste dotaz, jake optimalizace jste tak pouzili, staci radove. Mate tam nejake assemblerovske SSE a pod. casti, nebo je to jen chytre psane v klasickem cecku? S jakymi paramtery to prekladate?
Me to dava prave ted tak za 34 vterin a to je horko tezko 4x zrychleni, tak nevim :(
paramtery prekladu pouzivam g++ -march=nocona -m64 -O4 a jinak nic
WANTED:
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
_mffcore_

Re: využití dalších strojů

Příspěvek od _mffcore_ »

Napred jsem nastudoval instrukce SSE4 a implementoval to pomoci nich. Jake pak bylo nemile prekvapeni, kdyz jsem zjistil, ze SSE4 ten procesor nepodporuje... Ale jinak obecne zrychleni pomoci threadu je dosti omezujici ... teoreticky max. 8x, ale v praxi mene ... jadra sdili jiste prostredky (cache, pamet apod.), pribude nejaka rezie na obsluhu vlaken apod. Ale je zde velka rezerva prave v optimalizaci seriove verze algoritmu a zaroven rozumnem rozvrzeni do vlaken s ohledem na sdilene prostredky. To je videt take na seriovem programu mlk. Takze se snazim pochopit zpracovani programu na nejnizsi urovni (instrukce procesoru) a prizpusobit tomu program - rozvrzeni dat v pameti, poradi zpracovani, pouziti vhodnych SIMD instrukci, prednacitani dat do cache apod. Celkem zajimave pocteni a ruzne tipy a triky jsou v manualech od Intelu (v PDF ke stanzeni na webu Intelu http://www.intel.com/products/processor/manuals/), kde se primo zabyvaji optimalizaci, instrukcemi procesoru apod. Dale cerpam z menualu k Intelovskemu kompilatoru. Myslim, ze si mi to bude hodit i na jine veci ...

Neni vzdy nutne pouzivat primo assembler, protoze prekladac nekdy pochopi dany zamer napsany v Ccku a prelozi jej celkem dobre (nekdy i lepe, nez bych to napsal rucne). Ale ten Ccko kod vychazi primo z predstavy o tom, jak to bude vypadat v instrukcich procesoru. Tedy napred si to rozmyslim v instrukcich a pak zapisu v Ccku ... pripadne pseudoinstrukcich (Intelovsky kompilator ma nejake hlavickove soubory s funkcemi podobnymi s instrukcemi a prekladac je celkem inteligentne preklada). Nasledne koukam, jake instrukce kompilator vygeneroval a pokud tam vidim nejaky zjevny problem, snazim se jej odstranit. Bohuzel zatim nemam kompletni predstavu o tom, jak probiha pipeline, kolik instrukci dopredu musim co prednacitat apod. .... takze je to dosti o experimentovani a zkouseni ruznych konstant.

Ted tam nemam zadny inline assembler (jen vyuzivam funkce od Intelovskeho kompilatoru), ale chci to vyzkouset. Take mam jeste jistou rezervu v rezii - tedy zatim jsem optimalizoval jen vlastni nasobeni matic (a nikoli cteni ze souboru, zapis do souboru, reorganizace dat apod. ... a jeste tyhle veci delam jen v jednom threadu).

Kompiluji pomoci Intelackeho kompilatoru ... ale ne kvuli vykonu, ale kvuli tomu, ze to pisu ve Windows (Visual Studio) a GCCcko mi vzdycky vyhodi 100 chyb, ktere se mi nechce opravovat. A take je pro me dokumentace Intelu mnohem stravitelnejsi nez od GCC. Kdyz byl program jeste jednoduchy a sel mi po drobnych upravach zkompilovat i GCCkem, tak rozdil nebyl meritelny - jak by tomu bylo nyni, to nevim. Vliv nejakych parameteru na rychlost jsem nezaznamenal, i kdyz jsem zkousel kde co - kompiluji pouze s parametry -lpthread -D_REENTRANT. Ani zadne -Ox apod. tam nemam.

Zajimave by mohlo byt pouziti nejake lepsiho algoritmu (Winograd apod.) ... u vetsich matic by uz rozdil mohl byt dost znat. Krome toho rekurze se muze pomerne dobre paralelizovat. Zatim ale pouzivam primitivni, ktery pocita v kubickem case. Myslel jsem, ze jej zkusim ... ale uvidim, zda se k tomu casove dostanu.

Celkove to asi neni dobry postup, ale lepsi neznam. A je to pekny zrout casu.

PS: Take by me zajimalo, na jak velkych maticich se to bude merit, protoze optimalizace pro ruzne velikosti je zcela jina. Napr. pro male matice nema smysl spoustet mraky vlaken a pouzivat asymptoticky lepsi algoritmus. V extremnim pripade matic 1x1 pak jde jen minimalizaci rezie... Naopak pro hodne velke matice by melo smysl se zamerit na setreni pameti, aby se data vubec vesla do pameti (bez swapovani). Zatim to ladim pro takovy stred (cca matice medium a large).
Uživatelský avatar
Necroman
Supermatfyz(ák|ačka)
Příspěvky: 459
Registrován: 20. 1. 2005 19:46
Typ studia: Informatika Mgr.
Bydliště: Louny / kolej Jednota, Praha
Kontaktovat uživatele:

Re: využití dalších strojů

Příspěvek od Necroman »

Polsko ziskalo novy superpocitac
http://www.extrahardware.cz/superpocitac-v-polsku

Co myslite, za kolik by to dalo huge matice :)
WANTED:
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
Odpovědět

Zpět na „NPRG042 Programování v paralelním prostředí“