PGI-Compiler 17.7 bietet OpenMP 4.5 und CUDA Unified Memory

Nvidia hat den Compiler zudem für die Tesla-V100-GPU zugeschnitten. Der einheitliche Speicherzugriff funktioniert zusätzlich auch auf der Pascal-Architektur. Außerdem können C++-Entwickler nun generalisierte Lambdas in OpenACC-Blöcken verwenden.

In Pocket speichern vorlesen Druckansicht
PGI-Compiler 17.7 nutzt OpenMP 4.5 und CUDA Undified Memory
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Die seit 2013 zu Nvidia gehörenden The Portland Group beziehungsweise PGI hat Version 17.7 ihrer Compiler-Suite veröffentlicht. Sie ist erwartungsgemäß auf Nvidias jüngste GPU-Generation Volta zugeschnitten, die in der Tesla V100 sitzt. Zahlreiche Verbesserungen sind besonders auf OpenACC (Open Accelerators) ausgelegt, einen Standard den PGI beziehungsweise Nvidia gemeinsam mit Cray und CAPS entwickelt hat und der das parallele Programmieren auf heterogenen GPU/CPU-Systemen vereinfachen soll.

Auf aktuellen Volta-GPUs und der Vorgängergeneration Pascal können Entwickler nun für OpenACC den gemeinsam verwalteten Speicherberich von CPU und GPU, den Unified Memory nutzen, den CUDA (Compute Unified Device Architecture) seit Version 6 bietet, aber erst seit Version 8 auf GPU- und CPU-Speicher verteilt. Damit kümmert sich das System um den physischen Speicherzugriff auf den System- und GPU-Speicher, und die Entwickler verwenden schlicht den gemeinsamen Bereich. Auf CPU-Seite funktioniert das Zusammenspiel sowohl mit x86-64 als auch mit OpenPOWER-Systemen. Letztere unterstützt der PGI-Compiler seit Ende 2016.

Sowohl die Fortran als auch die C- und C++-Compiler der PGI-Suite bringen zudem eine erste Unterstützung für die Syntax und Features von OpenMP 4.5 (Open Multi-Processing). Der Standard zur Shared-Memory-Programmierung auf Multiprozessorsystemen lässt sich zunächst nur unter Linux auf x86-64 und OpenPOWER-Systemen nutzen, wobei ersteres zusätzlich ein LLVM-Paket erfordert.

Der LLVM/x86-64 Code Generator ist derzeit nur als Beta verfügbar und funktioniert sowohl mit OpenACC als auch mit CUDA Fortran. Das Paket enthält wohl alle benötigten Komponenten von LLVM 4.0 und lässt sich parallel zu den PGI-Compilern 17.7 verwenden. C++-Entwickler finden einige Neuerungen aus C++17. Außerdem können sie die in C++14 eingeführten generalisierten Lambda-Ausdrücke mit dem auto-Typ in OpenACC-Bereichen verwenden. Fortran-Entwickler finden eine automatische Deep-Copy-Funktion zum Kopieren verschachtelter Datenstrukturen vom CPU-Host auf den GPU-Gerätespeicher.

Weitere Funktionen, unter anderem zum verbesserten Profiler und dem Zusammenspiel mit der cuSOLVER-Bibliothek, lassen sich der Ankündigungsseite entnehmen. (rme)