it gb
it gb

Calcolo Parallelo

L’attività del gruppo di ricerca di calcolo parallelo  (alpha) è focalizzata sui modelli, i linguaggi e gli strumenti per la programmazione parallela. Per molti anni il calcolo parallelo è stato un argomento di abbastanza di nicchia, assorbito quasi interamente dalle necessità del calcolo ad alte prestazioni (HPC) dove le “prestazioni” sono appunto la ragione d’essere. Prestazioni spesso raggiunte con strumenti di sviluppo molto vicini all’hardware in modo lasciare al programmatore esperto la possibilità di sfruttare configurare e mettere a punto le applicazioni per ogni specifica macchina. Un lavoro artigianale di altissima specializzazione ed altissimo costo. In questo ambito, la complessità intrinseca dello sviluppo del codice parallelo mediante approcci molto vicini alla macchina è stato tradizionalmente considerato il prezzo da pagare per le prestazioni di poche applicazioni in esecuzione su poche macchine.

Ma cambia ciò che è superficiale e anche ciò che è profondo, cambia il modo di pensare, cambia tutto in questo mondo [cit]. Oggi - poco dopo - è solo impossibile trovare un sistema di calcolo che non sia parallelo, dal server al telefonino. Tutti questi sistemi eseguono programmi paralleli e devono essere programmati. Per tutti questi sistemi, la correttezza, la produttività, il costo e il tempo di sviluppo sono aspetti di uguale se non maggiore importanza delle prestazioni assolute. Aspetti di interesse sono  la portabilità delle applicazioni su piattaforme diverse, anche eterogenee (multi-core, GPU, cluster, cloud, FPGA, …), la portabilità delle prestazioni del codice parallelo, la progettazione del codice parallelo secondo un modello di costo industriale. Cioè che permetta la produzione di applicazioni di buona qualità a un costo per unità accettabile.

Nel gruppo alpha cerchiamo di inventare, sviluppare e testare le astrazioni e gli artefatti in grado di semplificare lo sviluppo dei programmi paralleli. Cioè, ci occupiamo di modelli di programmazione.

  • Un linguaggio di programmazione non è un modello di programmazione.
  • Una libreria C++ o Java per sincronizzazioni o una libreria per scambio di messaggi non è un modello di programmazione, una libreria non è un modello di programmazione.
  • Un ambiente di sviluppo non è un modello di programmazione.
  • I modelli a scambio-di-messaggi e a memoria condivisa sono modelli di programmazione, anche se sono molto a basso livello. Google MapReduce anche assomigli a un modello di programmazione per sistemi distribuiti, anche se la sua efficacia è un po sopravalutata.
  • Per fare un esempio preso da un altra area di ricerca, un modello di programmazione ha a che fare con il meccanismo stesso di ereditarietà di un linguaggio OO più che con il fatto che sia declinato in C++ o Java.

Siamo particolarmente interessati ai modelli di programmazione basati sui dati (data-centric).

Argomenti di Ricerca

  •  Strumenti e ambienti di sviluppo ad alto livello di astrazione per il calcolo parallelo.
    • Modelli di programmazione paralleli
    • Modelli di programmazione e paradigmi "data-centric"
    • Ambienti di programmazione per multi-core, many-core (GPU, Phi, etc) ed eterogenei
    • Algoritmi non bloccanti, algoritmi lock-less e lock-free
    • Modelli di programmazione parallela e tool per computazioni distribuite: zero-copy messaging
  • Applicazioni HPC: biologia dei sistemi, NGS, fisica delle particelle, processamento di immagini, …
  • Autonomic computing. Modelli di performance e QoS per Grid Computing. 
  • Cloud Computing. Virtualizzazione.
  • Aspetti fondazionali e calcoli per la concorrenza.

Perché il gruppo si chiama “alpha”?

\large \alpha f: x \equiv x = \phi \to \phi;\qquad x = \langle x_1,\ldots , x_n \rangle \to \langle f:x_1, \ldots, f:x_n \rangle ; \bot

alpha è l'operatore ApplyToAll del FP di Backus (la Map di MapReduce). Più informazioni si possono trovare nell'articolo di J. Backus’ ACM 1977  Turing Award Lecture. Oppure potete semplicemente considerare alpha il punto da cui tutto inizia.

News

Contatti

Prof. Marco Aldinucci

+ 39 011 6706852

bH9t5qyDzXhEg3kdAQR]#[A2masjZNbEg8SlcQ@8J