Главная / Параллельное программирование с OpenMP / Найдите ошибку в следующем фрагменте 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

Найдите ошибку в следующем фрагменте 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(); }

вопрос

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

функции MPI_Init, MPI_Comm_Rank, MPI_Comm_Size и MPI_Reduce должны вызываться из параллельной области
конфликт доступа к данным (race condition), возникающий в результате выполнения оператора sum *= step в параллельной области
в данном фрагменте программы ошибки нет
Сложность вопроса
57
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Какой человек ищет данные ответы интуит? Это же элементарно (я не ботан)
22 дек 2020
Аноним
Экзамен прошёл на 5. Спасибо сайту
15 июл 2019
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.