O4AS OpenCL für AMD Karten deutlich verbessert

Sabroe SMC

Grand Admiral Special
★ Themenstarter ★
Mitglied seit
14.05.2008
Beiträge
5.088
Renomée
742
Standort
Castrop-Rauxel
  • Docking@Home
  • BOINC Pentathlon 2011
  • BOINC Pentathlon 2012
  • BOINC Pentathlon 2013
  • BOINC Pentathlon 2014
  • BOINC Pentathlon 2015
  • BOINC Pentathlon 2016
  • BOINC Pentathlon 2017
  • BOINC Pentathlon 2018
  • BOINC Pentathlon 2019
  • BOINC Pentathlon 2021
  • BOINC Pentathlon 2022
  • BOINC Pentathlon 2023
  • BOINC Pentathlon 2024
  • BOINC Pentathlon 2025
  • BOINC Pentathlon 2026
Hier geht es um eine deutliche Verbesserung für AMD Karten. Weiter unten das Ganze nochmals auf Deutsch. Da ich keine AMD Graka besitze kann ich das ganze nicht nachvollziehen. Die erste WU von einem Rechenkraft Mitglied wurde gerade eben validiert.

Ian&Steve C. schrieb:
So I used Claude (AI) to port the stock CUDA O4AS app to HIP for use on AMD/ROCm Linux systems. The stock O4AS OpenCL app for AMD is not very well optimized and has pretty low GPU utilization. the straight port to HIP helped that a lot. Then I had Claude rework the app with many new optimizations. you can expect 30-40%+ speed boost from this app for AMD/ROCm systems. *(based on results from my RX 6800XT, YMMV)

I'm providing this both because it should help folks maximize their AMD/Linux systems, and because I need more test subjects with different hardware, I only have an RDNA2 RX 6800XT to test on.

Prerequisites:

Linux

  • requires glibc 2.39+ (Ubuntu 24.04 equivalent)
  • you need either the full ROCm 7.x runtime and packages, or at the very least runtime plus rocfft and hipfft packages (rocm-hip-runtime, rocm-hip-libraries)
  • Must have a Vega20-RDNA4 Radeon GPU. Legacy AMD GPUs do not support HIP
  • I don't know if RDNA based iGPUs work or not. try it and let me know
Windows

  • requires Windows 10 or 11
  • you need only the recent AMD drivers installed, I have bundled the HIP/ROCm/MS dependency DLLs)
  • Must have a Vega20-RDNA4 Radeon GPU. Legacy AMD GPUs do not support HIP
  • the Windows version was built with ROCm/HIP 6.4, as that was the only way to support Win10 since HIP7 is not available for Win10

Latest version: "opt23" - July 7, 2026
Get the apps here: https://github.com/IanSteveC/Einstein-O4AS-O4MDG/releases
included are app_info.xml and app_config.xml files and a file explaining the usage of gpuSlots argument for mutex/semaphore

Install:

  1. deplete your cache first is safest, differences in versioning will nuke your cache, unless you know what you're doing.
  2. stop BOINC
  3. drop the files into your einstein project folder (NOTE, if upgrading from a previous version, only copy the binary file and app_info, keep your own app_config to preserve your own configuration)
  4. configure how you want to run (how many per GPU) with the app_config.xml file
  5. restart BOINC

Optimization notes:

  • HIP GPU Backend added, mostly ported from existing CUDA code
  • several optimizations to increase GPU utilization and processing speed
  • included is the same semaphore functionality that we have on our custom CUDA app. (see here) there is a template for --gpuSlots in app_config.xml that you must uncomment to enable. there is also a gpuSlots.txt file that explains the functionality
  • fixed a bug and added support for O4MDG

Nun nochmal auf Deutsch:

[Zitat=Ian&Steve C.]
Ich habe Claude (AI) beauftragt, die standardmäßige CUDA-O4AS-Anwendung für AMD/ROCm-Linux-Systeme nach HIP zu portieren. Die standardmäßige O4AS-OpenCL-Anwendung für AMD ist nicht optimal optimiert und weist eine geringe GPU-Auslastung auf. Die direkte Portierung nach HIP hat dies deutlich verbessert. Anschließend habe ich Claude die Anwendung mit zahlreichen neuen Optimierungen überarbeiten lassen. Sie können mit einer Geschwindigkeitssteigerung von 30–40 % auf AMD/ROCm-Systemen rechnen. *(Basierend auf den Ergebnissen meiner RX 6800XT, Ergebnisse können variieren.)

