Mögliche Probleme und Lösungen

darktable entdeckt OpenCL-Laufzeitfehler automatisch. Wenn es einen Fehler erkennt, wird es alles erneut über die CPU abarbeiten. Während das zwar die Verarbeitungsgeschwindigkeit vermindert, sollte es nicht das Endresultat beeinflussen.

Es gibt unterschiedliche Gründe, warum OpenCL während der Initialisierung fehlschlägt. OpenCL hängt von den Hardware-Anforderungen ab und von gewissen Treibern und Libraries. Zusätzlich müssen alle diese zusammenpassen, was Hersteller, Modell und Revisionsnummer angeht. Falls etwas nicht stimmt (z.B. dein Grafik-Treiber – geladen als Kernel Modul – stimmt nicht mit der Version deines libOpenCL.so), wird OpenCL-Support nicht vorhanden sein.

In einem solchen Fall ist es das Beste darktable von einer Konsole mit darktable -d opencl zu starten.

Das wird zusätzliche Debugginginformationen während der Intialisierung und Verwendung von OpenCL liefern. Als erstes, falls du eine Linie findest, die mit [opencl_init] FINALLY ... beginnt, sollte das anzeigen, ob OpenCL-Support da ist oder nicht. Falls das Starten misslingt, suche nach Meldungen das sich lesen wie could not be detected oder could not be created. Prüfe, ob es einen Hinweis gibt, wo etwas falsch lief.

Hier ein paar Fälle, die in der Vergangenheit beobachtet wurden:

  • darktable sagt, es sei keine Grafikkarte, die OpenCL verarbeitet, zu finden oder dass der verfügbare Speicher an deiner GPU zu niedrig ist und die Einheit löscht. In einem solchen Fall mag es sein, dass du eine neue Karte kaufen musst, falls du wirklich OpenCL-Support willst.

  • darktable findet deine libOpenCL.so, sagt dir dann aber, dass es keine Plattform bekommen hat. NIVIDIA Treiber geben in einem solchen Fall oft den Fehlercode -1001 aus. Das passiert, weil libOpenCL.so nur eine Wrapper-Library ist. Für die tatsächliche Arbeit müssen weitere anbieterspezifische Bibliotheken geladen werden. Aus irgend einem Grund hat das nicht geklappt. Es gibt auf deinem System innerhalb von /etc/OpenCLeine Dateistruktur , die libOpenCL.so konsultiert, um diese Bibliotheken zu finden. Siehe dort nach, ob du irgend etwas Verdächtiges findest und versuche es zu beheben. Häufig findet der dynamische Lader einfach die benötigten Bibliotheken nicht. Die Angabe von kompletten Pfadnamen könnte dann schon helfen.

  • Darktable zeigt an, dass ein Anwendungsfall (context) nicht erstellt werden konnte. Häufig zeigt dies eine Diskrepanz zwischen dem geladenen Grafiktreiber und libOpenCL an. Überprüfe, ob Du noch Überbleibsel von älteren Kernel-Modulen oder Grafikbibliotheken aus älteren Installationen hast und unternimm dann die entsprechenden Schritte. Im Zweifel führe eine saubere Deinstallation deines Grafiktreibers durch. Manchmal, direkt nach einem Treiberupdate, passt der geladene Kernel-Treiber nicht zu den neu installierten Bibliotheken. In diesem Fall reboote dein System bevor du es erneut versuchst.

  • darktable stürzt während des Starts ab. Dies kann passieren, wenn dein OpenCL-Setup komplett beschädigt ist, oder wenn dein Treiber/Bibliothek einen schweren bug enthält. Wenn du das nicht reparieren kannst, ist es immer noch möglich darktable mit der Option --disable-opencl, was den gesamten OpenCL-Initialisierungsschritt überspringt, zu starten

  • darktable misslingt seine OpenCL-Quelldateien zur Laufzeit zu kompilieren. In diesem Fall wirst Du einige Fehlermeldungen sehen, die wie typische Compiler-Fehlermeldungen aussehen. Dies kann eine Inkompatibilität zwischen deiner OpenCL-Implementation und darktables Interpretation des Standards anzeigen. In diesem Fall bringe den Fall bitte an github und wir hoffen dir helfen können. Bitte berichte auch, wenn du signifikante Unterschiede zwischen der CPU- und GPU-Verarbeitung eines Bildes siehst.

Es gibt auch einige OpenCL-Anwendungen auf CPU, sie kommen als Treiber von INTEL oder AMD. Wir haben beobachtet, dass diese keinen Gewinn an Schnelligkeit im Vergleich zu unseren CPU-kodierten Einheiten erbringen. Deshalb löscht darktable diese als Standard. Dieses Verhalten kann geändert werdenn, indem die Konfiguration-Variable opencl_use_cpu_devices (in $HOME/.config/darktablerc) auf TRUE.

translations