Newsgroup: it.comp.retrocomputing
Titolo: Curiosità sui cluster beowulf

Avrei una piccola curiositï¿œ sui cluster beowulf (mi pare che qualcuno 
qua, avesse giï¿œ provato a metterne insieme uno radunando un po' di pc 
scrausi): sostanzialmente cosa ci potrebbe fare una persona normale con 
una macchina cosï¿œ oltre la soddisfazione s'intende ?
Esistono selezioni di programmi piï¿œ o meno comuni per sfruttare a 
livello casalingo queste cose o ï¿œ tutta roba del calibro di scilab ?


Per casa piï¿œ che una soluzione alla beowulf adotterei una soluzione SSI
(single system image) tipo openssi o mosix (putroppo Moshe ha deciso di
chiudere con openMosix) che ti creano (passatemi la forzatura...) una
sorta di sistema NUMA con la rete come bus dove i processi si spostano
da un nodo all'altro a seconda dei carichi dei nodi stessi (anche qui
semplificando e ignorando i vari CPU/IO bound) .
Le soluzioni beowulf sono piï¿œ application oriented, nel senso che ï¿œ
l'applicazione che primariamente deve essere pensata per sfruttare il
cluster via PVM o MPI...


 
Uhm ne so quanto prima. Il punto ï¿œ che prima di scendere cosï¿œ nei 
dettagli mi piacerebbe capire se esistono campi di applicazioni 
casalinghi che possono trarre beneficio da sta cosa, cioï¿œ dai insomma 
sti vecchi pc riusciamo a fargli fare qualcosa ancora di utile ?

 sti vecchi pc riusciamo a fargli fare qualcosa ancora di utile ?
 
Il punto è: cosa ci vuoi fare tu...
Energeticamente e prestazionalmente parlando la risposta è NO. Un
qualunque i3 di adesso ha più MIPS di 10 PI o PII che siano (non so la
numerosità e la classe delle macchine che hai ma non penso di sbagliare
di molto) e con un alimentatore green di quelli dei giorni nostri (pur
erognado il triplo dei Watt...) consuma  meno di una sola di quelle
macchine.
Se lo fai per divertirti e imparare qualcosa di nuovo allora la risposta
è SI, ma a quel punto devi decidere su cosa ti vuoi concentrare:
- sistemistica
  ti metti in piedi un sistema mosix e vedi le applicazioni che vanno da
una parte a ll'altra e giochi un po' con il fine tuning dei sistemi per
vedere come rispondono al parallelismo e alla migrazione senza entrare
nel merito del calcolo matematico dell'applicazione
 
- problema fisico/matematico specifico
  dato il tuo problema ti prendi un implementazione MPI di qualche
motore di calcolo dedicato o te lo scrivi tu e impari un po' i concetti
di dominio dei dati, segmentazione, condizioni a contorno etc etc.

Non credevo che fosse così vecchio il nostro progetto....
 
http://compvter.it/wiki/Cluster-Beowulf
 
 
Ci trovi qualche info,
se vuoi parlare con un esperto ti passo l'indirizzo di ClaudioD.
 
Dino
comPVter

 comPVter
 
Ciao Dino,
con i miei suggerimenti non voglio assolutamente smorzare l'entusiasmo
di nessuno e men che meno dare del "vecchio" ai progetti degli altri,
che per inciso reputo molto belli ed educativi!
 
Solo una piccola considerazione partendo proprio dal vostro progetto
cosi forse riesco a chiarie quello che volevo dire a Quark, dicendo "NO
prestazionelmente"
 
cito le metriche MIPS da
http://en.wikipedia.org/wiki/Instructions_per_second
 
 
1 "Pentium 4 Extreme Edition" quindi un po' pi� prestazionale del vostro
genera 9726 MIPS at 3.2 GHz
 
Considerando che avete una rete a 10/100 Etherenet le latenze di
sincronizzazione MPI sono altine (gia una 1Gb sarebbe meglio, il top
ovviamente rimarrebbe myrinet o dolphin o affini) e quindi non sarebbe
corretto prendere la sommatoria delle singole potenze di calcolo come
capacit� computazionale del cluster complessivo. Tuttavia assumiamo
latenza 0 e capacit� comutazione totale pari a 10 * 9726 = 97260 MIPS.
 
L'i7 pi� piccolo preso in considerazione nella tabella, l' "Intel Core
i7 920 (Quad core)" genera 82300 MIPS da solo.
 
