正在执行omp任务的线程数

时间:2019-04-07 04:20:53

标签: c++ openmp

对于下面的代码,如果list_file.size()为12,即我们的线程数多于for循环中的迭代数,那么对于运行每个任务块的线程数我们能说什么呢?每个任务块将只运行一个线程,还是每个任务块将运行一个以上线程?

omp_set_num_threads(24);
#pragma omp parallel
{
    #pragma omp for
    for (int m = 0; m < list_file.size(); m++)
    {
        #pragma omp task
        {
            // do something
        }
    }
}

1 个答案:

答案 0 :(得分:0)

每个任务区域将由一个线程执行。 OpenMP不会使用更多线程来执行单个任务。因此,如果外部并行循环仅生成12个任务,则最多只能使12个线程处于繁忙状态。