Apri/Chiudi


Cosa è il calcolo distribuito?

28 gennaio 2007 , di Boliboop

Nell’estate 2006 vi parlai del progetto BOINC, una piattaforma software per gestire le risorse informatiche degli utenti volontari gestita dall’università di Berkley, in cui vennero sviluppati software nati per sfruttare la potenza di calcolo dei computer connessi al web per eseguire analisi matematiche vario tipo. Il primo e il più famoso fu SETI@home (leggasi SETI at home, cioè SETI a casa) che esegue analisi sui segnali radio provenienti dallo spazio, alla ricerca di segnali provenienti da eventuali esseri intelligenti. Nel novembre 2006 fu recapitata a tutti i partecipanti al progetto una e-mail a firma Sir Arthur C. Clarke (autore del libro di 2001, Odissea nello spazio) e Dan Werthimer (Direttore scientifico del progetto SETI@home) allo scopo di invogliare gli iscritti a coinvolgere altre persone e/o di fare delle donazioni.

Negli anni questo tipo di progetti scientifici collaborativi sono cresciuti e si sono moltiplicati a dismisura comprendendo ricerche di astronomia, biologia, medicina, matematica, modellizzazioni climatiche e altro ancora. Inoltre non esiste solamente l’infrastruttura informatica di BOINC ma questa è certamente la più diffusa al mondo.

Questo tipo di collaborazione da parte di comuni cittadini con le più dispendiose (in termini di calcoli) ricerche scientifiche è possibile solo unendo la potenza di molti calcolatori alla delocalizzazione realizzabile tramite la rete internet. L’infrastruttura informatica utilizzata viene chiamata calcolo distribuito ed ha alla base il concetto di calcolo parallelo. In particolare il progetto SETI@home e i susseguenti hanno usato una versione abbastanza semplice del cosiddetto grid computing.

Vediamo innanzitutto in cosa consiste il calcolo parallelo, poi entreremo nel dettaglio del calcolo distribuito propriamente detto.

Calcolo parallelo

Il calcolo parallelo è l’esecuzione simultanea del codice (diviso e specificamente adattato) su più microprocessori o più core dello stesso processore allo scopo di aumentare le prestazioni del sistema.
Nonostante un sistema con un numero n di processori sia meno efficiente di un sistema con un singolo processore di velocità n volte superiore, spesso un sistema parallelo è più economico.
Il calcolo parallelo, oltre che in varie branche della matematica (Teoria dei numeri), della fisica (QCD su reticolo) e della scienza in generale, è molto utilizzata nella crittoanalisi, ovverosia l’analisi dei testi crittografati mediante il metodo della forza bruta.

Il metodo della forza bruta è un algoritmo di risoluzione di un problema che consiste nel verificare tutte le soluzioni teoricamente possibili fino a che non si trova quella effettivamente corretta. Il metodo è anche noto come ricerca esaustiva della soluzione. Il suo principale fattore positivo è che porta sempre a trovare la soluzione corretta, ma è anche vero che è sempre la soluzione più lenta o dispendiosa; viene utilizzato come ultima risorsa sia in crittanalisi che in altre parti della matematica solamente in quei casi dove sia l’unica soluzione conosciuta e quindi anche la migliore.

Tornando al calcolo parallelo, non si deve pensare che si possa ottenere un calcolo parallelo efficiente semplicemente mettendo più processori uno a fianco dell’altro e connettendoli ad una velocità sufficiente
La maggior parte degli algoritmi deve essere riscritta per poter sfruttare l’hardware parallelo. Un programma che viene svolto correttamente da una singola CPU potrebbe presentare problemi se svolto in parallelo: più copie dello stesso potrebbero interferire tra loro, ad esempio accedendo allo stesso indirizzo di memoria allo stesso tempo. Da qui la necessità di una attenta programmazione per sfruttare questo tipo di sistemi.

Calcolo distribuito

Il calcolo distribuito (distributed computing) utilizza le risorse di diversi computer collegati in rete tra di loro (solitamente attraverso internet) per risolvere problemi computazionali a larga scala. Semplificando un’infrastruttura per il calcolo distribuito consiste in un software principale che usa i processori di computer connessi ad una rete (colale o globale) come se fossero processori collocati sulla stessa scheda madre di un calcolatore adibito per calcolo parallelo. Per realizzare ciò è necessario che i computer partecipanti abbiano un software (che ad esempio si attiva come screensaver) che sfrutta i tempi morti di utilizzo della CPU in maniera da non ridurre le prestazioni delle piattaforme su cui lavorano, elaborando piccole parti di un progetto di ricerca che rimane molto vasto.

