Главная /
Параллельное программирование с OpenMP /
Найдите ошибку в следующем фрагменте программы: int main (void){ int a; #pragma omp parallel private(a) { #pragma omp single a = 0; #pragma omp for reduction(+:a) for (int i = 0; i < 10; i++) { a += i; } } }
Найдите ошибку в следующем фрагменте программы:
int main (void){
int a;
#pragma omp parallel private(a)
{
#pragma omp single
a = 0;
#pragma omp for reduction(+:a)
for (int i = 0; i < 10; i++) {
a += i;
}
}
}
вопрос
Правильный ответ:
перед директивой
for
отсутствует директива barrier
в директиве
parallel
клауза private (a)
должна быть заменена на shared(a)
в данном фрагменте программы ошибки нет
Сложность вопроса
62
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Экзамен прошёл на отлично. Спасибо за халяуву
17 ноя 2018
Аноним
Я преподаватель! Незамедлительно уничтожьте сайт с ответами по интуит. Немедленно!
09 сен 2016
Другие ответы на вопросы из темы программирование интуит.
- # Использование оператора exit в структурном блоке OpenMP:
- # Клауза copyin:
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #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 #include "omp.h" void work(int i); int main () { #pragma omp parallel { omp_set_schedule (omp_sched_dynamic); #pragma omp for for (int i=0;i<N;i++) work (i); } }
- # Найдите ошибку в следующем фрагменте MPI/OpenMP-программы, вычисляющей число Пи: #include <mpi.h> #include <omp.h> #define num_steps 100000 void main (int argc, char *argv[]) { int numprocs, myid, mysteps; double pi, step, sum = 0.0 ; MPI_Init(&argc, &argv) ; MPI_Comm_Rank(MPI_COMM_WORLD, &myid) ; MPI_Comm_Size(MPI_COMM_WORLD, &numprocs) ; step = 1.0/(double) num_steps ; mysteps = num_steps/numprocs ; #pragma omp parallel shared(myid, mysteps, step) { #pragma omp for reduction(+:sum) for (int i=myid*mysteps; i<(myid+1)*mysteps ; i++){ double x = (i+0.5)*step; sum += 4.0 /(1.0+x*x); } sum *= step ; } MPI_Reduce(&sum, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); MPI_Finalize(); }