Главная / Параллельное программирование с OpenMP / Найдите ошибку в следующем фрагменте MPI/OpenMP-программы, вычисляющей число Пи: #include <mpi.h> #include <omp.h> #define num_steps 100000 void main (int argc, char *argv[]) { double pi, step, sum = 0.0 ; step = 1.0/(double) num_steps ; #prag

Найдите ошибку в следующем фрагменте MPI/OpenMP-программы, вычисляющей число Пи: #include <mpi.h> #include <omp.h> #define num_steps 100000 void main (int argc, char *argv[]) { double pi, step, sum = 0.0 ; step = 1.0/(double) num_steps ; #pragma omp parallel { int numprocs, myid, mysteps; MPI_Init(&argc, &argv) ; MPI_Comm_Rank(MPI_COMM_WORLD, &myid) ; MPI_Comm_Size(MPI_COMM_WORLD, &numprocs) ; mysteps = num_steps/numprocs ; #pragma omp for reduction(+:sum) for (int i=myid*mysteps; i<(myid+1)*mysteps ; i++){ double x = (i+0.5)*step; sum += 4.0*step/(1.0+x*x); } MPI_Reduce(&sum, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); } MPI_Finalize(); }

вопрос

Правильный ответ:

все обращения к MPI-функциям в параллельной области должны выполняться одной нитью (например, внутри конструкции single)
переменные numprocs, myid, mysteps должны быть объявлены как private(numprocs, myid, mysteps)
в данном фрагменте программы ошибки нет
Сложность вопроса
70
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Пишет вам преподаватель! Немедленно уничтожьте ответы интуит. Немедленно!
19 июн 2019
Аноним
Если бы не опубликованные подсказки - я бы не смог решить c этими тестами intuit.
05 фев 2018
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.