GraphicsMagick compiler choice...

Eric A. Borisch eborisch at macports.org
Thu Feb 23 09:20:23 PST 2012


Submitted for your consideration:

GraphicsMagick is set to build with clang as llvm fails on x86_64; but
building with clang means no OpenMP... but "GraphicsMagick has been
transformed to use OpenMP for the 1.3 release series."[1]

How about switching (or at least adding a variant for those that want
it) the compiler to macports-gcc-4.4?

Performance results:

Clang:
$ gm benchmark -stepthreads 1 -duration 10 convert   -size 2048x1080
pattern:granite -operator all Noise-Gaussian 30% null:
Results: 1 threads 10 iter 11.05s user 11.05s total 0.905 iter/s
(0.905 iter/s cpu) 1.00 speedup 1.000 karp-flatt

macports-gcc-4.4:

$ gm benchmark -stepthreads 1 -duration 10 convert   -size 2048x1080
pattern:granite -operator all Noise-Gaussian 30% null:
Results: 1 threads 12 iter 10.64s user 10.64s total 1.128 iter/s
(1.128 iter/s cpu) 1.00 speedup 1.000 karp-flatt
Results: 2 threads 22 iter 19.63s user 10.00s total 2.200 iter/s
(1.121 iter/s cpu) 1.95 speedup 0.025 karp-flatt
Results: 3 threads 32 iter 28.61s user 10.02s total 3.194 iter/s
(1.118 iter/s cpu) 2.83 speedup 0.030 karp-flatt
Results: 4 threads 39 iter 34.90s user 10.01s total 3.896 iter/s
(1.117 iter/s cpu) 3.45 speedup 0.053 karp-flatt

Not only is single-threaded 25% faster (granted, this is just one data
point; the iters/s item is the one I am looking at here) with gcc-4.4
vs. clang, but OpenMP permits a 3.4x speedup (on my 4-core MacPro)
(4.3x speedup vs single-threaded clang-compiled.)

Thanks,
 Eric

[1] http://www.graphicsmagick.org/OpenMP.html


More information about the macports-dev mailing list