Ich stelle dies zur Verfügung, da es anderen Nutzern helfen sollte, die Leistung ihrer AMD/Linux-Systeme zu maximieren, und da ich weitere Testgeräte mit unterschiedlicher Hardware benötige. Ich besitze derzeit nur eine RDNA2 RX 6800XT zum Testen.

Voraussetzungen:

Linux
  • benötigt glibc 2.39+ (entspricht Ubuntu 24.04).
  • Sie benötigen entweder die vollständige ROCm 7.x-Laufzeitumgebung und die zugehörigen Pakete oder zumindest die Laufzeitumgebung sowie die Pakete rocfft und hipfft (rocm-hip-runtime, rocm-hip-libraries).
  • Sie benötigen eine Vega20-RDNA4 Radeon-GPU. Ältere AMD-GPUs unterstützen HIP nicht.
  • Ich weiß nicht, ob integrierte GPUs auf RDNA-Basis funktionieren. Probieren Sie es aus und geben Sie mir Bescheid.
Windows
  • benötigt Windows 10 oder 11.
  • Sie benötigen lediglich die aktuellen AMD-Treiber. Die benötigten DLLs für HIP/ROCm/MS sind enthalten.
  • Sie benötigen eine Vega20-RDNA4 Radeon-GPU. Ältere AMD-GPUs unterstützen kein HIP.
  • Die Windows-Version wurde mit ROCm/HIP 6.4 erstellt, da dies die einzige Möglichkeit war, Windows 10 zu unterstützen, da HIP 7 für Windows 10 nicht verfügbar ist.
Neueste Version: „opt23“ – 7. Juli 2026
Installation:

  • Leeren Sie vorher unbedingt Ihren Cache. Versionsunterschiede können Ihren Cache beschädigen, es sei denn, Sie wissen genau, was Sie tun.
  • BOINC stoppen Die Dateien in Ihren Einstein-Projektordner kopieren (HINWEIS: Bei einem Upgrade von einer früheren Version nur die Binärdatei und die app_info-Datei kopieren; die app_config-Datei beibehalten, um Ihre eigene Konfiguration zu erhalten).
  • In der app_config.xml-Datei konfigurieren, wie die Anwendung ausgeführt werden soll (Anzahl der GPUs pro GPU).
  • BOINC neu starten
Hinweise zur Optimierung:
  • HIP-GPU-Backend hinzugefügt, größtenteils aus bestehendem CUDA-Code portiert.
  • Diverse Optimierungen zur Steigerung der GPU-Auslastung und Verarbeitungsgeschwindigkeit.
  • Die gleiche Semaphor-Funktionalität wie in unserer benutzerdefinierten CUDA-Anwendung ist enthalten. (siehe hier). In der app_config.xml-Datei befindet sich eine Vorlage für --gpuSlots, die Sie einkommentieren müssen, um sie zu aktivieren. Es gibt auch eine Datei namens gpuSlots.txt, die die Funktionalität erklärt.
  • Ein Fehler wurde behoben und Unterstützung für O4MDG hinzugefügt.
[/quote]
 
Kann ich nachher mal in den PC werfen mit der RX9070XT ... da ich aber keine Ahnung habe wie schnell die vorher ausser das sie ultra lahm war ... naja
 
1783754802740.png
Gibt scheinbar auch eine NV Version ... hast du dazu auch was gelesen?


Da kannst nach den Ergebnissen gucken ;)

Wenn das so nicht geht musst mal bei mir unter Computer gucken, der Host heißt KinderKiste
 
Also die ersten WUs wo 2 gleichzeitig laufen sind fertig, 1700-1900s ... die Ergebnisse könnten sicherlich besser sein aber der 5700X ist vermutlich auch etwas schwach auf der Brust und zieht die Zeit damit in die Länge *noahnung*
Es ist ja auch viel CPU Zeit dabei ...
Ich lasse das jetzt mal so laufen für einige Zeit, die durchschnittliche GPU-Auslastung liegt mit 2 WUs allerdings nur bei ~50% ... versuche später vllt mal 4 WUs aber kp ...

Bei der 5070 ist es allerdings auch nicht wesentlich besser mit 2 WUs, auf Grund des Speichers sind mehr als 3 allerdings dort kaum möglich, schneller ist sie aber dennoch mit ~1100s pro WU
Weiß auch nicht so genau wo da die Probleme der mangelnden Auslastung liegen denn obwohl es CUDA ist, scheinen sie einfach unfassbar schlecht optimiert ...
 
Gestern Abend liefen die WUs noch auf der 6900XT - jetzt crashen sie nur noch... *noahnung*
 
Bei mir laufen sie aber sind weiterhin wirklich lahm ... wenn ich dort lese das Leute auf um die 300s kommen ...

