Unified Parallel C
| Unified Parallel C (UPC) | |
|---|---|
| Basisdaten | |
| Paradigmen: | imperativ, strukturiert, parallel |
| Erscheinungsjahr: | 1999 |
| Entwickler: | UPC Consortium |
| Aktuelle Version: | 1.3 (November 2013) |
| Wichtige Implementierungen: | BUPC, GCC-UPC, IBM XL, HP, MuPC, Cray |
| Beeinflusst von: | C, AC, Split-C, Parallel C Preprocessor |
| Betriebssystem: | plattformübergreifend |
| https://upc-lang.org/ | |
Unified Parallel C (UPC) ist eine parallele Erweiterung der Programmiersprache C für den Einsatz in Hochleistungsrechnern. Das zugrundeliegende Programmiermodell ist SPMD und als Speichermodell wird ein partitionierter globaler Adressraum (PGAS) verwendet.
Überblick
Die UPC-Spracherweiterungen wurden durch das UPC Consortium im Jahr 1999 spezifiziert. Ziele bei der Entwicklung von UPC waren, einen effizienten Zugriff auf die Rechenressourcen eines Parallelrechners zu ermöglichen und 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 genutzt werden kann.
Ein UPC-Programm wird durch mehrere Threads parallel in einem gemeinsamen globalen Adressraum ausgeführt. Die Anzahl der Threads wird entweder beim Kompilieren oder beim Start des UPC-Programms 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-Programms 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 dieselben 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.3 (PDF; 1,2 MB) – offizieller Standard (englisch)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.