Распараллелить несколько разных процедур с помощью 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 } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д