AMD hat AOMP 17.0-1 als neueste Version dieses Open-Source-Compilers veröffentlicht, der sich auf die Bereitstellung der neuesten OpenMP-Offloading-Unterstützung für Radeon-und Instinct-Beschleunigerprodukte konzentriert.
AOMP ist eine Reihe von Patches, die auf dem neuesten LLVM/Clang-Upstream-Status bereitgestellt werden. Die AMD-Ingenieure arbeiten weiterhin daran, ihre verschiedenen Verbesserungen für LLVM vorzuladen, während für diejenigen, die die Spitzentechnologie wünschen, der beste Support AOMP bietet, um die derzeit besten OpenMP-Gerätefunktionen zu nutzen.
AOMP 17.0-1 basiert auf dem Stand von Upstream-LLVM/Clang von Anfang dieses Monats und wurde mit AMDs ROCm 5.4.4-Quellen erstellt. Bemerkenswert bei diesem Update ist die standardmäßige Umstellung auf das Plug-in der nächsten Generation, das wiederum zu erheblichen Leistungsverbesserungen bei OpenMP führen sollte.
In der Veröffentlichungsankündigung wird Folgendes erwähnt Änderungen für AOMP 17.0-1:
-Wechseln Sie standardmäßig zum Nextgen-Plugin. Dies hat erhebliche Leistungsverbesserungen gezeigt. Um zum alten Plugin zurückzukehren, setzen Sie LIBOMPTARGET_NEXTGEN_PLUGINS=OFF.
-Wechseln Sie von hostrpc zu hostexec. hostexec ist eine signifikante Neufassung von hostrpc. Das Gerät hostexec_invoke ist jetzt in OpenMP geschrieben, um es auf andere Plattformen portieren zu können. Die Namen des Wrappers (Stub) zum Ausführen einer Hostfunktion wurden in hostexec() und hostexec_() geändert. hostexec verwendet auch eine globale Variable, um den Transfer-Payload-Puffer anstelle der impliziten AMD-Kernel-Argumente zu finden. Dies unterstützt die Portierbarkeit von hostexec, printf und fprintf auf andere Plattformen. Die Aktualisierung auf dieses globale Gerät erfolgt mit globalen Variablendiensten im Nextgen-Plugin.
-Ein Beispiel für die Verwendung von hostexec zum Ausführen von MPI_Send und MPI_Recv in einer Zielregion wird gegeben. Dieses Beispiel zeigt, wie Bibliotheksbesitzer eine zusätzliche Headerdatei erstellen können, um eine transparente Hostausführung ausgewählter Bibliotheksfunktionen innerhalb einer OpenMP-Zielregion mit derselben Hostschnittstelle zu ermöglichen. Dadurch entfällt die Notwendigkeit von Quellenänderungen im Benutzercode, wenn eine Hostausführung von einer Zielregion gewünscht wird. Vor hostexec müssten Benutzer normalerweise ihre Zielregion beenden, eine Nur-Host-Funktion ausführen und dann eine andere Zielregion starten. Diese Funktion erhöht die Allzweck-Computing-Fähigkeiten von OpenMP auf GPGPU-Plattformen erheblich.
-Die OMPT-Zielunterstützung ist mit dem Nextgen-Plug-in unvollständig. Um OMPT zu verwenden, setzen Sie die Umgebungsvariable LIBOMPTARGET_NEXTGEN_PLUGINS=OFF.
-Legen Sie GPU_MAX_HW_QUEUES in gpurun fest
-Kritische Regionen, die über die Anweisung”critical”erstellt wurden, sind jetzt effizienter: durch Lockerung der Semantik von Sperren und wenn wir dies mit der Verwendung von Erfassungs-und Freigabezäunen kombinieren, können wir das Leeren der GPU-Caches auf jedes Mal beschränken, wenn die Sperre erworben wird, anstatt bei jeder Sperrprüfung.
-Beim Inlining von Funktionen, die vom Kernel aufgerufen werden, Verschieben Sie allocas für ihre Argumente in den Kernel-Eingabeblock, anstatt sie am Startpunkt zu belassen.
-Respektieren Sie die Umgebungsvariable, um synchrone Ausführungen der Zielregion zu erzwingen. Verfügbar über OMPX_FORCE_SYNC_REGIONS=1.
AOMP 17.0-1-Downloads und weitere Details unter GitHub einschließlich RHEL/Debian-Binärdateien zur Ergänzung der Quellen.