OpenACC 2.0 mit neuen Konzepten

Eine als final gekennzeichnete Version der OpenACC-2.0-Spezifikation steht auf der Website des offenen Programmierstandards für parallele Programmierung zum Download bereit.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Auf der Website des OpenACC-Standards für parallele Programmierung steht eine als final gekennzeichnete Version 2.0 des Spezifikationsdokuments bereit. Der offene Standard entstand unter Mitwirkung von Nvidia, Cray, der Portland Group (PGI) und CAPS und soll den Umgang mit heterogenen CPU-/GPU-Systemen erleichtern. OpenACC 1.0 wurde der Öffentlichkeit Ende 2011 vorgestellt.

Die Spezifikation beschreibt Compiler-Direktiven, Bibliotheksroutinen und Umgebungsvariablen, die die OpenACC-Programmierschnittstelle definieren. Über sie lassen sich Programme, die in C, C++ oder Fortran geschrieben wurden, von einer Host-CPU an einen angeschlossenen Beschleuniger übergeben. Codeteile, die beschleunigt werden sollen, lassen sich mit PRAGMA-Direktiven und zusätzlichen Funktionen auszeichnen, ähnlich wie in OpenMP, allerdings kann in OpenACC zusätzlich die GPU zum Einsatz kommen.

Neu sind in Version 2.0 der Spezifikation unter anderem eine Reihe von Konzepten wie Threads und einzelne beziehungsweise partitionierte Worker (single und partitioned), das Konstrukt atomic, vordefinierte Datenattribute und tile und auto für Schleifen. Darüber hinaus präzisierten die Entwickler das Verhalten von Anweisungen und ergänzten neue in einigen Direktiven. Beispielsweise lässt sich wait nun in parallel, kernel und update einsetzen, async in der wait-Direktive und link in declare. Außerdem ließ sich das Verhalten beim Umgang mit mehreren Host Threads festlegen. Die komplette Liste aller Änderungen ist im Spezifikationsdokument (PDF) unter Punkt 1.7 zu finden.

Für die Zukunft sind bereits Arbeitspunkte wie die volle Unterstützung für C- und C++-structs oder eine Standardschnittstelle für Profiler oder andere Werkzeuge zum Sammeln von Daten zur Laufzeit vorgesehen. Anwender sind aufgerufen, Feedback zu den ausstehenden oder eventuell notwendigen weitere Änderungen abzugeben, um einen sinnvollen Fortgang des Projekts zu fördern. (jul)