La soluzione si chiama Calcolo Distribuito! Con questa tecnologia infatti ci possiamo unire alla più grande rete per il calcolo scientifico al mondo, una rete costituita da migliaia di computer come il nostro che fornisce una potenza di calcolo superiore ai supercomputer governativi. In questo post mi focalizzerò su due dei maggiori progetti che utilizzano la tecnologia del calcolo distribuito per scopo scientifico ovvero Boinc e Folding@home. Per ulteriori informazioni sugli scopi dei vari progetti visitate questo link.
Con il calcolo distribuito possiamo donare attraverso internet le risorse inutilizzate della nostra CPU e/o GPU alla ricerca scientifica in tutta sicurezza e senza problema alcuno. Inoltre, prestando le risorse inutilizzate del nostro PC non si avvertono cali di prestazioni, e la "donazione" diventa così assolutamente inavvertibile e indolore.
Lo spiego per i meno pratici. Il nostro computer funziona come una grossa calcolatrice, e ci sono due componenti che possono eseguire i calcoli matematici e sono la CPU (o processore) e la GPU (il cuore della scheda video). Questi due componenti eseguono tutti i calcoli necessari per far funzionare le nostre applicazioni e i nostri videogame, per fortuna però non sono continuamente sfruttati al massimo, anzi la maggior parte del tempo la passano in idle, ovvero in attesa di eseguire calcoli, lasciando così la maggior parte delle risorse inutilizzate. Gli utilizzi che necessitano di tutta la potenza disponibile sono infatti pochi e possono essere identificati in: comprimere o decriptare file compressi, videogame, rendering 3d, decodifica video in HD. Quando il computer viene utilizzato come lo utilizza la maggior parte degli utenti, come per esempio quando per scrivere un file di testo in word, per leggere la posta o per navigare in internet, il computer è inutilizzato al 90% delle proprie risorse. E c'è di più! Nel caso che si debba svolgere un'attività che necessita di tutta la potenza di calcolo del nostro computer, non si avvertirebbe comunque nessun calo di prestazioni, perchè, utilizzando il sistema di priorità dei processi, tutta la potenza verrebbe dirottata immediatamente ed automaticamente sull'applicazione che siamo utilizzando mettendo in pausa temporaneamente il calcolo distribuito.
Ora che abbiamo capito che i nostri computer sono sfruttati al minimo delle loro potenzialità e che il nostro computer non subisce nessun calo di prestazioni siamo obbligati a fare la cosa giusta, ovvero installare un client per il calcolo distribuito. Questo client non è nient'altro che un programmino molto leggero che viene eseguito all'avvio del sistema operativo e fa da tramite tra il nostro computer e il server o la rete in generale che, come noi, si occupa del calcolo effettivo. Ovviamente tutto si svolge attraverso una connessione internet, quindi è quasi obbligatorio avere una linea veloce (anche se i dati trasferiti non sono molti) e soprattutto flat, ovvero a prezzo fisso, fondamentale se si tiene il computer connesso 24 ore al giorno.
In pratica la comunicazione tra il nostro computer e il resto della rete si può schematizzare in questo modo: il client attivo del nostro pc si connette al server -> il client chiede al server cosa deve calcolare -> il server risponde con i dati da calcolare -> il client scarica i dati da calcolare -> il client elabora i dati (possono servire anche ore per portare a termine un'elaborazione) -> il client trasmette i risultati al server -> il server immagazzina i risultati -> il client chiede al server cosa deve calcolare -> etc etc...
Come ultima cosa ho lasciato il piatto forte. Avete presente i monitor dei film che visualizzano una valanga di numeri e forme senza senso? Beh, ora potete avere una grafica molto simile a quella, ma visualizzando quello che il vostro computer sta effettivamente calcolando in quel momento! Come la forma delle proteine e altre robe tecniche. Volete un breve esempio? Eccone alcuni!



Ora che abbiamo chiarito le basi del calcolo distribuito mettiamoci all'opera e installiamo un client. Ma quale scegliere? Dipende dalle vostre preferenze... Avete dato un occhiata alla lista dei progetti disponibili? Potete scegliere quello a cui sta piu a cuore. Per quanto mi riguarda i progetti che mi sembrano più importanti, sono:
- Rosetta@home che attraverso lo studio delle proteine si cerca una cura per l'HIV, Malaria, Cancro e il morbo di Alzheimer. Maggiori info a questo link.
- World Community Grid che con una rete formata da circa 892000 computer svaria tra diversi campi di ricerca, dall'analisi del genoma umano alla cura del Cancro e dell'AIDS. Maggiori info a questo link.
- GPUgrid studia la biologia molecolare utilizzando esclusivamente il processore Cell della Playstation 3 o le GPU Nvidia.
- Folding@home che studia le proteine e le loro incidenze sulle malattie. Maggiori info a questo link.
Come vi ho anticipato prima questo post sarà focalizzato su due client, ovvero Boinc e Folding@home. Con Boinc possiamo iscriverci a diversi progetti contemporaneamente, con Folding@home invece soltanto al progetto omonimo. Inoltre Boinc fornisce maggiori opzioni di personalizzazione, adatte a chi vuole un controllo più preciso sul client. Entrambe i client possono utilizzare la CPU e/o la GPU per eseguire i calcoli e Boinc può utilizzare sia la CPU che la GPU contemporaneamente. Questi client sono disponibili per tutti i sistemi operativi, quindi oltre a Windows anche per Linux e Mac. Per comodità personale mi concentrerò sui client per Windows in quanto è il sistema operativo che uso, comunque il procedimento per gli altri sistemi operativi non sarà molto differente.
Cominciamo con il client che ritengo personalmente più interessante ovvero Boinc. Lo possiamo scaricare a questa pagina, se invece avete una scheda video Nvidia con supporto CUDA e volete "sposare" la causa di GPUgrid o di SETI@home, controllate in questa pagina se la vostra scheda video è compatibile (in questo caso solo per GPUgrid) ed installate il client scaricabile a questa pagina.
Una volta scaricato il file, eseguitelo e vi troverete ad una finestra come questa:
Selezionate la cartella nella quale installare il client (potete anche selezionare se usare la visualizzazione del calcolo come screensaver)
Ed ora riavviate il vostro PCDopo il riavvio vi troverete davanti ad una finestra come questa:
Proseguite
Scegliete il progetto che vi interessa
Se non avete già un account potete crearne uno da questa finestra (mettete la vostra mail e scegliete una password)
Il procedimento è andato a buon fine. Cliccate su Fine.
Questa è la finestra di Boinc in vista standard, cliccate su Advanced View e diventerà come lo screen qui sotto:
Nella scheda Elaborazioni troverete i calcoli che il vostro computer sta eseguendo o che è in procinto di eseguire (a seconda delle impostazioni)
Nella scheda Progetti troverete tutti i progetti ai quali siete iscritti e da qui potete rimuoverli p aggiungerne altriIn Avanzate -> Preferenze trovere questo pannello dal quale è possibile impostare a piacimento l'utilizzo del processore, della rete e della memoria:
Da qui si puo impostare la percentuale da offrire al calcolo distribuito (da me è 90%), è anche possibile settare orre e giorni dedicate al calcolo, oppure cominciare l'elaborazione soltanto quando il sistema è inutilizzato da più di 3 minuti. A voi la scelta, ma io consiglio di lasciare il calcolo sempre attivo, come ho detto prima è inavvertibile.
Da qui potete impostare il limite utilizzabile della rete, come la massima velocità di download o di upload da dedicare al client, io l'ho limitata per evitare che la navigazione o il download di altri file ne siano svantaggiati
Da qui potete impostare la memoria da dedicare, comprende sia la memoria su disco che la memoria RAM e vale lo stesso discorsoUna volta che avete verificato che i calcoli vengono eseguiti correttamente potete anche dimenticarvi di avere installato Boinc, infatti non si farà mai vedere e resterà sempre soltanto ridotto a icona vicino all'orologio di sistema. Quando volete controllare i calcoli effettuati, o visualizzare la grafica, o per qualsiasi altro motivo basterà fare doppio clic sull'icona e si aprirà il Manager. Quando avrete finito di fare il vostro lavoro chiudete la finestra e il programma si rimetterà buono buono dov'era prima. Se per qualche motivo volessimo chiudere il programma basta clicccare col destro sull'icona, cliccare su Esci, spuntare la voce Stop running science applications when exiting the Manager e premere OK.
Passiamo al client Folding@home, il client per CPU è scaricabile a questa pagina e il client ad alte prestazioni che utilizza la GPU in ambiente Windows è disponibile a questa pagina. Con il client Folding@home è possibile calcolare soltanto il progetto omonimo, e quindi si salta la parte dell'iscrizione ai progetti che avevamo visto in Boinc.
Scaricate il file ed eseguitelo vi troverete di fronte ad una finestra come questa:
Come al solito accettate il contratto e proseguite fino al termine dell'installazioneQuesta è la prima finestra che vedrete dopo avere avviato il programma (se non si avvia da solo potete farlo voi manualmente andando nel menu start e selezionando Folding@home -> Folding@home):
Da qui potete inserire un vostro nickname a scelta e unirvi ad un gruppo online (lo spiegherò meglio dopo)
E da qui si impostano le preferenze per il calcolo da eseguire. Si consiglia di lasciare il Core Priority in Lowest e di impostare a piacimento la percentuale di utilizzo della CPU/GPUCome Boinc anche Folding@home si riduce ad icona ed è inavvertibile durante il suo utilizzo, e come Boinc se abbiamo bisogno di cambiare qualcosa o di visualizzare la grafica possiamo cliccare col destro sull'icona e fare ciò che vogliamo.
Rimangono solo le finezze tecniche da chiarire, ovvero il funzionamento dei gruppi e delle statistiche e gli avvertimenti sui bug conosciuti.
Come abbiamo visto prima, quando ci iscriviamo ad un progetto è possibile impostare un nome utente ed una password, non è una cosa fondamentale ma ci permette di registrare il nostro supporto alla ricerca. Infatti per ogni utente registrato è possibile visualizzare le statistiche, ovvero quanto il nostro computer ha calcolato, quando e per quali progetti. Inoltre è possibile unirsi ai Team online, ovvero dei gruppi in giro per il web (come forum o istitutuzioni) che si danno battaglia l'uno con l'altro con lo scopo di aumentare la concorrenza e di conseguenza aumentare anche il supporto alla ricerca scientifica, di sicuro è la miglior concorrenza mai vista!
Per quanto riguarda ai bug conosciuti, io ne ho riscontrato e verificato uno personalmente. Con Windows XP 64 bit infatti non funziona il sistema di priorità ed il computer non è quindi in grado di dirottare automaticamente la potenza al processo che la richiede, riducendo inesorabilmente le prestazioni del sistema. Di conseguenza ho impostato Boinc in modo che si attivi soltanto dopo 3 minuti di inattività del computer. Fino a che il bug non sarà risolto, forse nelle prossime versione del client, mi tocca tenerlo impostato così. Peccato.
Voi sapete cosa fare comunque. Io di sicuro dopo aver installato Boinc sui miei 2 pc forzerò i miei assistiti a partecipare a questa crociata a favore della ricerca. Quindi chi deve intendere intenda. Uomo avvisato... uomo avvisato!


