2013-09-30 37 views
0

我正在使用graphicsmagics来缩放图像,并且我发现openMP不会提高处理性能。以下是我的测试结果:Openmp不会改进graphicsmagics的性能

C:\Users\L.J.W>set OMP_NUM_THREADS=1 

C:\Users\L.J.W>gm benchmark -stepthreads 1 -duration 10 convert d:/opt/1.jpg -s 
cale 300x300 -gravity center -quality 90 -strip d:/opt/2.jpg 
Results: 1 threads 212 iter 9.70s user 10.02s total 21.151 iter/s 21.848 iter/cp 
u 1.00 speedup 1.000 karp-flatt 

C:\Users\L.J.W>set OMP_NUM_THREADS=4 

C:\Users\L.J.W>gm benchmark -stepthreads 1 -duration 10 convert d:/opt/1.jpg -s 
cale 300x300 -gravity center -quality 90 -strip d:/opt/2.jpg 
Results: 1 threads 212 iter 9.58s user 10.02s total 21.153 iter/s 22.133 iter/cp 
u 1.00 speedup 1.000 karp-flatt 
Results: 2 threads 212 iter 9.89s user 10.00s total 21.194 iter/s 21.435 iter/cp 
u 1.00 speedup 0.996 karp-flatt 
Results: 3 threads 213 iter 9.52s user 10.04s total 21.209 iter/s 22.383 iter/cp 
u 1.00 speedup 0.996 karp-flatt 
Results: 4 threads 212 iter 9.73s user 10.03s total 21.143 iter/s 21.778 iter/cp 
u 1.00 speedup 1.001 karp-flatt 

也发现8核心服务器和2核心notbook没有区别。

有什么问题?

+0

http://www.graphicsmagick.org/benchmark.html在这个网页上有一个示例运行,它显示了一些加速。你确定OpenMP的使用是否正确?使用OpenMP支持等构建了该库吗?似乎只有一个线程处于活动状态。您可以编写一个简单的OpenMP应用程序,该应用程序打印可用于OpenMP的线程数量和内核数量,以便正确设置环境变量。 – phoad

+0

谢谢你的回复,但是当我做测试时,所有的cpu核心都忙。环境变量OMP_NUM_THREADS已经设置正确。而graphicsmagics是用./configure生成的--enable-shared --enable-openmp.any其他需要配置吗? –

回答

1

规模算法是少数几个不是多线程的算法之一。幸运的是它已经很快了。尝试-resize而不是-scale,以便在线程添加时看到改进。 -resize的实际性能可能仍然低于-scale(取决于您的系统)。