2013-09-30 35 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(取決於您的系統)。