Partitioned Global Address Space

Partitioned Global Address Space (PGAS) ist ein Programmiermodell speziell für Mehrprozessorsysteme und massiv parallele Rechner. Dabei wird der globale Adressbereich des Arbeitsspeichers logisch unterteilt. Jeder Prozessor bekommt jeweils einen dieser Adressbereiche als lokalen Speicher zugeteilt. Trotzdem können alle Prozessoren auf jede Speicherzelle zugreifen, wobei auf den lokalen Speicher mit wesentlich höherer Geschwindigkeit zugegriffen werden kann als auf den von anderen Prozessoren.

Ein wichtiger Vorteil der PGAS-Sprachen ist die einfach formulierbare Möglichkeit, große Datenmengen, die von einem einzelnen Prozessor nicht mehr gespeichert werden können, in den verteilten Speichern vieler Prozessoren unterzubringen, ohne dass die einheitliche Datenbeschreibung verloren geht.

Der Programmierer steht vor der Aufgabe, maximale Leistung des Programms durch geeignete Definition und Zuordnung der Programmvariablen zu erzielen. Dabei ist insbesondere eine gleichmäßige Lastverteilung auf alle beteiligten Prozessoren zu achten. Ein nur mit PGAS-Mitteln geschriebenes Programm ist manchmal sehr schwer zu überschauen, da die Zuordnung der Variablen im Programm nicht explizit auftaucht, sondern nur implizit nach festgelegten Regeln erfolgt. Deshalb gibt es in PGAS-Sprachen zusätzliche Möglichkeiten der Synchronisierung der Prozesse.

Eigenschaften

Ein PGAS-System hat folgende Eigenschaften:

Programmiersprachen

Alle PGAS-Programmiersprachen enthalten die oben genannten Eigenschaften, auch wenn diese unterschiedlich umgesetzt wurden. Jede Sprache erlaubt es zwischen privatem und geteiltem Speicher zu unterscheiden und außerdem die Assoziation der geteilten Speicherzellen zu bestimmen. Manche PGAS-Sprachen bieten verteilte Schleifen oder spezielle Syntax an, um auf entfernte Daten zuzugreifen.

Die Prozessoren führen normale Threads aus. Die Synchronisierung beim Variablenzugriff erfolgt implizit; explizite Synchronisierung durch den Programmierer ist möglich.

Einzelnachweise

  1. 1 2 3 George Almasi: PGAS (Partitioned Global Address Space) Languages. In: Encyclopedia of Parallel Computing. Springer US, 2011, S. 1539–1545, doi:10.1007/978-0-387-09766-4_2091.
  2. ↑ Thomas Rauber, Gudula Rünger: Parallele Programmierung. 3. Auflage. Springer, Berlin Heidelberg 2012, ISBN 978-3-642-13604-7, S. 375–386.
  3. ↑ Kathy Yelick, Luigi Semenzato, Geoff Pike et al.: Titanium: A High-Performance Java Dialect. In: Concurrency: Practice and Experience. Band 10, Nr. 11-13, 1998, S. 825–836, doi:10.1002/(SICI)1096-9128(199809/11)10:11/13<825::AID-CPE383>3.0.CO;2-H.
  4. ↑ GuyL., Jr. Steele, Eric Allen, David Chase et al.: Fortress (Sun HPCS Language). In: Encyclopedia of Parallel Computing. 2011, S. 718–735, doi:10.1007/978-0-387-09766-4_190.
  5. ↑ David Callahan, Bradford L. Chamberlain, Hans P. Zima: David Callahan, Bradford L. Chamberlain, Hans P. Zima. In: Ninth International Workshop on High-Level Parallel Programming Models and Supportive Environments. 2004, S. 52--60, doi:10.1109/HIPS.2004.1299190.
  6. ↑ Vijay Saraswat, Bard Bloom, Igor Peshansky, Olivier Tardieu, David Grove: X10 Language Specification Version 2.3. 2013, S. 1–282 ( [PDF; 1,6 MB; abgerufen am 28. August 2013]).