I modelli di programmazione si preparano per il calcolo su scala exa
Immaginatevi 100 milioni di operazioni effettuate in parallelo su un singolo computer, o 50 milioni di computer portatili connessi tra loro con una rete super veloce. Ecco, questo è il calcolo su scala exa. Anche se gli attuali computer possono essere programmati con strumenti come Java o Python, è necessario un software speciale per consentire lo scambio di dati tra tutte queste operazioni o computer portatili. Ed è qui che entrano in scena PGAS e la comunicazione a scambio di messaggi. “Riteniamo che questi due programmi software saranno fondamentali per rendere possibile questo scambio di dati, dal momento che stanno già funzionando molto bene sui più grandi supercomputer di oggi” dice Stefano Markidis, direttore del progetto EPIGRAM e ricercatore in calcolo ad alte prestazioni alla KTH, in Svezia. Far funzionare questi modelli di programmazione su computer su scala exa, comunque, è un’altra storia. La quantità di memoria necessaria per il processo di memorizzazione sarebbe immensamente grande, al punto che lo spazio occupato diventerebbe di sicuro un grave problema. Fare in modo che questi processi funzionino insieme o in sincronizzazione richiederebbe degli algoritmi molto più avanzati rispetto a quelli attualmente disponibili. Allo stesso tempo, un sistema singolo che mette assieme i modelli di programmazione esistenti non sarebbe, ad oggi, in grado di funzionare efficientemente. I ricercatori hanno affrontato queste sfide chiave, ovvero parallelismo estremo e interoperabilità, nell’ambito di un singolo progetto chiamato EPIGRAM (Exascale Programming Models). Il progetto si è concentrato su comunicazione a scambio di messaggi e PGAS, e più nello specifico sul miglioramento di due dei loro sistemi di programmazione associati, MPI e GPI. “Le applicazioni scientifiche presentano spesso diversi punti di sincronizzazione dove i computer portatili più veloci aspettano che quelli più lenti si mettano al passo. Questo funziona con pochi computer, ma quando ve ne sono 50 milioni, è necessario iniziare a prendere in considerazione la sincronizzazione degli algoritmi. Questo è ciò che abbiamo fatto nell’ambito di EPIGRAM. Noi abbiamo migliorato le prestazioni delle operazioni di comunicazione su un numero molto grande di processi diminuendo il loro consumo di memoria, migliorando le operazioni collettive e introducendo emergenti modelli di elaborazione dati,” spiega Markidis. Essi hanno anche aumentato l’interoperabilità di MPI e GPI integrandoli in un’applicazione MPI chiamata EMPI4Re. Dalla meteorologia spaziale alla fluidodinamica Una volta sviluppati, i concetti di EPIGRAM hanno dovuto essere testati in applicazioni su grande scala con potenziale su scala exa. Il consorzio ha optato per la meteorologia spaziale e la fluidodinamica con lo sviluppo di iPIC3D, un codice Particle-in-Cell per le simulazioni della fisica spaziale, e un kernel per Nek5000, un codice per la fluidodinamica computazionale (CFD). Entrambe le applicazioni sono in grado di aumentare fino a raggiungere 1 milione di core e dipendono rispettivamente da C/C++ e Fortran, i linguaggi di programmazione più usati nel calcolo a elevate prestazioni. “Siamo estremamente soddisfatti delle nostre applicazioni pilota,” afferma Markidis. “iPIC3D ha migliorato di tre volte le prestazioni in confronto alla precedente implementazione, e siamo riusciti a sviluppare un nuovo kernel di comunicazione Nek5000 semplificato che può essere usato da altri progetti.” Due progetti HPC nell’ambito di Orizzonte 2020 stanno già sfruttando il lavoro fatto in EPIGRAM: il progetto INTERTWINE, che sviluppa ulteriormente il lavoro sull’interoperabilità di EPIGRAM e ha iPIC3D quale applicazione pilota, e il progetto EXAFLOW che usa Nek5000 e ha adottato il nuovo kernel di comunicazione di EPIGRAM Nek5000. “Noi vorremmo avere un progetto di approfondimento diretto nel prossimo futuro,” dice Markidis. “Ma nel frattempo, possiamo già vedere come il nostro lavoro su MPI sta producendo un impatto sugli sviluppatori dell’applicazione HPC. Noi abbiamo presentato le nostre idee a sviluppatori di applicazioni provenienti da differenti settori, e ci aspettiamo che alcuni dei nostri concetti, come un collettivo isomorfo, vengano raccolti e adottati dalla comunità nel prossimo futuro.” Il lavoro del progetto sulla standardizzazione è stato fondamentale per l’adozione di nuove funzioni MPI e GPI da parte delle persone che sviluppano codici applicativi per supercomputer. “Agli sviluppatori di applicazioni viene garantito che le nuove funzioni verranno implementate e verosimilmente non verranno modificate,” spiega Markidis. I concetti di EPIGRAM, che sono stati testati usando un microbenchmark, non solo velocizzano il tempo di esecuzione di varie operazioni MPI e GPI, ma riducono anche notevolmente la quantità di memoria necessaria per tali operazioni. Il progetto ha presentato le limitazioni di alcuni concetti in MPI, e ha prodotto un forte impatto sul lavoro degli implementatori GPI-2 grazie allo sviluppo di connessioni dinamiche scalabili.