» »

Porazdelitev procesov

Porazdelitev procesov

poweroff ::

Nekje sem zasledil da za Linux obstaja nek software, ki skrbi za porazdelitev procesov.
Se pravi - v mrezo namestimo vec masin, potem pa na vsaki od njih tece en kos procesa.

Morda kdo ve kako se zadeva imenuje in kje jo dobiti?

dr.J ::

Hja, kakšne procese bi pa ti rad delil po mreži?

V te namene se gradijo gruče računalnikov, na katerih tečejo paralelno narejene aplikacije. Poglej na Google pod "beowulf" pa v domače loge na http://www.activetools.si ali pa še kaj vprašaj, saj imam nekaj izkušenj s tem.

Tudi v tem forumu se je že večkrat govorilo o tej temi.

Zgodovina sprememb…

  • spremenil: dr.J ()

Brane2 ::

To kernel dela že sam.
Če imaš Linux distribucijo na osnovi kernala 2.4.x, se bo zelo lepo znašel tud z mašino na več procesorjih (dvo ali večprocesorke plate).

To dela tud na starejšem 2.2x kernelu, sam baje ne tko lepo...

Če pa misliš sestavit mašino iz več plat, potem bi bil verjetno bolj prav odgovor BeoWulf ali kaj podobnega...

poweroff ::

Tocno to me zanima. Imam moznost dobiti 20 stari 486-tk z mreznimi karticami (OK, samo 10 Mbit)... pa sem razmisljal zakaj se ne bi lotil sestavljanja masine...

poweroff ::

No, aplikacijo ki se razbije na več procesov bi znal napisati tudi sam.. .pač samo rabiš zagnrati na vsaki mašini isti proces z različnimi parametri, rezultati se pa potem nekam stekajo...

Ampak to je namenska aplikacija. Mene zanima na splošno. Da bi pognal en program na eni konzoli in bi potem laufal na vsaki masini en koscek - "sam od sebe" (v bistvu bi za to skrbela neka aplikacija)

dr.J ::

Ravno za "stekanje" rezultatov skupaj moraš ustrezno poskrbeti. Zelo malo je aplikacij, kjer lahko samo na koncu vse skupaj združiš. Večina se že med delom mora sporazumevati med seboj. V ta namen moraš inštalirati na vse mašine ustrezne komunikacijske knjižnice, ki jih potem kličeš iz tvojega programa. Take so npr. Message Passing Interface (MPI) in PVM.
V splošnem se paralelno programiranje deli na "shared memory" in "distributed memory" tipa. V prvem so mašine s več CPUji in skupnim pomnilnikom, v drugem primeru pa je pomnilnik razdeljen.
Pa mašine morajo biti enako hitre, sicer ta hitrejše čakajo počasne. Zgodba zase je tudi pametno porazdeljevanje bremena med posamezne CPUje.
Prevajalniki znajo do neke mere sami otimizirati kodo za "shared model"; a če nisi vnesel ustreznih ukazov v tvoj program, je taka "optimizacija" zelo vprašljiva.
Za "shared" model še dobiš aplikacije, medtem ko za "distributed" skorajda ne.
Nikar ne misli, da boš kar tako enostavno z dvema 486kama delal zdaj 2x hitreje.
Ali sploh veš, kaj bi rad tako delal?

Zgodovina sprememb…

  • spremenil: dr.J ()

poweroff ::

Neke statisticne analize (clustering,...), sortiranje in prirejanje nizom znakov številke od 1 do n.

dr.J ::

Kako lahko porazdeliš delo med računalniki, je odvisno od aplikacije same. Nekatere je razmeroma lahko prirediti.
Poglej na http://www.activetools.si pod EnFuzion.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

niti (threads) (strani: 1 2 )

Oddelek: Programiranje
775169 (3623) noraguta
»

Superračunalnik

Oddelek: Strojna oprema
273086 (2012) CoolMike
»

Desktop aplikacije večinoma niso multithreaded??? (strani: 1 2 )

Oddelek: Programiranje
554881 (4127) Gundolf
»

Cluster parallel computing (Kako?)

Oddelek: Operacijski sistemi
81222 (1071) ješ
»

Dva računalnika, delata kot eden?

Oddelek: Pomoč in nasveti
101207 (995) Loki

Več podobnih tem