Unified Parallel C
Unified Parallel C、UPC は大規模な並列計算機上での高性能計算向けにC言語を拡張して作られたプログラミング言語である。これには、共有大域アドレス空間(対称型マルチプロセッシング、NUMA)を伴うものと、クラスターなどの分散メモリーを伴うものが含まれる。プログラマーには共有された単一の区分化アドレス空間を割り当てられる。変数はどのプロセッサーからでも直接に読み書きできるが、いずれの変数も物理的にはどれかひとつのプロセッサーに関連づいている。UPC は SPMD モデルを使う。このモデルでは全ての並列性がプログラム実行開始時点で固定化される。大抵は一つのプロセッサーに一つのスレッドを割り当てられる。
並列性を表現するために、UPC は C99 を以下の機構について拡張してある。
明示的な並列実行モデル
共有アドレス空間
同期の基本動作とメモリー整合モデル
メモリー管理の基本動作
UPC 言語は並列性の機構について C99 を拡張してつくられた先行する3つの言語(AC、Split-C、Parallel C Preprocessor)で得られた知見をもとに進化させた言語である。UPC 言語はこれら3つの言語の上位言語ではないが、 それぞれの優れた特徴を抽出して作られた。UPC 言語には、共有メモリーパラダイムのプログラミング上の利点や、メッセージパッシングパラダイムによるデータレイアウトの制御と性能の制御に関するプログラミング上の利点も生かされている。