
Una versione beta dell'applicazione GPU di HCC (Help Conquer Cancer) sta già funzionando all'Istituto di Ricerca Medica Hauptman-Woodward di Buffalo, sede del progetto. I risultati fin qui ottenuti sono molto promettenti: il nuovo client risulta da 6 a 60 volte più veloce dell'attuale applicazione ottimizzata in C++
La missione di Help Conquer Cancer è di migliorare i risultati della cristallografia a raggi X per le proteine. Questo aiuta i ricercatori a capire la struttura delle proteine, e di conseguenza a migliorare la loro comprensione delle fasi iniziali (ad esempio identificando i marcatori diagnostici, indicatori della malattia, che possono aiutare ad individuare uno stadio precoce della stessa), della progressione ed eventualmente del trattamento del cancro.
Da un recente documento sullo stato della ricerca si apprende che l'applicazione è già in fase di test su immagini campione fornite dal laboratorio, lo stesso che esegue questo tipo di ricerche con metodi tradizionali, ovvero affidandosi all'occhio degli esperti. Il software procede analizzando più di 12.000 caratteristiche per ogni singola immagine e grazie a ciò è in grado di classificarle distinguendo l'80% dei cristalli presenti, il 94% dei composti iniziali e il 94% dei precipitati.
Gli sforzi degli sviluppatori si sono concentrati sull'ottimizzazione della funzione GLCM (una sorta di analisi della scansione digitale), che si mangia il 98% del tempo CPU con l'attuale applicazione in C++.
La scelta è caduta su OpenCL 1.0, piuttosto che CUDA o altri, per il supporto che in prospettiva offre a molteplici piattaforme. Inoltre sono state prese in considerazione anche le versioni per Linux e MAC, oltre che la scontata versione per Windows: questo per dare a tutti gli utenti della World Community Grid la possibilità di partecipare a questo progetto. Utilizzando le API di OpenCL in teoria l'applicazione dovrebbe girare su qualsiasi supporto ma tuttavia le differenze nelle architetture hardware non garantiscono l'ottenimento di buone performance su ognuna di esse: ecco perché alla fine gli sviluppatori hanno optato per la stesura di tre diversi codici ottimizzati per CPU, ATI e nVidia.

I risultati sono entusiasmanti: mentre il tempo medio di elaborazione su CPU Intel Xeon è di 4092 secondi (singolo thread), una GPU nVidia Tesla C2050 ci mette solo 65 secondi!
I miglioramenti sono evidenti. La versione finale (fin qui) in OpenCL è da 6 a 60 volte più veloce della versione ottimizzata in C++ attuale. Su un test con 50 immagini da analizzare la Tesla C2050 ci ha messo 2 ore mentre la versione classica per CPU ben 3 giorni. I dati forniti (grafico compreso) non sono tra di loro omogenei ma tutti vanno in una direzione: quella del miglioramento sensibile.
Veniamo alla questione della precisione dei risultati: c'è stato bisogno di un compromesso. L'ottimizzazione del codice per OpenCL ha certamente aumentato la velocità di esecuzione ma ha anche portato ad una perdita di precisione. Il codice GPU attuale produce risultati numerici che nel 97% dei casi sono dentici a quelli del codice C++ con una precisione a 4 cifre decimali; ma quello che conta alla fine è se le immagini vengono classificate in maniera corretta o no.
E' stata eseguita una prova incrociata su 4500 immagini test e le due applicazioni a confronto, quella attuale per sola CPU e quella nuova per GPU, hanno differito solamente in 8 casi che però appartengono a una particolare categoria; quella delle immagini ambigue, che vengono cioè classificate diversamente anche dai diversi esperti del settore che le analizzano. Sembra quindi che non ci sia alcuna perdita di precisione.
Non è ancora chiaro se i calcoli vengano eseguiti in singola o doppia precisione; le citate GPU Tesla e Quadro supportano la doppia precisione ma la ATI HD 5770 no, ma potrebbe anche essere un errore di scrittura sul grafico.
Ed infine la tempistica: dal forum di WCG si apprende, grazie all'intervento di uno dei responsabili della Grid, che ai ricercatori di HCC è stato concesso di annunciare i loro progressi ma che non verrà comunicata la data dell'inizio pubblico del test beta fino a che non saranno sicuri che tutto possa funzionare a dovere. Poi però si è lasciato sfuggire che l'intenzione è quella di iniziare prima della fine di gennaio 2012 e che, viste le differenti piattaforme da testare, il periodo di test sarà verosimilmente lungo.
Uno dei responsabili del progetto ha poi confermato che le WU saranno compatibili con tutte le applicazioni che verranno rilasciate, compresa quella attuale in circolazione.
Insomma, forse questa volta ci siamo!