Распараллелить несколько разных процедур с помощью OpenMP - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Требуется распараллелить несколько разных процедур с помощью OpenMP 3.0 в gcc 4.5. Но проблема в том, что одна из функций обязательно должна выполняться в главном треде под номером 0. Логично использовать #pragma оmp parallel sections Но выбор исполняющего треда для секции не определен и нужная процедура постоянно исполняется в новом треде. Вопрос в том как правильно решить эту проблему? Вариант
#pragma omp parallel
{
    switch (omp_get_thread_num())
        {
    case 0: ...
        case 1: ...
        ...
        }
}
Мне кажется неправильным\грубым. Есть ли решение с использованием средств омп?

Решение задачи: «Распараллелить несколько разных процедур с помощью OpenMP»

textual
Листинг программы
#pragma omp parallel
{
   #pragma omp master
   {
      #pragma omp task
      {
         ... // задания, которые не зависят от треда
      }
      ... // задания для главного треда
      #pragma omp taskwait
   }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.533 из 5
Похожие ответы