Pagina 1 di 2

pc in parallelo

Inviato: mar 5 dic 2006, 14:12
da elmetal
ciao ragazzi,avrei bisogno di far lavorare 2 computer in parallelo,i 2 computers sarebbero connessi in internet perche ``geograficamente`` sono distanti tra loro...
come potrei fare?
thanx :D

Inviato: mar 5 dic 2006, 15:21
da kobaiachi

Inviato: mar 5 dic 2006, 15:30
da kobaiachi
scusa mi accorgo solo ora che su quel sito ci si puo solo segnare a progetti gia in atto .


:oops: :oops:

comunque su freshmeat ci sono diversi progetti "open" questo è uno dei tanti http://freshmeat.net/projects/mygrid/

Inviato: mar 5 dic 2006, 17:49
da elmetal
:mille:

Inviato: mar 5 dic 2006, 21:17
da elmetal
un ultima domanda...per un cluster servono per forza computers identici come sistema e come hardware? :?: :roll:

Inviato: mar 5 dic 2006, 23:24
da albatros
Dipende da quello che vuoi fare di preciso...
In generale, due pc geograficamente lontani non mi sembrano il massimo per un cluster...
:?
Per sfruttarli davvero come cluster dovresti averli vicini e con una buona banda, poi dovresti parallelizzare i programmi...
Non è banale...
Se poi hai anche macchine diverse corri il rischio che la più lenta tenga in attesa altre più veloci (ma dipende da cosa vuoi fare in pratica, se sono lontane del resto è probabile che il collo di bottiglia diventi la rete) peggiorando le perfomance di tutto il sistema e rendendolo più difficilmente gestibile...
Puoi usare distcc per accelerare la compilazione di programmi, questo è relativamente facile da fare...
Distcc è ancora vantaggioso anche se le macchine sono diverse, a meno che non lo siano troppo... Se poi si trattasse di architetture diverse dovresti fare cross compiling e la faccenda si complicherebbe...
Il calcolo parallelo è un argomento che mi interessa, ma sono ignorante in materia, per fortuna ho un amico che lavora al cineca nel supercomputing group e una volta o l'altra mi farò spiegare un po' di cose...8)
Eccoti comunque un po' di link...
http://it.wikipedia.org/wiki/Computer_cluster
http://it.wikipedia.org/wiki/Beowulf_%28computer%29
http://www.phy.duke.edu/~rgb/Beowulf/be ... _book.html
http://www-unix.mcs.anl.gov/mpi/
http://distcc.samba.org/

Inviato: mer 6 dic 2006, 1:53
da kobaiachi
non mi è mai capitato di mettere le mani su un cluster e di studiare approfonditamente come funzionano pero in generale ti posso dire che :

nel caso specifico di grid non serve avere macchine identiche questo software è studiato appunto per far lavorare computer distanti tra loro e con poca banda a disposizione ad un unico progetto .

princpalmente grid è utile per applicazioni che richiedono di fare una grande mole di calcoli su dati di cui non serve avere i risultati in tempo reale .

se invece hai bisogno di avere i risultati dele elaborazioni dati in tempo reale ti conviene affidarti ad un vero cluster di macchine collegate tra loro mediante fiber channel/backplane panel (ma qui i costi si alzano parecchio.....)
ed in questo caso è conveniente che le macchine siano identiche .

raga se ho sbagliato in qualche punto vi prego di correggermi.

Inviato: mer 6 dic 2006, 3:48
da albatros
Sì, ha detto bene kobaiachi, un discorso è il calcolo distribuito, un altro il calcolo parallelo in senso più stretto...
Un conto è assegnare dei compiti a diversi pc in base alla loro potenza e alla loro disponibilità nell'ambito di un progetto unitario (es. SETI@home o folding@home), un altro è fare simulazioni dove ciascun passo è legato non solo ai risultati dell'unità di lavoro eseguita, ma anche a quella delle unità "vicine", come nel caso delle previsioni meteorologiche dove il territorio viene diviso in zone e in input a ciascun passo di elaborazione per una zona vanno anche i risultati del precedente passo per le zone vicine...
Nel primo caso ti verrà assegnato un compito con una certa deadline proporzionato alla tua potenza di calcolo ed avrai un certo tempo (di solito abbastanza lungo) per eseguirlo, nel secondo caso, più orientato verso il calcolo "ad alte prestazioni" è necessario che il sistema giri in maniera omogenea, una componente più lenta potrebbe rallentare sensibilmente tutte le altre, senza contare tutti i problemi connessi ad un veloce ed efficace scambio di informazioni fra i vari processori...

Mi rendo conto di aver schematizzato molto, ci sono diverse implementazioni del calcolo parallelo e distribuito, so di essere stato poco rigoroso, ma spero di aver reso più o meno l'idea...

Links:
http://it.wikipedia.org/wiki/Grid
http://it.wikipedia.org/wiki/Calcolo_distribuito
http://www.answers.com/topic/parallel-computing
http://www.answers.com/topic/grid-computing

Inviato: mer 6 dic 2006, 8:53
da gioco

Re: pc in parallelo

