Главная /
Параллельное программирование с OpenMP /
Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #define N 100 void work(int i); int main () { #pragma omp parallel { #pragma omp for for (int i=0;i<N;i++) work (i); } }
Определите способ распределения витков цикла между нитями для следующего фрагмента программы:
#define N 100
void work(int i);
int main () {
#pragma omp parallel
{
#pragma omp for
for (int i=0;i<N;i++) work (i);
}
}
вопрос
Правильный ответ:
статический (static)
зависит от значения переменной окружения
OMP_SCHEDULE
зависит от реализации компилятора
Сложность вопроса
85
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Это очень простой вопрос интуит.
26 авг 2020
Аноним
Экзамен сдан на 4 с минусом. Ура
19 июн 2019
Другие ответы на вопросы из темы программирование интуит.
- # Рассмотрим фрагмент OpenMP-программы: #include <omp.h> int main (void) { omp_set_nested(0); omp_set_max_active_levels(8); omp_set_num_threads(2); #pragma omp parallel { omp_set_num_threads(2); #pragma omp parallel { /*вложенная параллельная область*/ … } } } Для выполнения вложенной параллельной области будет создана группа нитей, состоящая из:
- # Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N], sum; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); if (iam ==0) { #pragma omp critical (update_a) #pragma omp critical (update_b) sum +=A[iam]; } else { #pragma omp critical (update_b) #pragma omp critical (update_a) sum +=B[iam]; } }
- # Определите значение переменной team_size по завершении выполнения следующей программы: #include <stdio.h> #include "omp.h" int main() { int team_size; team_size=0; #pragma omp parallel num_threads(2) { if (omp_get_thread_num() == 0) { team_size=omp_get_team_size(omp_get_level ()); } } printf("Team Size=%d\n",team_size); }
- # Найдите ошибку в следующем фрагменте программы: #pragma omp parallel { int me; me = omp_get_thread_num (); if (me == 0) goto Master; #pragma omp barrier Master: #pragma omp single }
- # Выберите наилучшую стратегию распределения витков цикла между нитями, которая для следующего фрагмента программы даст минимальное время выполнения: #include <omp.h> #include <unistd.h> #define msec 1000 int main (void){ omp_set_num_threads (4); #pragma omp parallel { #pragma omp for schedule (runtime) for(int i=0; i<40;i++) { sleep (msec); } } }