Calcolo distribuito: il caso Team_Italia
Il mio interesse per il calcolo numerico nacque negli Anni Ottanta, con l'avvento dei primi home computer. La passione per il calcolo parallelo risale invece ai tempi delle schede transputer programmabili in Occam. Ma è stato con la scoperta del calcolo distribuito che la mia idea iniziò a prender forma.
Nel 1996 lessi un articolo che parlava di un programmatore americano in pensione con l'hobby del calcolo numerico, George Woltman.Egli aveva prodotto un efficientissimo programma per la ricerca di numeri primi di Mersenne tramite l'algoritmo di Lucas-Lehmer, utilizzando un rivoluzionario metodo per la moltiplicazione via FFT sviluppato dal professor Richard Crandall.
Ma la caratteristica maggiormente innovativa del progetto di Woltman fu la capacità di "distribuire" la ricerca su Internet, richiedendo l'aiuto (i cicli di CPU altrimenti non utilizzati, idle) di altri ricercatori ed appassionati nel mondo. Il nuovo secolo vide la collaborazione di Scott Kurowski, che entrò nel gruppo di sviluppo con la creazione di un server centralizzato e di una serie di API (Application Programming Interface) pubbliche utili per ina distribuzione ancor più capillare dei calcoli.
Era nato il Progetto GIMPS - Great Internet Mersenne Prime Search.
Distribuire è meglio che contare
Da quest'idea semplice ed efficace nacquero un centinaio di di altri progetti spesso legati ad enti di ricerca ufficiali (ricordiamo il progetto SETI@Home, gestito dal SETI, Einstein@Home della University of Wisconsin–Milwaukee, Max Planck Institute, e il Folding@Home della Stanford University).
Ma i progetti che ottennero il maggiore impulso da questo concetto di frazionamento del calcolo furono quelli basati sulla ricerca matematica, specialmente nella Teoria dei Numeri ed in Algebra. L'avvento del computer produsse un notevole sviluppo tanto riguardo ai nuovi algoritmi di calcolo quanto all'ottimizzazione di quelli esistenti, ed anche task non banali ed altamente complessi come la fattorizzazione di un prodotto ne beneficiarono grandemente.
Tanto per dare un'idea sugli ordini di grandezza, la difficoltà correlata con la scomposizione in fattori crescere con il crescere del numero da scomporre: negli Anni Settanta il limite massimo per cimentarsi nella ricerca computerizzata di fattori primi di numeri generici era rappresentato da numeri di 40 cifre; oggi un computer domestico può trovare i divisori di un numero di oltre 110 cifre in poche ore, ed i sistemi distribuiti più sofisticati possono accedere a fattorizzazioni di oltre 220 cifre. Da notare che il tempo di completamento dell'algoritmo raddoppia mediamente ogni 5 cifre in più del numero testato, quindi in questo caso la congettura di Moore non sarebbe assolutamente in grado di giustificare l'attuale incremento di efficienza senza un raffinamento ed una ottimizzazione spinta degli algoritmi utilizzati.
La nascita del Team_Italia
Fu così che decisi di contribuire alla ricerca, scrivendo a George Woltman. Egli mi inviò di buon grado le istruzioni per scaricare programma e "work-unit", e mi spiegò il funzionamento del protocollo di comunicazione. Da allora ho personalmente contribuito a numerosi progetti distribuiti, comunicando la passione per il calcolo automatico a matematici e computer geeks. Ho fondato i miei personali progetti di calcolo, portandoli a diventare punti di riferimento a livello mondiale (FermatSearch, DoubleMersennes, Operation Billion Digits) sia attraverso la produzione di software di calcolo altamente specializzato sia con la creazione e la gestione di siti web per la canalizzazione e la conservazione dei risultati.
In questo modo ho contribuito ad attrarre sul calcolo distribuito l'attenzione degli Italiani, e 215 individui fanno attualmente parte del Team_Italia, fondato nel 2008. Il risultato netto di questa partecipazione ha portato negli anni il team vicino alle prime posizioni mondiali, con oltre 1.000 THz/days forniti al progetto.
Perché collaborare con il Team_Italia?
Le ragioni per una collaborazione ad un progetto distribuito di questo genere, sia essa temporanea o continuativa, sono molteplici.
- Passione - Chiunque nutra il piacere di approfondire tematiche legate allo sviluppo di nuovi algoritmi o alla loro applicazione trova nel team un gruppo di fanatici dell'ottimizzazione sia hardware ce software.
- Tecnologia - I programmi di calcolo iperottimizzati, spesso scritti in assembler, sfruttano al massimo tutte le innovazioni offerte dall'hardware (cache, pipelining threads, istruzioni SSE2, AVX, FMA3), e vengono sovente utilizzati come benchmarking and testing platforms per le nuove macchine assemblate. Il nefasto bug legato alla errata codifica in hardware della istruzione FDIV sul Pentium venne scoperta dal matematico Thomas Nicely durante l'esecuzione in doppio cieco di un programma sul calcolo di progressioni aritmetiche di numeri primi su piattaforme Intel ed Alpha; l'errato funzionamento della pipeline del Prescott, l'errore bloccante dello Skylake (processori della famiglia Intel) e le FPU "lente" perché condivise da più cores nei processori AMD vennero riconosciuti attraverso i programmi del GIMPS.
- Edonismo - Come le pietre preziose, l'oro o le auto di lusso, i numeri primi di Mersenne sono estremamente rari: ne sono stati scoperti solo 50 nell'ultimo mezzo millennio. Riconoscere un nuovo numero primo di Mersenne offrirebbe di diritto l'accesso alle pagine di Storia della Matematica, donando nel contempo allo scopritore qualcosa di molto più raro di un diamante da 5 carati.
- Sfida - La gente viene attratta verso azioni ritenute difficili: scalare una montagna, battere un record olimpico, vincere una partita mondiale. Un numero primo di Mersenne equivale all'Everest dei numeri primi: infatti i 7 numeri primi più grandi conosciuti al momento sono tutti primi di Mersenne.
- Guadagno - La Electronic Frontier Foundation (EFF) ha messo in palio grandi somme di denaro per chi dovesse scoprire numeri primi titanici: 3.000 dollari per chi troverà nuovi numeri primi di Mersenne con meno di 100 milioni di cifre attraverso il GIMPS, e ben 50.000 dollari per chiunque scoprirà un numero primo di Mersenne con oltre 100 milioni di cifre.
Sviluppi possibili per un team nazionale
Un appassionato del settore come il sottoscritto, senza particolari investimenti (tranne un paio di schede GPU e la gestione di qualche sito web) è riuscito a portare il nome della propria nazione ai primi posti nell'ambito della ricerca matematica e del calcolo automatico. Senza appoggio di alcuno sponsor o di "poteri forti" abbiamo raggiunto una discreta notorietà internazionale (sono stato intervistato da una rivista francese il mese scorso), e continuo a sviluppare software, a gestire ricercatori nel mondo e, soprattutto, ad indirizzare le nuove leve, i giovani studenti di matematica ed informatica troppo spesso lasciati soli con i loro libri e le loro frammentarie nozioni. Potrei ritenermi soddisfatto dei miei successi, se fossi sufficientemente egoista; purtroppo non lo sono. Non mi è mai piaciuto riposare sugli allori, e cerco sempre di migliorare ciò che sono e ciò che faccio.
Mi piacerebbe vedere il Team_Italia crescere ben oltre il livello attuale (già ora superiore a quello di centri di calcolo di molte università), di creare nei giovani la passione per il calcolo distribuito.
Mi piacerebbe che istituti ed aziende italiani dedicassero una piccola parte delle proprie risorse in eccesso, peraltro sempre presenti nei computer odierni, al nostro progetto.
L'importanza di partecipare
Dal momento che si parla di un progetto matematico, iniziamo con il fare un paio di conti:
Scenario 1: Se 10 istituti offrissero i tempi morti delle proprie CPU montate su 3 computer, per 8 ore al giorno durante un anno, contribuirebbero per il 20% dell'attuale throughtput del Team_Italia, che guadagnerebbe comunque 5 posizioni nel ranking mondiale.
Scenario 2:Se 20 istituti offrissero 5 computer ciascuno, il valore dell'output nazionale del Team raddoppierebbe, e il team guadagnerebbe ben 15 posizioni nel ranking mondiale.
E' bene ricordare che il team leader nella ricerca GIMPS è gestito dal dottor Curtis Cooper, responsabile del dipartimento di matematica presso l'University Central Missouri, che ha "messo a contare" i computer dei laboratori, degli amministrativi e forse degli studenti, quando questi non erano impegnati in altre attività... Il Dottor Cooper ed il suo team ha scoperto 4 degli ultimi 8 numeri primi di Mersenne dal 2003.
Penso spesso ai computer nelle aule di Informatica delle scuole, nei dipartimenti di Fisica e Matematica universitari, alle stazioni di lavoro negli uffici amministrativi, ai computer personali utilizzzati per scaricare film, ascoltare musica o chattare, e mi domando quanto il nostro Team potrebbe contribuire a beneficio dell'immagine di un'Italia attenta a gestire gli sprechi, ad accrescere la conoscenza, a moltiplicare i contributi alla ricerca (in specie quando siano a costo zero). Mi chiedo quale grande ritorno pubblicitario potrebbe avere un'azienda che affermasse "I nostri computer fanno ricerca persino quando nessuno li usa" o "Sviluppiamo tecnologia e informazione, e siamo tra i primi contribuenti della ricerca sul progetto di matematica distribuita XYZ". Si tratterebbe di guadagno e pubblicità ottenuti a costo zero.
Forse è per questo che in Italia sinora il progetto non ha funzionato.
Come collaborare
La collaborazione con il Team_Italia è del tutto gratuita: è possibile garantire un contributo CPU continativo o temporalmente definito. Per partecipare è sufficiente seguire le istruzioni presenti sul sito www.gimps.it scaricando il software, predisporre un account, unirsi al Team_Italia e lanciare un programma del tipo "fire and forget": una volta partito il software non richiede alcuna interazione con l'utente .
Ovviamente il sottoscritto è disponibile a chiarimenti di qualsiasi genere all'indirizzo email l.morelli@moreware.org . In caso di progetti più complessi (reti di computer collaborativi, calcolo parallelo, uso di proxy server, naming conventions per garantire visibilità, uso in ambiente cloud) è possibile concordare un incontro per valutare implicazioni e possibili sviluppi tecnologici.
Conclusioni
Il Team_Italia è da oltre 10 anni impegnato nella ricerca di fattori dei numeri di Fermat, di numeri primi di Mersenne, di fattori di numeri di Mersenne doppi, e contribuisce attivamente allo sviluppo ed alla gestione di altri progetti.
Mi piacerebbe riscontrare nel prossimo futuro il coinvolgimento di nuovi utenti, di istituti scolastici e aziendee a livello nazionale. Contribuire alla ricerca in questo modo è virtualmente gratuito, comporta rientri pubblicitari non indifferenti e tuttora inesplorati, non sfruttati da alcuno; è tecnologicamente sicuro, contribuisce allo sviluppo ed all'ottimizzazione dell'infrastrutura IT esistente.
Per gli utenti singoli (ma non solo...) è anche divertimento, poiché attraverso il sistema delle statistiche online è possibile sfidarsi tra amici e colleghi su chi abbia i computer più ottimizzati e performanti e fornisca i maggiori contributi di calcolo nell'unità di tempo.
Per le scuole il progetto potrebbe costituire l'interfaccia pratica su cui basare il programma di studio di Informatica (linguaggi, algoritmi, ottimizzazione, complessità, statistica, networking...). Per le università un biglietto di visita con il quale posizionarsi meglio nel ranking tra i diversi istituti, ed un possibile tema per un assegno di ricerca.
Per le aziende rappresenta un primo, timido tentativo per avvicinare il tema della collaborazione nell'informatica distribuita, magari un primo approccio con il mondo del cloud a basso impatto tecnologico per testare l'infrastrutura hardware e software sottostante.
E infine, per chiunque sia interessato al progresso ed alla ricerca, avere la certezza e la consapevolezza di avere contribuito nel proprio piccolo allo sviluppo matematico e scientifico mondiale a favore della propria cultura e di quella del proprio Paese.
firmware,MCU,DSP,SoCs real time systems/algo expert, Signumerics,Owner
6 anniDaniele Stirpe