Diciamo in generale che per la mia esperienza nel mondo dei cluster ho
visto che sono efficenti e utili nell'arco di 1 o 2 generazioni di
processori, poi tendono a diventare antieconomici nell'uso effettivo,
pur rimanendo sempre estremamente affascinanti e istruttivi.
Generalmente chi sa sfruttare un cluster sa sfruttare appieno anche un
processore multicore moderno, perch� sa quali sono i problemi e le
tecniche di parallelizzazione del codice e di segmentazione dei dati.
 
Ripeto, NON voglio smorzare l'entusiasmo di nessuno, anzi!


 
Che peccato... niente allora, speravo di farmi un macinino buono a 
convertire in mp4 qualche film invece nisba.


Io arrivato a quasi 300Eu di bolletta della luce ho iniziato la
revisione delle macchine sempre online in casa... Il cluster openMosix �
stato il primo ad essere pensionato seguito dalla conversione delle
macchine x86 di servizio da fisiche a virtuali e infine dalla migrazione
dei servizi dalle workstation UNIX ai server virtuali...
Dipende da quanto � il tuo limite di spesa sulla bolletta, ma un'idea
(che ho portato avanti per qualche annetto quando la corrente costava
ancora relativamente poco) potrebbe essere quella di usare le
macchinette come serverini interni... Un DNS, un Samba, un DHCP, etc.
come palestra "sistemistica" oppure potresti metterci su sistemi
operativi diversi, tipo linux, open/net/free BSD, Haiku (o i suoi
predecessori Z o BeOS), eComStation (successore di OS/2 warp) etc. ;-)


 
Piů che altro l'idea era proprio di risparmiare attraverso un cluster 
nel senso: supponendo l'esistenza di programmi per convertire i video in 
grado di operare in parallelo, se un singolo pc anche potentissimo con 
ali green e balle varie ci impiega tipo 10 ore, magari un cluster di 
macchine piů scarse, frazionando il lavoro sui nodi ci impiega solo due 
ore. Sarebbero due ore d'inferno perchč potrebbe saltare il salvavita ma 
poi fatto, finito, cluster spento fino a prossima missione.
 
Purtroppo pare che per ottenere questo risultato, dovrei avere in casa 
una decina di core 2 duo vs una macchina i7

 una decina di core 2 duo vs una macchina i7
 
Purtroppo � cos�... E per di pi� c'e sempre da considerare che la
parallelizzazione anche a latenza 0 non � gratuita (cfr. legge di
Amdahl), ha un costo in termini di numero di operazioni complessive
rispetto all'equivalente codice seriale, che � nella parte di codice di
controllo/sincronia e la porzione di separazione e riassemblaggio dei dati.
In piu tu vorresti elaborare dati multimediali per i quali i vari codec
traggono enormi benefici dalle istruzioni SIMD (tipo Altivec su PPC o
MMX, SSE(1,2,3,4) 3DNOW! su x86 intel e AMD, etc.) I processori pi�
recenti, sono molto pi� veloci nel transcoding non solo in proporzione
ai MIPS totali, ma anche per le nuove istruzioni SIMD dedicate al mondo
multimediale che implementano.
Per questo ti chiedevo cosa ci volevi fare... Non tutto trae beneficio
dalla sola parallelizzazione ;-)


 
La mia idea molto grezza era prendere un filmato, spezzarlo da keyframe 
a keyframe, dare i blocchi in pasto ai singoli nodi, infine 
ritrasmettere i pezzi elaborati al primo nodo che li monta nel file finale.
 
Ad occhio croce perfino pi� semplice di un'operazione di raytracing 
(perch� l� almeno ci sarebbero da dover gestire luci ed ombre le quali 
non credo si possano dividere come un puzzle) e senza particolari 
fastidi di latenza tranne per la trasmissione e la ricezione dei file da 
elaborare o gi� elaborati

 elaborare o già elaborati
 
 
