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ů.

využití dalších strojů

Příspěvekod Necroman » 24. 3. 2008 13:12

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
Uživatelský avatar
Necroman
Supermatfyz(ák|ačka)
 
Příspěvky: 459
Registrován: 20. 1. 2005 19:46
Bydliště: Louny / kolej Jednota, Praha
Typ studia: Informatika Mgr.
Login do SIS: suchm4am

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

Příspěvekod _mffcore_ » 25. 3. 2008 23:52

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
_mffcore_
 

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

Příspěvekod jonny » 26. 3. 2008 13:09

_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
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ěvekod _mffcore_ » 26. 3. 2008 13:52

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.
_mffcore_
 

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

Příspěvekod Necroman » 27. 3. 2008 00:55

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
Uživatelský avatar
Necroman
Supermatfyz(ák|ačka)
 
Příspěvky: 459
Registrován: 20. 1. 2005 19:46
Bydliště: Louny / kolej Jednota, Praha
Typ studia: Informatika Mgr.
Login do SIS: suchm4am

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

Příspěvekod _mffcore_ » 27. 3. 2008 01:47

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).
_mffcore_
 

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

Příspěvekod Necroman » 8. 4. 2008 17:32

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
Uživatelský avatar
Necroman
Supermatfyz(ák|ačka)
 
Příspěvky: 459
Registrován: 20. 1. 2005 19:46
Bydliště: Louny / kolej Jednota, Praha
Typ studia: Informatika Mgr.
Login do SIS: suchm4am


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

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

cron