Scheinbar ist der CPU Takt unverhältnismäßig wichtig für die WUs ...
Ich hatte nebenbei noch Asteroids laufen und wenn die WU dann auch noch auf einem HT Thread hing war es ganz vorbei ...
Die App scheint schon schneller zu sein als die alte
 
Zuletzt bearbeitet:
Hier mal die WUs die der Kollege der das ganze bei Rechenkraft.net geschrieben hat mit seiner AMD AMD Radeon RX 9070 XT gerechnet hat. Anfangs noch rd 2600 sec, nach Optimierung rund 430 sec. Wie allerdings das mit seinem Prozessor (AMD Ryzen 9 9950X3D) zusammenhängt und ob er mehrere WUs gleichzeitig gerechnet hat geht aus seinen Aufzeichungen natürlich nicht hervor. Glaube ich allerdings auch nicht.
 
Jetzt laufen sie wieder - auch fein... *noahnung*
Auf der gedrosselten 6900XT (unter 100W bei 2 WUs parallel - 3 WUs will er irgendwie nicht rechnen, trotz entsprechender app-Info) und dem 9950X @105W laufen sie jetzt ~ 1.000s, das ist ja schon gar nicht mal so schlecht...
Dann sollte ich als nächstes mal den Rechner mit der VII umstellen (da ist allerdings nur ein 5900X @65W am Start)...

Edit: Die O4AS zuvor haben > 4.000s gebraucht - allerdings mit 4 WUs parallel - im Schnitt wäre das aber immer noch eine halbierte Laufzeit! :o
(Bei mehr freien CPU-Ressourcen für andere Projekte noch dazu!)

Edit 2: Eine WU braucht ca. 150% CPU-Zeit auf dem 9950X - das ist nicht ohne, aber immerhin scheint SMT dabei zu funktionieren. Mal schauen, wie sich dann der 5900X mit der VII schlägt...
 
Im Forum hat einer geschrieben es liegt an Windows und daran wenn die CPU nicht schnell genug ist ...
Unter Linux soll das ganze wesentlich besser laufen ...
Werde ich dann die Windows PCs wohl nicht mehr einstein rechnen lassen auch wenns besser ist als vorher ...

Komme auf ~1750s bei 4 WUs gleichzeitig was rund ~440s pro WU sind ... verbraucht aber auch 4 volle Kerne und von den 16 Threads nutze ich in Summe nur noch 8 und davon sind 4 schon für die Einsteine ...
 
Zuletzt bearbeitet:
Bei mir laufen sie aber sind weiterhin wirklich lahm ... wenn ich dort lese das Leute auf um die 300s kommen ...

Scheinbar ist der CPU Takt unverhältnismäßig wichtig für die WUs ...
Ich hatte nebenbei noch Asteroids laufen und wenn die WU dann auch noch auf einem HT Thread hing war es ganz vorbei ...
Die App scheint schon schneller zu sein als die alte
Lass mal auf der CPU nix außer Einstein laufen und gib' in der app_info einer WU mal mind. 2 Cores - dann sollte es besser werden...
 
Im Forum hat einer geschrieben es liegt an Windows und daran wenn die CPU nicht schnell genug ist ...
Unter Linux soll das ganze wesentlich besser laufen ...
Werde ich dann die Windows PCs wohl nicht mehr einstein rechnen lassen auch wenns besser ist als vorher ...

Komme auf ~1750s bei 4 WUs gleichzeitig was rund ~440s pro WU sind ... verbraucht aber auch 4 volle Kerne und von den 16 Threads nutze ich in Summe nur noch 8 und davon sind 4 schon für die Einsteine ...
Meine Rechner laufen auch unter Windows - das Verhältnis finde ich schon ok...
 
An sich schon aber es geht eben auch viel Leistung für andere Projekte verloren ...
 
Naja - wg. vielleicht 2-3 Threads mehr für andere Projekte tu' ich mir Linux ehrlich gesagt (noch) nicht an... :]
Aber meine Crunching-Rechner laufen eh gedrosselt...
 
