Possiamo creare un ambiente di programmazione che non richieda che ogni ricercatore sia un informatico? Attestazione:Unsplash/Markus Spiske
Decenni fa, i computer erano costosi, complesso e raro.
La rivoluzione del personal computer ha cambiato tutto, fornendo alla maggior parte di noi gadget facilmente accessibili ed economici che erano più piccoli, più veloce e più facile da usare. Anche gli scienziati ne hanno beneficiato. Hanno sviluppato tecniche computerizzate per studiare il funzionamento interno delle cellule, le orbite dei pianeti intorno a stelle lontane e altri fenomeni un tempo ben oltre le loro capacità di osservazione.
Ma per i ricercatori all'avanguardia, è emersa una certa ironia:strumenti nuovi e sofisticati stanno iniziando a produrre così tanti dati che sono necessari supercomputer per analizzare i risultati sperimentali. E gli scienziati che cercano di analizzare set di dati così enormi spesso faticano a padroneggiare la complessità del software necessario per programmare l'hardware.
Entra Reggente, un nuovo linguaggio di programmazione sviluppato da un gruppo guidato dallo scienziato informatico di Stanford Alex Aiken. Tra l'altro, Regent rende i supercomputer più facili da usare. "Volevamo creare un ambiente di programmazione che non richiedesse che ogni ricercatore fosse un informatico, "dice Aiken, l'Alcatel-Lucent Professor in Communications and Networking.
Regent aiuta a risolvere una delle più grandi sfide del supercalcolo:i supercomputer di oggi sono molto più complessi che mai, e i linguaggi di programmazione esistenti hanno faticato a tenere il passo. Un supercomputer può apparire nell'immaginario collettivo come una macchina gigantesca, ma in realtà è una serie di migliaia di microprocessori che lavorano insieme. Gli scienziati in genere programmano questi array utilizzando C++, un linguaggio software inventato circa 40 anni fa, un eone nel tempo dell'informatica. Allora, il microprocessore predominante era l'unità centrale di elaborazione, o CPU, il chip che ha lanciato la rivoluzione del PC. Le CPU risolvono rapidamente grandi problemi, un calcolo dopo l'altro, in quello che i programmatori chiamano un modo seriale.
Più recentemente, però, un secondo tipo di microprocessore è diventato importante per il supercalcolo:l'unità di elaborazione grafica, o GPU. Utilizzato per la prima volta per controllare milioni di pixel sugli schermi dei computer per migliorare la grafica dei videogiochi, Le GPU possono eseguire molti calcoli simili contemporaneamente, o in parallelo, come direbbero i programmatori. L'elaborazione parallela si è dimostrata estremamente utile in applicazioni come l'apprendimento automatico. C++ è stato aggiornato per stare al passo con queste e altre modifiche hardware. Sfortunatamente, l'accrescimento delle patch ha reso il linguaggio sempre più difficile da usare. Reggente, però, rende più facile per un programmatore di supercomputer fare cose come assegnare attività di elaborazione seriale alle CPU e attività di elaborazione parallela alle GPU.
Una volta che Regent ha inquadrato il programma a livello concettuale, le intenzioni del programmatore sono tradotte o, usare il termine tecnico, compilato, in un secondo livello software chiamato Legion, che anche Aiken ha sviluppato. Legion genera codice macchina:istruzioni precise che dirigono l'hardware del supercomputer su come eseguire il programma. La stretta integrazione tra Regent e Legion rende più facile per i programmatori prendere altre decisioni importanti; in particolare, dove memorizzare i dati che il supercomputer deve analizzare.
Elliott Slaughter, uno scienziato dello SLAC National Accelerator Laboratory che ha lavorato su Regent e Legion fin dal loro inizio, afferma che l'integrazione tra i due livelli consente ai programmatori di risparmiare tempo e denaro. I computer consumano energia, che ha un costo. Ma il costo energetico dello spostamento dei dati può essere 100 volte superiore al costo dell'esecuzione di calcoli su quei dati. Inoltre, i grandi esperimenti spesso si basano su strumenti che raccolgono enormi quantità di dati. Slaughter ha affermato che alcuni strumenti possono raccogliere dati equivalenti a 20 DVD video ogni secondo per esperimenti della durata di 15 minuti. Anche muovendosi alla velocità della luce sulle fibre ottiche, ottenere così tanti dati dallo strumento al supercomputer può creare ritardi che potrebbero ostacolare l'analisi. "Dove metti i dati risulta essere una delle decisioni più importanti che un programmatore prende, " Dice Slaughter. Regent e Legion risparmiano tempo e denaro dando al programmatore un controllo senza precedenti su dove archiviare i dati mentre sono in attesa di calcolo.
Regent si diffonderà? I ricercatori affermano che i nuovi linguaggi devono superare una grande inerzia. "Regent è un modo molto diverso di programmare, " Dice Aiken. "Ci vorrà del tempo prima che i ricercatori adottino la mentalità richiesta".
Ma a suo favore operano due fattori. Primo, l'hardware di supercalcolo continua a migliorare. Il Dipartimento dell'Energia degli Stati Uniti sta guidando gli sviluppi con il suo Exascale Computing Project, che mira a raggiungere un aumento di 50 volte della potenza supercomputazionale intorno al 2021. Il DOE sta supportando progetti software, compreso Reggente, per aiutare la programmazione a tenere il passo.
Inoltre, molti scienziati che vorrebbero utilizzare i supercomputer non hanno familiarità con gli strumenti attuali e sono diffidenti nei confronti della ripida curva di apprendimento necessaria per programmare grandi esperimenti. Anche i programmatori di supercomputer esperti possono trovare ingombrante il sistema attuale e chiedersi se non ci sia un modo migliore. "Parliamo regolarmente con scienziati che si rendono conto di quanto Regent renda loro la vita più facile, " ha detto Aiken.