一、实现核心
1、omp_set_dynamic 函数
用于设置随后的parallel区域是否能动态的调整线程数(以达到让openMP实现对系统资源使用的优化,当然也这取决于实现是否支持),在本程序中,设置为0,禁止动态调整,防止对环境变量OMP_NUM_THREADS 的设置造成影响。
2、omp_set_nested 函数
用于设置随后的嵌套层是否支持并行化,系统默认值为false。注意是嵌套层,从第二层开始,后面的并行层都会受到影响,要使不受影响,则在开始并行任务前,单独调用该函数来进行设置。
3、OMP_NUM_THREADS 环境变量
用于设置并行层的线程数,设置形式如下:
a) OMP_NUM_THREAD=2
b) OMP_NUM_THREAD=2,3
对于a)导致每个并行层的线程数都为2
对于b) VS2013中是不支持的,只支持前面的一种,导致每个并行层的线程数都为2.
二、代码