Kum*_*lok 5 c c++ parallel-processing openmp
我Pi使用OpenMP 编写了一个计算C程序,从书中获取帮助.我相信这个程序的性能取决于所使用的处理器.
在我的情况下,我使用环境变量通过增加处理器或线程的数量来检查并行性的性能(我不确定什么是正确的...请纠正我)
OMP_NUM_THREADS
Run Code Online (Sandbox Code Playgroud)
我有一个四核处理器,所以我使用(no_of_threads从1改为10):
$ export OMP_NUM_THREADS=no_of_threads
Run Code Online (Sandbox Code Playgroud)
运行程序的性能是:
1 --- 0m11.036s
2 --- 0m5.554s
3 --- 0m3.800s
4 --- 0m3.166s
5 --- 0m3.376s
8 --- 0m3.042s
10 --- 0m2.960s
15 --- 0m2.957s
我可以理解性能提升到4,因为系统上有4个处理器.但即使在线程数超过4之后,我也无法理解性能的提升.我知道每个增加的线程都有一个开销,所以为什么性能仍在增加..
有人可以详细向我解释一下.