Nein, habe ich nicht. Werde ich mir mal ansehen.
Eine Multi-Directional Gravitational Wave search on O4 data WU (https://einsteinathome.org/de/task/1987819451) von ca 270 sec auf 151 sec . Sehr gut! Der GPU-Load war max 51% also gehen da auch 2 Wus gleichzeitig. Würde bedeuten rd 210 Kcredits pro Std.
Die All-Sky Gravitational Wave search on O4 WUs liefen 2 gleichzeitig je ca 1780 sec, also max 4 Stk pro Std=72Kcredits pro Std
 
Aber unter Linux oder?
 
Nein, unter Windows
 
Auf der 5060 TI (ebenfalls unter Windows) halbiert sich die Durchlaufzeit ebenfalls...

Aber die VII will noch nicht - da scheint eine Datei zu fehlen (auch nach der Installation des aktuellsten Treibers)... *kopfkratz
 
Hat jemand eine app_info.xml für die NV Version? In dem Paket ist keine *noahnung*
 
habe das Paket einfach genommen und reinkopiert und es hat so funktioniert ...
 
Hm, ich mag es eigentlich nicht, wenn man nur für ein Projekt das eingespielte System umbauen muss.
Ich warte daher mal gespannt auf Ergebnisse.
Bei der VII hatte ich mit 6-8 WUs parallel nie das Problem, dass die Auslastung der GPU zu niedrig ist.
Und bei Nvidia hab ich ja schon die optimierte App ausprobiert und für gut befunden - da musste man auch nichts weiter machen außer ins Projektverzeichnis zu kopieren.

Edit: Mein Nvidia-PC steht nicht hier, daher kann ich gerade nicht nach der app datei schauen. Ich meine, dass im Projekt-Forum im entsprechenden Thread eine stehen müsste.
 
Hat jemand eine app_info.xml für die NV Version? In dem Paket ist keine *noahnung*
<app_info>

<file>
<name>O4AS_einstein_windows_x86_64__cuda1291.exe</name>
<executable/>
</file>

<file>
<name>cufft64_11.dll</name>
</file>

<app>
<name>einstein_O4AS</name>
<user_friendly_name>All-Sky Gravitational Wave search on O4</user_friendly_name>
<non_cpu_intensive>0</non_cpu_intensive>
</app>

<app>
<name>einstein_O4MDG</name>
<user_friendly_name>Multi-Directional Gravitational Wave search on O4</user_friendly_name>
<non_cpu_intensive>0</non_cpu_intensive>
</app>


<app_version>
<app_name>einstein_O4AS</app_name>
<version_num>201</version_num>
<platform>windows_x86_64</platform>
<plan_class>GW-cuda</plan_class>
<api_version>7.25.0</api_version>
<file_ref>
<file_name>O4AS_einstein_windows_x86_64__cuda1291.exe</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>cufft64_11.dll</file_name>
</file_ref>
<coproc>
<type>NVIDIA</type>
<count>1.000000</count>
</coproc>
<dont_throttle/>
</app_version>

<app_version>
<app_name>einstein_O4MDG</app_name>
<version_num>201</version_num>
<platform>windows_x86_64</platform>
<plan_class>GW-cuda</plan_class>
<api_version>7.25.0</api_version>
<file_ref>
<file_name>O4AS_einstein_windows_x86_64__cuda1291.exe</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>cufft64_11.dll</file_name>
</file_ref>
<coproc>
<type>NVIDIA</type>
<count>1.000000</count>
</coproc>
<dont_throttle/>
</app_version>

</app_info>
 
So, habe jetzt auf meiner RTX5080 mal 2 WUs der O4MDG laufen lassen. Gleichzeitig gestartet - Müll. Etwa das doppelte der Laufzeit einer WU. Mit 2 Minuten Verzögerung - prima. Also nun laufen alle 280 sec 2 Wus an den Server. Leider haben sich bisher mehrere Berechnungsfehler, wohl auf Grund von zuviel Speicherverbrauch, angehäuft. Also wieder zurück auf 1 WU
 
Als ich zuletzt die angepasste NVIDIA Version genutzt habe, wurde immer nur eine wu auf die gpu losgelassen. Die andere pausierte so lange, bis bei der ersten wu der CPU Teil lief. Das konnte man in einer der XML Dateien einstellen.
 
Zuletzt bearbeitet:
Hat jemand hierfür eine Erklärung?

Code:
21.07.2026 18:26:02 | Einstein@Home | Sending scheduler request: To fetch work.
21.07.2026 18:26:02 | Einstein@Home | Requesting new tasks for NVIDIA GPU
21.07.2026 18:26:09 | Einstein@Home | Scheduler request completed: got 0 new tasks
21.07.2026 18:26:09 | Einstein@Home | No work sent
21.07.2026 18:26:09 | Einstein@Home | No work is available for Multi-Directional Gravitational Wave search on O4 data (GPU)

Ich installiere unter Windows die CUDA App von Ian und dann lädt er noch genau eine WU und dann ist schluss ... danach kommt immer diese Fehlermeldung ...
 
Zurück
Oben Unten