sabato 4 aprile 2009

Il browser e javascript per risolvere grandi calcoli

Per la ricerca scientifica di base, per l'astronomia o la medicina siamo abituati a pensare che ci vogliano supercalcolatori o cluster, che riempiono interi saloni, per risolvere i problemi più complessi che necessitano una grandissima potenza di calcolo. E in effetti questo è vero, ogni centro di ricerca serio si avvale di supercalcolatori.
Negli ultimi anni però si sta facendo strada un'altra idea, si tratta del "Distribute Computing". Si suddivide un grande lavoro in piccole operazioni e si sfruttano i computer di altri utenti, disposti a cooperare, per risolvere ognuno di essi(ricerche che utilizzano questa tecnica? trovare numeri primi a moltissime cifre oppure scovare segnali di vita intelligente nell'universo).
Degli esempi sono il SETI@Home, Stardust@Home e Rosetta@Home.
Quindi si utilizzerebbe la potenza di calcolo dei milioni di computer collegati al web ottenendo una significativa riduzione dei tempi di elaborazione.
Queste applicazioni generalmente non sfruttano però tutta la potenza di calcolo del pc ospite, ma lasciano la possibilità al proprietario del computer di fare altro, ovvero i calcoli non incidono troppo sulle prestazioni generali.
Nel caso in cui il processore del computer non fa praticamente nulla o quasi, come quando siamo fermi a leggere una pagina del web già caricata, potremmo sfruttare questo tempo morto per fare altro.
Un'idea sarebbe quindi quella di usare javascript come ambiente in cui far girare semplici applicazioni per il calcolo di problemi complessi, suddivisi in operazioni di minore entità, ovvero ogni visitatore della pagina web darà il suo contributo.
Non è difficile, e la programmazione di base non è nemmeno molto complessa, senza dimenticare che le pagine web possono contenere script simili, perciò ognuno potrebbe "sfruttare" i visitatori del suo spazio su internet.
Ci sono però dei problemi; ogni pagina visitata potrebbe contenere uno script malevolo che aiuti malintenzionati ad eseguire calcoli come un brute forcing su una chiave di sicurezza.
Riassumendo il principio è questo: si inserisce uno script in una pagina web che riceve parte dei dati di un calcolo complesso, questa li elabora e invia i risultati ottenuti al server, dal quale riceve in seguito un'altra unità di calcolo.
Un'altro problema è legato al fatto che questo sistema potrebbe impallare il computer del client per il peso eccessivo dello script per cui, bisognerebbe, onde evitare questo problema, lasciare all'utente la libertà di scegliere se concedere più o meno potenza al calcolo e limitare il tempo in cui il processore viene impegnato.
Un ultimo problema è quello di suddividere in unità più semplici il calcolo principale e creare una funzione "scheduler" che controlli lo svolgimento delle operazioni e invii le nuove unità di calcolo, ma anche per questo le soluzioni ci sono.
In conclusione c'è il concetto, in realtà già sfruttato, ma con la variante di utilizzare javascript e c'è la tecnologia, mancherebbe solo l'impegno in questo senso.

SETI@Home: esempio di distributed Computing

Nessun commento:

Posta un commento