- Unified Parallel C
-
Unified Parallel C (UPC) Paradigmen: imperativ, strukturiert, parallel Erscheinungsjahr: 1999 Entwickler: UPC Consortium Aktuelle Version: 1.2 (31. Mai 2005) wichtige Implementierungen: BUPC, GCC-UPC, IBM XL, HP, MuPC, Cray Einflüsse: C, AC, Split-C, Parallel C Preprocessor Betriebssystem: plattformübergreifend http://upc.gwu.edu/ Unified Parallel C (UPC) ist eine parallele Erweiterung der Programmiersprache C für den Einsatz im Hochleistungsrechnern. Das zugrundeliegende Programmiermodell ist single-program multiple-data (SPMD) und als Speichermodell wird ein partitionierter globaler Adressraum (PGAS) verwendet.
Überblick
Die UPC Spracherweiterungen wurden durch das UPC Consortium im Jahr 1999 spezifiziert. Ziel bei der Entwicklung von UPC waren (1) einen effizienten Zugriff auf die Rechenresourcen eines Parallelrechners zu ermöglichen und (2) einen Standard für die explizite parallele Programmierung in C zu etablieren. Ein Hauptvorteil von UPC ist, dass der Anwendungsprogrammierer die Verteilung der Programmdaten direkt kontrollieren kann und somit Datenlokalität auf einer Vielzahl von Systemarchitekturen ausgenutzt werden kann.
Ein UPC Programm wird durch eine Menge von Threads parallel in einem gemeinsamen globalen Adressraum ausgeführt. Die Anzahl der Threads wird entweder beim Compilieren oder bei Start des UPC Programmes festgelegt und kann zur Laufzeit durch die vordefinierte Konstante THREADS abgefragt werden. Jeder Thread besitzt einen eigenen Adressraum, d.h. die Threads von UPC entsprechen nicht denen der Pthreads-Bibliothek.
Die Variablen eines UPC Programmes sind standardmäßig privat, d.h. jeder Thread erhält eine Kopie der Variablen die getrennt von anderen Threads gelesen und geschrieben werden kann. Variablen können jedoch auch als gemeinsam genutzt (shared) deklariert werden, so dass alle Threads gemeinsam auf eine einzige Kopie der Variablen zugreifen können. Gemeinsam genutzte Variablen besitzen immer eine Affinität zu einem bestimmten Thread, in dessen Adressraum sie gespeichert werden. Für gemeinsam genutzte Felder (shared arrays) kann eine Verteilung der Feldelemente auf die Threads spezifiziert werden, so dass unterschiedliche Feldelemente eine Affinität zu verschiedenen Threads besitzen.
Weblinks
- UPC Language Specifications V1.2 – offizieller Standard (englisch)
Wikimedia Foundation.