执行结果见图2。
图2 使用OpenMP编译指导的结果
将Sum函数中的#pragma omp parallel for reduction(+: result)注释掉,再次执行,结果见图3。
图3 不使用OpenMP编译指导的结果
可以看到,使用OpenMP编译指导的执行时间比不使用的要提高了一倍,图4显示了两种执行过程CPU的利用率,使用了OpenMP编译指导后,CPU的利用率达到了100%,CPU的两个核都被使用,而不使用OpenMP的执行过程只使用了51%的CPU资源,没有充分发挥双核的优势。
(a)使用OpenMP
(b)不使用OpenMP
图4 使用和不使用OpenMP的CPU利用率
5 总结
介绍了使用OpenMP进行多核程序设计的方法,并通过一个实例程序证明了使用OpenMP编译指导后程序的执行效率有显著的提高。限于篇幅,文中只介绍了for循环的并行化编程方法,关于OpenMP更多的使用方法,请参考OpenMp的使用规范。
参考文献
[1] OpenMP .C and C++ Application Program Interface,Version 2.0 March 2002.
[2] Shameem Akhter,Jason Roberts,李宝峰,等译.多核程序设计技术-通过软件多线程提升性能.电子工业出版社,2007.
|