Mit Version 4.5 haben die Macher hinter der Programmierschnittstelle Open MP eine neue Iteration ihrer Spezifikation vorgestellt. Die unterstützt Geräte besser und parallelisiert Loops. In GCC 6.0 sind die Features fast komplett implementiert.
Verbessert wurde laut Ankündigung vor allem der Gerätesupport. Open MP bringt nun einen Mechanismus für das Mappen unstrukturierter Daten, für asynchrone Code-Ausführungen sowie Runtime-Routinen für das Speichermanagement von Geräten mit. Letztere erlauben es, Speicher zu allozieren, zu kopieren und freizugeben.
Loops lassen sich nach der neuen Spezifikation parallelisieren, wobei Open MP die Abhängigkeiten berücksichtigt. Zugleich können Entwickler mit Open MP Loops in Tasks zerlegen, um zu verhindern, dass alle Threads die Schleifen ausführen müssen. Auch Reductions für C- und C++-Arrays führen die Entwickler ein und erfüllen damit einen häufig nachgefragten Featurewunsch.
Ein Hinweis-Mechanismus unterstützt Programmierer bei Fragen zur relativen Priorität von Aufgaben und zur bevorzugten Synchronisierungs-Implementierungen. Die Open-MP-4.5-Spezifikation beherrscht Thread-Affinity-Support – Laufzeitfunktionen können nun die Auswirkungen von Thread-Affinity-Clauses ermitteln. Nicht zuletzt unterstützt Open MP Fortran 2003 besser, weil User solche Programme parallelisieren können und kommt mit SIMD-Erweiterungen zurecht.
Während GCC 6.0 bereits die meisten Features der neuen Spezifikation unterstützt, landen diese nun allmählich auch in der Trunk-Version von Clang 4.8. Support in weiteren Compilern soll folgen, die komplette Spezifikation wartet in einem PDF.






