Главная /
Параллельное программирование с OpenMP /
Найдите ошибку в следующем фрагменте программы: #define N 1000 int main (void){ float a[N], tmp; #pragma omp parallel { #pragma omp for for(int i=0; i<N;i++) { tmp= a[i]*a[i]; a[i]=1-tmp; } } }
Найдите ошибку в следующем фрагменте программы:
#define N 1000
int main (void){
float a[N], tmp;
#pragma omp parallel
{
#pragma omp for
for(int i=0; i<N;i++) {
tmp= a[i]*a[i];
a[i]=1-tmp;
}
}
}
вопрос
Правильный ответ:
в директиве
for
отсутствует клауза private(i)
в директиве
for
отсутствует клауза private(tmp)
в данном фрагменте программы ошибки нет
Сложность вопроса
60
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Это было сложно
13 авг 2019
Аноним
Экзамен сдал на зачёт. Ура
10 июл 2017
Другие ответы на вопросы из темы программирование интуит.
- # PRAM модель консистентности памяти определяется следующим условием:
- # Использование оператора exit в структурном блоке OpenMP:
- # Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N],tmp; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); tmp=A[iam]; B[iam]=tmp; }
- # Выберите наилучшую стратегию распределения витков цикла между нитями, которая для следующего фрагмента программы даст минимальное время выполнения: #include <omp.h> #include <unistd.h> #define msec 1000 int main (void){ omp_set_num_threads (8); #pragma omp parallel { #pragma omp for schedule (runtime) for(int i=0; i<80;i++) { sleep (msec); } } }
- # Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #include <omp.h> #include <unistd.h> #define msec 1000 int main (void){ omp_set_num_threads (8); #pragma omp parallel for for (int i=0; i<5; i++) for (int j=0; j<5; j++) sleep (msec); }