Unified Parallel C (UPC), a parallel extension of the C programming
language, is designed to support both of the common types of multiprocessor
systems: those with a common global address space (such as SMP)
and those with distributed memory.
UPC provides a simple shared memory model for parallel programming,
allowing data to be shared or distributed among a number of communicating
processors. Constructs are provided in the language to permit simple
declaration of shared data, distribute shared data across threads,
and synchronize access to shared data across threads. This model
promises significantly easier coding of parallel applications and
maximum performance across shared memory, distributed memory, and
hybrid systems.