RaspberryPI e Jetson Nano possono contribuire attivamente alla ricerca medica contro il Covid-19 attraverso l’uso del calcolo distribuito.
La massiccia diffusione di sistemi SBC (come, appunto, RaspberryPI 3, 4, 400 e Nvidia Jetson, siano essi Nano, TX1, TX2 o Xavier) comporta spesso la fatidica domanda: “Ora che ce l’hai, cosa ci farai?”.
Nel mio piccolo ho sempre considerato questi mostriciattoli su scheda una incredibile opzione di lavoro a basso costo: questi sistemi, infatti, tendono a consumare pochi Watt di energia, ed a lavorare senza alcun problema in un contesto di elevata parallelizzazione (cluster, Kubernetes, Docker).
Abbiamo già parlato di benchmark tra velocità, consumo e costi negli articoli “Teoria dei numeri con Raspberry PI” e “Interesting anecdotes about prime number search“. Oggi prendiamo in considerazione una ulteriore variazione sul tema, l’utilizzo del calcolo distribuito in aiuto non alla matematica, ma alla medicina.
Cos’è Fold for Covid?
Il progetto Fold for Covid mira a semplificare l’offerta di capacità di elaborazione non utilizzate per supportare la ricerca COVID-19 con pochi semplici passaggi. Questa attività contribuisce al progetto Rosetta@Home, guidato dal Baker Laboratory dell’Università di Washington, che utilizza il calcolo distribuito per aiutare scienziati e medici a trovare potenziali trattamenti per COVID-19.
I tuoi contributi aiutano i ricercatori a cercare proteine che si legano alla famosa proteina “spike” su COVID-19. Trovando queste proteine leganti, i medici sperano di sviluppare farmaci che impediscano al virus di entrare nelle cellule sane.
Se hai un computer di riserva o un computer single board a a disposizione, puoi unirti alla ricerca!
Come funziona?
Sia il progetto Folding@home che il progetto Rosetta@home consentono alle persone di “donare” la potenza di calcolo del proprio PC o laptop locale per eseguire calcoli scientifici e lavori di simulazione quando non li utilizzano per le proprie attività. Una piccola unità di lavoro viene installata sulla macchina di un utente, quindi il proprietario del progetto può inviare il lavoro alla macchina dell’utente per essere elaborato localmente.
Una volta che l’attività è stata completata, l’unità di lavoro viene restituita di nuovo ai medici e agli scienziati che gestiscono il progetto per l’analisi. Ciò consente agli scienziati di sfruttare un’enorme quantità di capacità di calcolo di riserva da tutto il mondo per eseguire gratuitamente grandi moli di calcolo.
La versione per Arm64 è stata sviluppata (come solitamente avviene in questi casi) da un gruppo di appassionati di ARM. Il Baker Lab lo ha testato per circa una settimana nel suo ramo di stadiazione chiamato Ralph (Rosetta ALPHa), e durante quel periodo sono stati eseguiti sia carichi di lavoro di prova che simulazioni di proteine spike del COVID-19 sui dispositivi Arm64, per aiutare a convalidare il test scientifico sui risultati generati. Una volta che il Baker Lab ha esaminato l’output delle simulazioni e ne è stata verificata l’accuratezza, gli ingegneri hanno inviato il codice in produzione su Rosetta, consentendo alle unità di lavoro di fluire verso i dispositivi alimentati da Arm.
Il team Hardware Hacker di Balena ha poi contribuito ad automatizzare e containerizzare il processo di installazione necessario per il software client (noto come BOINC) e i metadati necessari per il collegamento al progetto Rosetta@Home.
Come si installa?
Il processo di installazione e configurazione per le macchine ARM è particolarmente semplice:
- Collegarsi al sito https://foldforcovid.io/
- Scegliere il SBC sul quale si desidera lavorare
- Se si desidera lavorare in wireless, inserire SSID e password della propria rete per l’autoconfigurazione (i dati non saranno registrati)
- Scaricare su disco fisso il file immagine relativo al proprio sistema (Raspberry Pi o Jetson Nano)
- Scaricare il software Balena Etcher relativo al proprop S.O. per creare immagini su scheda SD
- Lanciare Balena Etcher, inserire una scheda microSD da almeno 16GB e selezionare il file appena scaricato
- Al termine del caricamento (il sistema richide circa 200 MB di spazio) inserire la microSD card nel proprio sistema e farlo partire
- Collegarsi al SBC attraverso il link http://foldforcovid.local/
Il processo è interamente automatizzato, non richiede supervisione, monitor, tastiera o mouse. Non appena il server avrà a disposizione una workunit (WU), lo scheduler la acquisirà ed inizierà a lavorarci. Una workunit su un Raspberry Pi richiede meno di 17 ore per essere eseguita, e se si dispone di memoria sufficiente, è possibile lavorare su più WU in parallelo, grazie alle caratteristiche multicore della CPU ARM.
Al termine dell’elaborazione la WU risultante sara inviata al server, ed il nostro sistema tornerà pronto per le successive elaborazioni.
P.S.: Esiste la possibilità che il server centrale si trovi momentaneamente privo di workunit da inviare al client. In tal caso lo scheduler del client provvederà automaticamente a ciclare una richiesta ogni 3 ore. A livello di statistiche, una workunit vale circa 66 crediti: questo significa che un PI con 4 cores utilizzati e memoria sufficiente è in grado di mantenere un throughput teorico di circa 800 crediti al giorno.
Considerazioni finali
Come dicevamo all’inizio, il Raspberry PI ed il Jetson Nano sono SBC in grado di garantire piccole soddisfazioni a chi lavora con il calcolo distribuito, specialmente se dispone di diversi box.
Vedremo prossimamente altre interessanti applicazioni nel campo della matematica, della fisica e della chimica. Magari applicazioni che sfruttano le caratteristiche di calcolo parallelo CUDA del Jetson Nano per velocizzare le operazioni.