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