Unified Parallel C
# Unified Parallel C

Unified Parallel C (UPC) è un'estensione del linguaggio di programmazione C sviluppato per ottenere elevate prestazioni di calcolo in macchine basate su parallelismo massivo comprese le macchine con indirizzamento della memoria globale tipo quelle SMP o quella basate su architettura NUMA e per le macchine a memoria distribuita come i cluster. Il programmatore vede una singola memoria condivisa da tutto il sistema, anche se ogni variabile è fisicamente assegnata a un singolo processore. UPC utilizza un modello di elaborazione Single Program Multiple Data (SPMD), in questo modello di programmazione il parallelismo del sistema è deciso all'avvio dei programma, tipicamente a ogni processore viene assegnato un singolo Thread.

Per permettere l'esplicitazione del parallelismo IPC estende il C ISO 99 con i seguenti costruttori:

* Un modello di esecuzione a parallelismo esplicito
* Uno spazio di memoria condivisa
* Primitive di sincronizzazione e un modello della coerenza della memoria
* Primitive di gestione della memoria.

L'UPC si è evoluto dall'esperienza del gruppo di programmatori che utilizzando altre estensioni del C per la gestione delle macchine parallele come lo Split-X e il Parallel C Prepocessor (PCP) ne saggiarono le limitazioni e decisero di superarle. L'UPC non raccoglie tutte le funzionalità dei precedenti linguaggi ma piuttosto cerca di raccogliere le caratteristiche migliori dei linguaggi in una struttura coerente e solida. UPC combina la semplicità di programmare un sistema a memoria condivisa che consente una gestione diretta dei dati con le prestazioni di un sistema basato sul passaggio di messaggi.

