Open ACC: Code für CPUs und GPUs automatisch parallelisieren
Die Hardwarehersteller Cray und Nvidia sowie die Softwareentwickler PGI und Caps haben OpenACC vorgestellt. Damit soll ein offener Standard für die automatische Parallelisierung von Programmen auf CPUs wie GPUs entstehen.
Wer bisher parallelisierte Anwendungen für CPUs und GPUs schreiben musste, hatte dabei mit verschiedenen Entwicklungswerkzeugen zu tun. So stellte beispielsweise Intel viele Tools für CPUs zur Verfügung, die sich in IDEs einklinkten, die CUDA-Werkzeuge von Nvidia waren aber ebenfalls noch nötig.
Wo der Code dann genau landete, ob auf der CPU oder der GPU, war ebenfalls Sache des Entwicklers - das soll sich nun ändern. Mit OpenACC, das allgemein für "Beschleuniger" steht, und keine Abkürzung ist, soll der Compiler selbst vorschlagen, wo sich Code durch Einsatz von GPUs optimieren lässt.
Die Compiler dafür, die die Portland Group (PGI) und Cray im ersten Quartal 2012 vorstellen wollen, sollen dabei in den Code nach einer ersten Komplierung "Hints" einfügen. Werden sie vom Programmierer bestätigt, soll der Compiler selbsttätig die Parallelisierung vornehmen.
Das klingt ein bisschen wie Zauberei, ist aber nur das Ergebnis der Integration von Schnittstellen wie Nvidias CUDA und dessen Performance-Primitives in die Compiler. Viele Standardaufgaben wie eine FFT beherrschen die CUDA-Bibliotheken schon lange - nur mussten diese Funktionen bisher von Hand und als für die GPU gedacht gekennzeichnet in Programme eingebaut werden.
Der GPU-Hersteller ist auch die treibende Kraft hinter OpenACC. Wie Nvidias CUDA, das sich in C oder Fortran programmieren lässt, sollen die OpenACC-Compiler diese beiden Sprachen unterstützen. Eine Koexistenz mit OpenCL, das als etablierter Standard ebenfalls CPUs und GPUs unterstützt, ist laut der FAQ des Gremiums möglich, aber noch nicht umgesetzt.
Doppelt so schnell oder Geld zurück
Die Performance-Versprechen sind gegenüber den zigfachen Beschleunigungen, die Nvidia gerne für den Einsatz von GPUs angibt, bisher noch moderat. Die ersten 1000 Entwickler sollen das Geld für die OpenACC-Compiler zurückerhalten, wenn sie die Geschwindigkeit ihrer Anwendungen nicht in vier Wochen verdoppeln können.
Da Ziel von OpenACC ist über die vereinfachte Programmierung hinaus auch portabler Code, der einmal erstellt wird und dann je nach System CPUs oder GPUs nutzt. Spannend bleibt bei diesem Ansatz, ob sich auch die anderen Hersteller geeigneter Hardware an der Initiative beteiligen - AMD und Intel haben sich dazu bisher noch nicht geäußert.
omg, ist doch klar: nur bei OpenACC ist das automatische "Optimieren" möglich (bei...
Vielleicht meinte der Redakteur, dass es kein Akronym ist?