Grid computing
Il grid computing è un sottoinsieme molto utilizzato (da SETI@home e susseguenti, come già detto) del calcolo distribuito
Il termine grid computing (letteralmente, calcolo a griglia) indica un’infrastruttura distribuita per consentire l’utilizzo di risorse di calcolo e di storage provenienti da un numero indistinto di calcolatori (anche e soprattutto di potenza non particolarmente elevata) interconnessi da una rete (solitamente, ma non necessariamente, internet).

Attualmente, la più importante grid europea è quella del CERN di Ginevra e viene utilizzata per distribuire le elaborazioni dei dati provenienti dall’acceleratore di particelle verso decine di università e centri di ricerca. La tecnologia usata è chiamata Grid: è tuttora in via sviluppo e molte sue componenti sono embrionali o totalmente assenti.

In campo non scientifico una delle tecnologie basate sul concetto di grid computing è Xgrid (una versione ridotta, ma completa, di Grid) sviluppata dalla Apple per il sistema operativo Mac OS X, e si rivolge a tutte quelle applicazioni che richiedono elevata potenza di calcolo e che utilizzano problemi che possono essere suddivisi senza perdere di prestazioni. Un esempio classico è la grafica tridimensionale, in cui basta assegnare a ogni computer un fotogramma diverso e mano a mano che vengono completati i fotogrammi vengono inviati a un computer centrale che provvede a salvarli su un hard disk in un unico filmato.
Aggiornamento: Punto Informatico parla in questo articolo del Grid Computing nelle aziende e del lancio della piattaforma Grid Evolution.

Potenza di calcolo

Infine cerchiamo di capire di quanto si elevano le prestazioni di calcolo usando il calcolo distribuito. Innanzitutto cominciamo con la definizione di FLOPS che è un’abbreviazione di Floating Point Operations Per Second e indica il numero di operazioni in virgola mobile eseguite in un secondo dalla CPU. E’ quindi una misura della quantità di calcoli matematici eseguibili da un calcolatore. I moderni processori includono una floating point unit (FPU), componente specializzata nel calcolo delle operazioni in virgola mobile. Quindi il FLOPS è un’unità di misura delle prestazioni della FPU. I sui multipli sono il GigaFLOPS (un miliardo di FLOPS), il TeraFLOPS (mille GigaFLOPS) e il PetaFLOPS (mille TeraFLOPS ).

Il 25 marzo 2005 il prototipo IBM Blue Gene/L è diventato il più potente supercomputer del pianeta. Successivi ampliamenti del sistema lo hanno portato a generate 70,72 TeraFLOPS grazie a 32.768 processori installati. Nel giugno 2006 il sistema con 131.072 processori ottenne un nuovo record sviluppando 207.5 TeraFLOPS. L’MDGRAPE-3 è un computer completato nel giugno 2006 in grado di sviluppare un PetaFLOPS di potenza, il sistema non entra nella classifica dato che è un computer specializzato per simulazione delle interazioni chimiche e quindi non è in grado di eseguite i benchmark utilizzati per confrontare i sistemi di calcolo. Da sottolineare che la maggior parte dei supercomputer attualmente utilizza Linux o una variante di Unix; Linux è diventato molto popolare fin dal 2004 quando soppiantò proprio Unix. Windows e Mac OS sono usati in meno dell’1% dei supercomputer. I costi di produzione di un supercomputer si aggirano attorno ai 10-100 milioni di dollari, per non parlare dei costi di gestione che consistono nel consumo intrinseco di energia elettrica e per i sistemi di raffreddamento (un supercomputer può arrivare a dissipare un megawatt, ovvero tanto calore da vaporizzare 1340 litri d’acqua inizialmente a 0°C ogni ora)

Sommando la potenza di calcolo generata dai soli 100 migliori utenti connessi all’infrastruttura BOINC, e partecipanti a due o più progetti, si ottengono 15,3 TeraFLOPS. Niente male, considerando che la spesa è in questa caso solo di sviluppo del software, mantenimento di un sito web e promozione. I costi maggiori se li sobbarcano gli utenti consumando una minima quantità di corrente elettrica in più per l’uso superiore della propria CPU. Anche se BOINC lavora a bassa priorità per non disturbare gli altri programmi in esecuzione, se la CPU lavora troppo ci potrebbero essere problemi di surriscaldamento; per risolvere questo problema il team di sviluppo di BOINC suggerisce l’uso di ThreadMaster, una piccola utility che consente all’utente di limitare l’uso della CPU da parte di un programma.

