Количество потоков, выполняющих задачу omp - PullRequest
0 голосов
/ 07 апреля 2019

Для приведенного ниже кода, если list_file.size () равен 12, то есть у нас больше потоков, чем число итераций цикла for, что мы можем сказать о количестве потоков, в которых выполняется каждый блок задач? Будет ли только 1 поток выполнять каждый блок задач, или более 1 потока будет запускать каждый блок задач?

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 голосов
/ 07 апреля 2019

Каждая область задачи будет выполняться одним потоком.OpenMP не будет использовать больше потоков для выполнения одной задачи.Таким образом, если ваш внешний параллельный цикл генерирует только 12 задач, то вы можете сохранить максимум 12 потоков занятыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...