Politecnico di Torino - Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY

+39 011 090 6100 info@tech-share.it

PROCEDIMENTO PER LA GENERAZIONE AUTOMATICA DI CODICE DI CALCOLO PARALLELO

calcolo parallelometriche di complessitàproduttivitàprogrammazione parallela

Introduzione

Procedimento per la generazione automatica di codice di calcolo parallelo ad alto livello di astrazione eseguibile su elaboratori elettronici aventi architetture eterogenee multi-core o many-core o ibride.

Caratteristiche Tecniche

Lo presente invenzione mira a risolvere i problemi legati alla programmazione parallela multi-architettura. Questa utilizza un procedimento innovativo e automatico per la generazione di codice parallelo eseguibile ad elevate prestazioni su elaboratori elettronici con architettura multi-core e many-core. Tale codice viene generato automaticamente a partire da codice sviluppato secondo le strutture tipicamente utilizzate per la scrittura sequenziale. L’utilizzo di tale procedimento riduce considerevolmente metriche oggettive generalmente adottate per la misura della complessità dei programmi e dello sforzo per scriverli. Infine, il procedimento permette di ottimizzare il codice parallelo generato in base all’architettura dell’elaboratore target, senza alterare il sorgente ma intervenendo su parametri ortogonali al codice applicativo.

Possibili Applicazioni

  • Computer vision;
  • Guida autonoma;
  • Elaborazione big-data;
  • Robotica;
  • Modellazione di fenomeni fisici (es.: modelli meccanici, meteorologia);
  • Fisica;
  • Giochi;
  • Grafica avanzata;
  • Elaborazione di contenuti multimediali;
  • App.

Vantaggi

I vantaggi più significativi legati a quest’invenzione sono:

  • Agevolazione del compito del programmatore, generando autonomamente il codice parallelo;
  • Considerevole riduzione delle metriche oggettive generalmente adottate per la misura della complessità dei programmi e dello sforzo per scriverli, quali “lines of code” (LOC), “Halstead’s mental discriminations” [HMD] e “McCabe’s total cyclomatic complexity” [TCYC];
  • Facile applicabilità anche su macchine aventi architetture differenti;
  • Disaccoppiamento della semantica applicativa dalla codifica parallela ad alte prestazioni del codice che viene eseguito da una architettura multi-core (CPU) o many-core (GPU);
  • Completo disaccoppiamento tra la regolazione di tali parametri di parallelizzazione e l’effettiva espressione della computazione;
  • Non alterazione del codice scritto dal programmatore.