Microsoft bohrt C++ für Parallelprogrammierung auf

Mit der C++-Sprachbibliothek AMP (Accelerated Massive Parallelism) sollen Entwickler künftig jede Art von Rechnerressource im System ansprechen und Anweisungen auf CPUs, GPUs und diskreten Grafikprozessoren verteilen können.

In Pocket speichern vorlesen Druckansicht 62 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Erich Bonnert

Herb Sutter, Microsofts verantwortlicher Softwarearchitekt für native Programmiersprachen, hat auf AMDs Fusion Developer Summit eine C++-Bibliothek vorgestellt, die massiv-parallele Rechnerarchitekturen ausnutzen soll. Mit dem Sprachkonstrukt C++ AMP (Accelerated Massive Parallelism) können Entwickler künftig jede Art von Rechnerressource im System ansprechen und Anweisungen auf CPUs, GPUs und diskreten Grafikprozessoren verteilen. Neu kompiliert nutzen Programme alle Rechnerressourcen im System für parallele Datenanweisungen aus. Stufenweise soll AMP später auch auf virtuelle Maschinen auf anderen Rechnern und Cloud-Architekturen erweitert werden, sagte Sutter.

Der Konzern beabsichtigt, die Bibliothek als offene Spezifikation zur Verfügung zu stellen, und wird sie dem Spezifikationsorganisation ANSI zur Standardisierung in C++ vorschlagen. Microsofts Entwicklungsumgebung für C++-Entwickler Visual C++ soll AMP ab der nächsten Version unterstützen, kündigte Sutter an. Und für C# und .NET sind ebenfalls AMP-Erweiterungen vorgesehen.

Auf der Fusion-Konferenz führte Sutter auf einem APU-System von AMD eine mit C++ AMP programmierte 3-D-Visualisierung vor, bei der Tausende frei schwebender Lichtpunkte sich gegenseitig anstoßen und interagieren. Die Menge der berechneten Objekte lässt sich offenbar millionenfach steigern. Durch An- und Abschalten von GPU und diskreter Grafikkarte machte die Anwendung deutlich, dass die auf hunderte von GFlops steigende Arbeitslast nahtlos auf die zusätzlichen Rechenkerne verteilt wird und die Frame-Rate der Bilder dabei sogar noch steigt.

So stellt sich Microsoft die Evolution der Hardware vor: CPU- und Grafik-Cores arbeiten innerhalb eines Systems immer enger zusammenarbeiten und nutzen kohärente Speicherressourcen; gleichzeitig werden, virtuelle Architekturen oder Cloud-Systeme lose gekoppelt, um ihre heterogenen Ressourcen ebenfalls parallel zu programmieren.

Laut Sutter, der auch der Vorsitzende des Standardisierungskomitees für die noch in diesem Jahr zu erwartende nächste Sprachversion C++ 2011 ist, greift die neue Bibliothek auf die DirectCompute API von Microsofts DirectX11 zurück. In den nächsten Wochen will Daniel Moth, der Senior Program Manager für Parallel Computing bei den Redmondern ist, häppchenweise das neue Sprachkonstrukt vorstellen. Auch kündigte S. "Soma" Somasegar, Senior Vice President von Microsofts Entwicklersparte, weitere bald folgende Ergänzungen im Visual C++ Team Blog und auf Channel 9 an. [Update: Mittlerweile hat Microsoft die Live-Aufzeichnung von Sutters Vortrag online gestellt, und auch Sutter hat sich noch mal zu den Beweggründen geäußert .]

Weitere das Thema Parallelität angehende Techniken, die die C++-Entwicklungsumgebung enthält, sind die Parallel Patterns Library (PPL), Asynchronous Agents Library, Task Scheduler und Resource Manager. (ane)