Conclusioni
In definitiva il calcolo distribuito è un’ottima soluzione per la ricerca scientifica e può rendere la cittadinanza maggiormente consapevole del progresso scientifico. Le prestazioni sono elevate e i costi drasticamente abbattuti. E in questo modo chiunque può sentirsi partecipe dello sviluppo scientifico dell’umanità!

Per una lista completa dei progetti di calcolo distribuito consultare questa pagina di Wikipedia.

Gran parte delle informazioni sono tratte da vari articoli di Wikipedia. Le altre dalla mia esperienza personale nell’uso del software di BOINC ed altre mie conoscenze varie.

Come sempre, per qualsiasi domanda non esitate a lasciare un commento!

Articoli correlati:

  1. La PlayStation 3 contro il morbo di Parkinson
  2. I limiti del plugin Math Comment Spam Protection
  3. GoOSe e gOS: sistemi operativi con la G

7 Commenti a “Cosa è il calcolo distribuito?”

  1. 1

    stefan demetz ha detto

    Il grid computing puo’ essere una cosa molto semplice da installare ed usare in qualsiasi azienda. E non e’ usato solo da istituti scientifici o militari, ma aziende di servizi di qualsiasi tipo. Il prodotto Digipede si usa su Windows con .NET e hanno una versione gratis per 2 CPU/PC.

  2. 2

    Boliboop ha detto

    Molto interessante. Mi interesserebbe molto sapere se esiste un limite al tempo di computing di un algoritmo al di sotto del quale non vale la pena di installare un grid computing, tenendo conto di quanto tempo è necessario percentualmente nell’inizializzarlo, distribuirlo e, per così dire, riassemblarlo per ottenere il risultato finale, passaggi questi che non sarebbero necessari in un computing su una singola macchina. Grazie.

  3. 3

    stefan demetz ha detto

    Ci sono diverse tipologie di grid computing, uno piu’ distribuito (tipo SETI e Digipede) e HPC(che tende a vedere tanti computer come uno solo con filesystem distribuiti, architetture di RAM del tipo NUMA e hardware particolare)
    Per lo specifico prodotto Digipede, che fa grid computing in modo distribuito come SETI@Home pero’ in ambito aziendale il calcolo minimo dove e’ conveniente e’ di circa mezzo secondo (0.5), inquanto il codice binario distribuito per la prima volta viene messo in cache sul computer remoto, e in seguito vengono passati solo i dati (parametri di input dal job manager verso il computer “nodo” e valori della risposta di ritorno. Mezzo secondo significa creare un PDF, o calcolare se l’investimento in borsa e’ ottimizzato, se fatto per migliai di fatture o clienti un prodotto di calcolo distribuito puo’ essere molto comodo. L’inizializzazione e’ molto veloce rispetto all’ esecuzione di un tipico calcolo, e nel prodotto Digipede rispetto ad altri offre la garanzia transazionale che se un PC non completa un job, questo viene annullato, e ridiretto su un alytro PC funzionante. Il riassemblaggio dipende dal tipo di risposta del calcolo: ovviamente se vengono ritornati megabyte di dati il riassemblaggio e’ piu’ lento. Infatti il grid tramite calcolo distribuito e’ molto adatto dove i valori tornati sono pochi, tipo la ricerca di un numero primo.
    Invito tutti a visitare il sito http://www.digipede.net per scaricare la developer edition gratis (per 2 processori/2 PC)

  4. 4

    stefan demetz ha detto

    Giusto per la cronaca, uno dei case studies piu’ interessanti di Digipede e’ l’uso per la previsione di uragani (in seguito a Katrina) dove sono stati usati circa 500 server monoprocessori.
    Sempre per cronaca di fatti, dove un prodotto di calcolo distribuito (tipo SETI e Digipede) non e’ adatto, sono situazioni quali fluidodinamica(aerodinamica) dove gli oggetti calcolati devono interagire dinamicamente con gli altri. In quel caso conviene avere un software che raggruppa tutti i computer in un unico “supercomputer” di CPU, RAM e FileSystem tramite interconnects (cavi di rete a fibra ottica veloccissimi)

  5. 5

    Boliboop ha detto

    Grazie per le solerti ed esaurienti risposte!

  6. 6

    Dario ha detto

    Ma tu BOINC lo usi?

  1. 1

    La PlayStation 3 contro il morbo di Parkinson at Boliboop

    [...] a trovare una cura per il morbo di Parkinson, e non solo. Tutto questo grazie alla potenza del calcolo distribuito! Ora vi spiego [...]

Lascia un commento



Chiudi
E-mail It