Главная /
Параллельное программирование с OpenMP /
Найдите ошибку в следующем фрагменте программы: #pragma omp parallel default(shared) { int i; #pragma omp for lastprivate(i) for (i=0; i!=n; i++) { work(i); } }
Найдите ошибку в следующем фрагменте программы:
#pragma omp parallel default(shared)
{
int i;
#pragma omp for lastprivate(i)
for (i=0; i!=n; i++) {
work(i);
}
}
вопрос
Правильный ответ:
в заголовке цикла, витки которого распределяются между нитями при помощи директивы for вместо оператора отношения (типа
<,<=,>,>=
) указан оператор сравнения (!=
)
индексная переменная цикла, витки которого распределяются между нитями при помощи директивы for, не может быть указана в клаузе
lastprivate
в данном фрагменте программы ошибки нет
Сложность вопроса
95
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Спасибо за ответы интуит
07 мар 2019
Аноним
Зачёт прошёл. Лечу в клуб отмечать победу над тестом интут
14 мар 2017
Другие ответы на вопросы из темы программирование интуит.
- # При реализации компилятором редукционного оператора, описанного при помощи клаузы reduction (*: prod), где переменная prod имеет тип integer, для каждой нити создается локальная копия переменной prod, начальное значение которой будет инициализировано:
- # Рассмотрим фрагмент OpenMP-программы: #include <omp.h> int n=1; int main (void) { omp_set_nested(1); omp_set_dynamic(1); omp_set_num_threads(2); #pragma omp parallel if (n>10) {/*параллельная область*/ … } } Для выполнения параллельной области будет создана группа нитей, состоящая из:
- # Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N], sum; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); #pragma omp critical (update_a) #pragma omp critical (update_a) sum +=A[iam]; }
- # Выберите наилучшую стратегию распределения витков цикла между нитями, которая для следующего фрагмента программы даст минимальное время выполнения: #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<60;i++) { sleep (msec); } } }
- # Технология OpenMP по сравнению с MPI имеет следующие преимущества (отметьте все подходящие варианты):