Главная /
Параллельное программирование с OpenMP /
Найдите ошибку в следующем фрагменте программы: #define N 10 int i; int tmp = 0; #pragma omp parallel { #pragma omp for firstprivate(tmp) lastprivate(tmp) for (i=0; i<N; i++) { if (i != N - 1 ) tmp += i; } }
Найдите ошибку в следующем фрагменте программы:
#define N 10
int i;
int tmp = 0;
#pragma omp parallel
{
#pragma omp for firstprivate(tmp) lastprivate(tmp)
for (i=0; i<N; i++) {
if (i != N - 1 ) tmp += i;
}
}
вопрос
Правильный ответ:
одна и та же переменная не может быть указана в клаузах
firstprivate
и lastprivate
одновременно
не определен класс для переменной
i
(отсутствует клауза private (i)
)
по завершении выполнения цикла значение переменой tmp не определено
Сложность вопроса
69
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Спасибо за решениями по intiut'у.
17 сен 2020
Аноним
Если бы не эти подсказки - я бы не смог решить c этими тестами интуит.
21 мар 2020
Другие ответы на вопросы из темы программирование интуит.
- # Строгая модель консистентности памяти определяется следующим условием:
- # Исполняемыми директивами в OpenMP являются:
- # Найдите ошибку в следующем фрагменте программы: int i, j; #pragma omp parallel default(shared) { #pragma omp for collapse (2) for (i=0; i<n; i++) { for (j=0; j < i; j++) work(i, j); } }
- # Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #define N 100 omp_set_num_threads (4); #pragma omp parallel shared(a,b,c,x,y,z) { #pragma omp for for (int i=0; i<N; i++) { z[i] = x[i] + y[i]; } #pragma omp for for (int i=0; i<N; i++) { a[i] = b[i] + c[i]; } }
- # Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #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); }