Inviato: mer 6 dic 2006, 13:04
da Simone_R
errore .... ho cliccato troppo ..... :?

Re: pc in parallelo

Inviato: mer 6 dic 2006, 13:05
da Simone_R
elmetal ha scritto:ciao ragazzi,avrei bisogno di far lavorare 2 computer in parallelo,i 2 computers sarebbero connessi in internet perche ``geograficamente`` sono distanti tra loro...
come potrei fare?
thanx :D

http://www.lam-mpi.org/

La scarichi .....
Te la compili sui due PC ..... cosa semplicissaima
e ti configuri i nodi ...... [in questo caso devi leggerti le isuzioni]

[pero' non si capisce bene cosa vuoi fare di preciso ..... ]

Inviato: mer 6 dic 2006, 13:54
da absinthe
se non sono collegati in locale almeno con una gigabit che vantaggi si ottengono?!? lo ignoro... sarei curioso di saperlo!

se si deve reinstallare una distro per calcolo in parallelo con MPI etc... io punterei su rocks-cluster. però non credo che serva questo nel caso di elmetal, vista la distanza tra i pc (tra l'altro di solito per MPI si usa una sottorete privata... e solo l'headnode è visibile "pubblicamente" ovvero dall'esterno della rete di calcolo, sia questo "esterno" una LAN aziendale o una WAN)

M

Inviato: mer 6 dic 2006, 14:03
da elmetal
albatros ha scritto:Dipende da quello che vuoi fare di preciso...
In generale, due pc geograficamente lontani non mi sembrano il massimo per un cluster...
vorrei farli lavorare per avere una maggior potenza di calcolo... :roll:

Inviato: mer 6 dic 2006, 15:18
da albatros
vorrei farli lavorare per avere una maggior potenza di calcolo...
Scusa se mi permetto, ma mi pare che non abbia le idee molto chiare su quello che vuoi fare...
:roll:
Su due pc geograficamente distanti può aver senso alleggerire il carico di uno facendo lavorare sull'altro software che richiede molto tempo di eleborazione rispetto al tempo speso per lo scambio dei dati, ma non vedo un modo semplice per raggiungere questo obbiettivo con due pc e una vasta gamma di possibili utilizzi che possano essere gestiti in maniera automatica da un programma...
Non vedo, cioé, o non conosco, magari per ignoranza, un modo, un algoritmo per implementare in maniera efficiente e vantaggiosa la ripartizione dei compiti fra i due pc quando questi compiti possono essere i più svariati e la quantità e le velocità dei dati trasferiti sulla rete sono rispettivamente difficilmente prevedibili e lente...
Forse nel tuo caso potrebbe essere vantaggioso far eseguire all'altro pc compiti che non richiedano interazione fra le due macchine, ad esempio, come ho fatto in passato con i pc dell'università, collegarsi con ssh, scaricare e far compilare un software pesante (es. kde, xorg, eccetera) e poi ritirare i binari compilati, mentre il pc su cui ti trovi fisicamente lo impieghi per altre cose...
Con due macchine distanti e con rete lenta mi pare improponibile fare calcolo parallelo in senso stretto...
Già con due pc vicini e collegati con una buona banda le prestazioni non è che raddoppino, perché devi sincronizzare bene le macchine, stare attento alla gestione della memoria, sfruttare bene i collegamenti, eccetera...
Persino con due processori in una sola macchina non è banale sfruttare in maniera davvero efficiente il sistema (ho letto tempo fa su Linux&C. un interessante articolo di Genoni sul kernel al riguardo), sia come architettura dell'hardware, sia come software...
In ogni caso, la velocità di scambio dei dati fra le diverse unità di calcolo è di solito uno dei principali fattori limitanti verso il raggiungimento di alte prestazioni...

Inviato: mer 6 dic 2006, 15:45
da Simone_R
elmetal ha scritto:
albatros ha scritto:Dipende da quello che vuoi fare di preciso...
In generale, due pc geograficamente lontani non mi sembrano il massimo per un cluster...
vorrei farli lavorare per avere una maggior potenza di calcolo... :roll:
MPI serve a questo.
Comunque la potenza non e' gratis .... devi scrivere un soft con le librerie mpi e che le sfrutti in modo ottimale. Ti ci varra' un po per imparare.

Inoltre se ci sono troppi massaggi fra i processi o una CPU e' troppo lenta rischi di perdere tutti i vantaggi.
[se la rete e' lenta devi limitare al massimo i messaggi ... quando un processo parte su una macchina e' del tutto indipendente. ]

In pratica MPI lavora solo se srcivi del soft che usa MPI.
La stessa cosa vale per il sistema OpenMP .... che comunque non fa al caso tuo.

(peccato che non ho il portatile ... ho un paio di esempi di prog scritto con MPI .... se mi ricordo :D :D :D te li posto la prossima volta. )

Ps. Compilare e far partire MPI e' veramente facile {configure; make; make install ... } , e se vuoi puoi testarlo su una macchina con un solo processore.

Per OpenMP devi usare il compilatore Intel icc o qualche plugin del gcc ..... (comuque non fa al caso tuo in quanto e' piu' adatto a lavorare con il SMP o il multicore ..... )