Perfetto. Con questa descrizione, già si capisce che non hai condizioni
al contorno nei segmenti dati e non hai bisogno di alcun tipo di sistema
di sincronizzazione delle attività tra i nodi e quindi non hai bisogno
di MPI o PVM che sia. In realtà per questa cosa non seve neanche un
cluster, ma basta una costellazione, magari agganciata direttamente a
uno share dischi dove prelevare i frammenti video e depositare gli
elaborati.
Una costellazione in pratica è un insieme anche disomogeneo di pc senza
alcuna particolare struttura o framework per l'elaborazione parallela.
Nella soluzione piu semplice ti puoi fare uno script di ditribuzione via
ssh dei task di mencode sui nodi senza neanche aver bisogno di un
sistema batch di gestione code come PBM/openPBM, gridengine o affini.
 
Detto questo facciamo la "valutazione economica" spannometrica sui dati
fittizzi che dicevi:
 
	mettiamo che il tuo PC i7 consumi 800W a pieno regime e come dici tu
lavori 10 ore mentre spalmando il carico su 10 machinozze piu
"vecchiotte" da 450W ci metti 2 ore
 
	 1 * 800 * 10 = 8000W consumati con l'i7
 
	10 * 450 * 2  = 9000W consumati con il cluster
 
	in più avresti che per 2 ore consumi 4500W e non so che contratto hai
ma a me con 3600 per più di 10 minuti mi il contatore stacca la
corrente.. ;-)
 
In generale il clustering a livello domestico è un po' dispendiosetto
anche se non sembra li per li ;-)
Certo che se hai un contratto aziendale (tipo i centri in cui ho avuto
l'onore di lavorare) e magari puoi scaricare qualcosa... allora le cosa
cambiano  ;-)

 sistema batch di gestione code come PBM/openPBM, gridengine o affini.
 
* PBS/openPBS


 
Partiamo dal fatto che tra la cpu di riferimento (i7) e quelle delle 
cluster non devono passare troppe generazioni, credo che un sistema di 
riferimento utilizzerebbe i core 2 duo ma questi necessitano per forza 
di 450W ? Partendo dal fatto che questo progetto necessita solo di cpu, 
ram e disco, mentre la scheda video sostanzialmente � l� pi� per 
capriccio, forse i consumi si possono addirittura dimezzare e allora i 
conti tornerebbero alla grande.
 
 


Qui bisogna un po' vedere le caratteristiche delle varie CPU e schede
madri che vuoi usare... Ma ci potrebbe tranquillamente stare :-)
Ho messo davero valori "a cavolo"... 800W (scarsi per quello) li
consumava a pieno regime un biprocessore Xeon Dell che usavo come
Frontend in un cluster che avevo realizzato qualche anno fa...
Diciamo che ora hai tutti gli strumenti per fare le tue valutazioni...
Per capire se ti conviene, calcoli un po' i MIPS totali che hai con uno
e con l'altro (anche a spanne) e ti fai di conseguenza il rapporto dei
tempi di esecuzione e poi fai il conto dei consumi :-D


 
Diciamo pure che il conto alla fine per essere vagamente conveniente 
tende ad escludere il riciclo di sistemi vecchi in favore di materiale 
acquistato appositamente.
L'ideale per un cluster/costellazione sarebbero una decina di sistemi 
composti da schede madri mini itx intel, core 2 duro, una stecca di ram 
di taglio massimo e compact flash da 32/64GB per hard disk (meglio ssd 
ma i costi andrebbero fuori scala).
Il tutto alla fine per avere un sistema che nella migliore delle ipotesi 
terrebbe banco una manciata di anni (considerando che un core 2 duo 
elabora circa 20000 MIPS quindi un cluster x10 ne farebbe 200k quanto ci 
metterebbe un i7 a recuperare ? forse basterebbero gi� adesso solo un 
paio di xeon) e che senza un utilizzo costante e possibilmente 
redditizio sarebbe solo uno spreco di soldi.


Pensa che i centri di supercalcolo come quello del CINECA hanno per
l'appunto partner industriali privati:
http://www.cineca.it/it/content/partnership-industriali
 
Quando frequentai la scuola estiva di calcolo parallelo ebbi un accesso
(ovviamente estremamente limitato) per qualche settimana ai loro
cluster... Faceva "un certo senso" veder girare i miei giochini in MPI
(che duravano pochi minuti) affianco a processi di simulazione geologica
dell'ENI in piedi da giorni e giorni... :-D
Emozionante comunque avere accesso a quella potenza!!! ;-)


 
Se gli schiaffavi un giochino in MPI tipo "gestione della cosa pubblica 
da parte dello stato" gli mandavi in crash l'intero sistema perch� si 
sarebbe trovato a dover simulare il buco nero della via lattea. :P