Newsgroup: it.comp.lang.perl
Titolo: perl e calcolo parallelo

Ciao!
Chi mi sa dare indicazioni su dove trovare materiale (possibilmente ma non
necessariamente in italiano) per il calcolo parallelo con perl?
grazie in anticipo
stefano
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 necessariamente in italiano) per il calcolo parallelo con perl?
Hai provato su CPAN? (
www.cpan.org
)?
ciao,
DW
-- 
**********************************AVVISO**********************
Per favore non mandatemi allegati in Word o PowerPoint.
Si veda 
http://www.fsf.org/philosophy/no-word-attachments.html

 ha scritto nel messaggio
news:b9foch$f2v$1...@news.newsland.it...

Sul sito della libreria di message passing PVM c'e' il modulo per il perl.
http://www.epm.ornl.gov/pvm/pvm_home.html
ciao,
Nids

Sul sito della Scyld c'e' il modulo perl per mpich e per la loro 
libreria parallela.
ftp://ftp.scyld.com
Ciao.
Alberto


Scusate, non mi prendete in giro, ma che benefici porta il calcolo
parallelo?

--------------------------------
Inviato via 
http://usenet.libero.it

 parallelo?
Bell'esempio semplice di calcolo parallelo, dal beowolf-HOWTO:
[...]Per esempio, mettiamo che vogliamo calcolare la somma delle radici
quadrate di tutti gli interi compresi fra 1 e 10. Scriviamo un programma
chiamandolo sigmassqrt (vedi Codice sorgente) che fa proprio questo. Per
calcolare la somma delle radici quadrate dei numeri da 1 a 10 noi
eseguiamo:
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10 22.468278
real    0m0.029s
user    0m0.001s
sys     0m0.024s
Il comando time ci permette di controllare il tempo trascorso per
completare l'altro comando. Come possiamo vedere, questo esempio ha
necessitato solo una frazione di secondo (0,029 sec), ma cosa succederebbe
se io volessi conoscere la somma delle radici quadrate degli interi
compresi fra 1 e 1 000 000 000 (un miliardo)? Riproviamo e ricontrolliamo
il tempo necessario.
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000
real    16m45.937s
user    16m43.527s
sys     0m0.108s
Questa volta il tempo di esecuzione è decisamente maggiore. L'ovvia
domanda che sorge è cosa possiamo fare per abbreviare il tempo di
esecuzione di questo programma? Come possiamo cambiare il modo in cui si
esegue questo programma per ridurne il tempo di esecuzione? L'ovvia
risposta è quella di dividere il lavoro in una serie di sotto-compiti e di
farli girare in parallelo su tutti i computer. Noi possiamo dividere il
calcolo di una grossa addizione in 20 parti, calcolare una serie di radici
quadrate e farli girare su ogni nodo. Quando tutti i nodi finiscono il
calcolo e restituiscono i loro risultati, i 20 numeri possono essere
sommati per ottenere il risultato finale. Prima di far girare questo
programma noi faremo una named pipe che verrà usata da tutti i processi
per scrivere il loro risultato.
[jacek@beldin sigmasqrt]$ mkfifo output
[jacek@beldin sigmasqrt]$ ./prun.sh & time cat output | ./sum
[1] 5085
21081851083600.941000
[1]+  Done                    ./prun.sh
real    0m58.539s
user    0m0.061s
sys     0m0.206s
Il tempo che otteniamo è di circa 58,5 secondi. Questo è il tempo
trascorso dall'inizio del programma fino alla restituzione all'interno
della pipe dei risultati di tutti i nodi. Il tempo così calcolato non
include la somma finale dei venti numeri, ma questo tempo è molto breve e
può essere trascurato. Possiamo così vedere che c'è un notevole
miglioramento eseguendo questo programma in parallelo. In effetti il
programma parallelo ha girato 17 volte più velocemente, che è un buon
risultato avendo incrementato di 20 volte il numero di CPU coinvolte. Lo
scopo di questo esempio è quello di far vedere il metodo più semplice di
realizzare codice parallelo concorrente. 
Oppure, cosa che più mi interessa, ricerca in grossi database, frazionati
su più macchine....
ciao!
ste


Grazie per l'aiuto, mi piacerebbe metterlo in pratica il tutto.
Dove posso trovare delle risorse a riguardo?
Avendo a disposizione una macchina multiprocessore, posso dividere, quindi,
il carico di lavoro per ogni CPU?
Che versione di Perl supporta questa funzionalità?

--------------------------------
Inviato via 
http://usenet.libero.it

Dal sito della suddetta Scyld si puo' acquistare per una modicissima 
cifra una distribuzione Linux cluster oriented, io ho usato due vecchi 
pc pentiummmx 233 come nodi slave e un pentium2 come master.
La gestione dei nodi slave e' semplicissima, si possono configurare 
senza tastiera e senza monitor, basta solo cd, hd e scheda di rete, 
floppy opzionale.
Non e' molto difficile installare il tutto.
L'unico problema e' che con non c'e' molta documentazione sul cd, 
comunque su google si trova tutto.
Buona fortuna.
Alberto
