openmp怎么用函数配置线程数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openmp怎么用函数配置线程数相关的知识,希望对你有一定的参考价值。

参考技术A 在这里,先回顾一下OpenMP的parallel并行区域线程数量的确定,对于一个并行区域,有一个team的线程去执行,那么该分配多少个线程去执行呢?
OpenMP的遇到parallel指令后创建的线程team的数量由如下过程决定:
1.
if子句的结果
2.
num_threads的设置
3.
omp_set_num_threads()库函数的设置
4.
OMP_NUM_THREADS环境变量的设置
5.
编译器默认实现(一般而言,默认实现的是总线程数等于处理器的核心数)
(http://blog.csdn.net/gengshenghong/article/details/6956878查看更多信息)
2、3、4优先级依次降低的,也就是前面的设置可以覆盖后面的设置,当然也是相对而言,num_threads子句只会影响当前的并行区域,而omp_set_num_threads对OMP_NUM_THREADS环境变量的覆盖是在整个程序运行期间全局的。
(2)几个容易混淆的OpenMP函数
1.
omp_get_thread_num
获取线程的num,即ID。这里的ID是OpenMP的team内的ID,在OpenMP中,一个team内的线程的ID是俺顺序排列的,0、1、2...
说明:此函数在并行区域外或者并行区域内都可以调用。在并行区域外,获取的是master线程的ID,即为0。在并行区域内,每次执行到此函数,获取的是当前执行线程的ID。

以上是关于openmp怎么用函数配置线程数的主要内容,如果未能解决你的问题,请参考以下文章

使用 openmp 时运行的线程数不一致

增加线程数,但程序不能更快地运行 C++ OpenMP 选择排序

在visual studio中运行OpenMP并行程序,设置的线程数NUM_THREADS与系统CPU线程数啥关系

openmp:线程数的增加会降低性能

如何获得在整个程序执行期间可能创建的最大 OpenMP 线程数?

执行时间取决于使用 OpenMP 库增加的线程数?