Imagemagick und Multithreading (Leap 15.2)
![](https://seccdn.libravatar.org/avatar/9ccb24a0b345131ffb0e737bad7168d6.jpg?s=120&d=mm&r=g)
Hallo Liste, vielleicht hat ja jemand eine Idee, wie man Imagemagick Multithreading beibringt. Oder erwarte ich zuviel? Mein System ist ein aktuelles und erst ein paar Wochen altes Leap 15.2 mit ImageMagick-7.0.7.34-lp152.12.15.1.x86_64 auf einer Hardware mit i5-10400-CPU, also 12 Cores. Wenn ich ImageMagick-7.0.7.34-lp152.12.15.1.x86_64 aus dem SUSE-Repository installiere, benutzt es lediglich einen Thread. Das ist, wenn ich mich recht entsinne, so, seit Imagemagick in Version 7 verwendet wird, von Imagemagick 6.x früherer OpenSUSE-Versionen wurden noch wenigstens 4 Kerne verwendet; mehr hatte meine alte Hardware nicht. Daraufhin habe ich das Source-RPM installiert, im SPEC-File die vorhandene configure-Option '--disable-openmp' (Aha! Warum wird openmp abgeschaltet?) auskommentiert, alles kompiliert und die erzeugten RPMs installiert. Jetzt verwendet convert 4 Threads, immerhin, aber eben doch nur vier. Wenn ich vor dem convert-Aufruf die Umgebungsvariable OMP_NUM_THREADS setze, kann ich zwar 4, 3, 2 und 1 Thread einstellen, aber alles über 4 wird ignoriert. Mit update-alternatives lässt sich Imagemagick auf eines der beiden Konfigurationsdirectories /etc/ImageMagick-7-SUSE oder /etc/ImageMagick-7-upstream verweisen (aus den RPMs ImageMagick-config-7-upstream-7.0.7.34-lp152.12.15.1.x86_64.rpm und ImageMagick-config-7-SUSE-7.0.7.34-lp152.12.15.1.x86_64.rpm). In beiden befindet sich ein File policy.xml, mit der deaktivierten Zeile <!-- <policy domain="resource" name="thread" value="4"/> --> Leider hilft es nichts, die Kommentarzeichen zu entfernen und aus der 4 eine 12 zu machen. -- Viele Grüße Michael
![](https://seccdn.libravatar.org/avatar/9ccb24a0b345131ffb0e737bad7168d6.jpg?s=120&d=mm&r=g)
Am 31.05.21 um 22:10 schrieb Michael Behrens:
Hallo Liste,
vielleicht hat ja jemand eine Idee, wie man Imagemagick Multithreading beibringt. Oder erwarte ich zuviel? >
Kleine Ergänzung: Mein Kommando zum Testen: export OMP_NUM_THREADS=4; convert test.jpg -adaptive-blur 0x0.5 -gamma 1.0 -unsharp 80x40+0.15+0.03 -resize "1920x1200" -unsharp 0x1.4+0.1+0.03 -quality 90 test.cs.jpg Das oben erwähnte File policy.xml wird dabei gar nicht gelesen (laut 'ls -ltu', und 'strace -e open ...'), kein Wunder, dass sein Inhalt keine Auswirkung hat... -- Viele Grüße Michael Behrens
![](https://seccdn.libravatar.org/avatar/9ccb24a0b345131ffb0e737bad7168d6.jpg?s=120&d=mm&r=g)
Hallo Liste, gerade habe ich in einem fast 10 Jahre alten Post zu einem seinerzeitigen Fehler in Imagemagick die Variable MAGICK_THREAD_LIMIT erwähnt gefunden. Mit MAGICK_THREAD_LIMIT=12 und undefiniertem OMP_NUM_THREADS nutzt Imagemagick nun endlich 12 Threads. Jetzt finde ich natürlich auch jede Menge Hinweise auf MAGICK_THREAD_LIMIT ... Bleibt eigentlich nur die Frage, ob das Deaktivieren von openmp im SPEC nicht ein Fehler im openSUSE-Paket von Imagemagick ist. Was meint ihr dazu? -- Viele Grüße Michael Behrens
participants (1)
-
Michael Behrens