Язык программирования: C++, OpenMP, MPI Для себя Необходимо объяснить общую суть работы программы. Очевидно, что используется метод центральных прямоугольников для вычисления интеграла 4.0 / (1.0 + x * x), в пределах интегрирования от 1 до бесконечности. Этот интеграл даёт значение числа пи. Мне не понятны вот эти куски кода: Эта часть: if (myid == 0) { N = 1000000000; for (i = 1; i < numprocs; i++) MPI_Isend(&N, 1, MPI_LONG, i, tag, MPI_COMM_WORLD, &request[i - 1]); MPI_Waitall(numprocs - 1, request, stat); startwtime = MPI_Wtime(); } else { MPI_Recv(&N, 1, MPI_LONG, 0, tag, MPI_COMM_WORLD, &recvs); } h = 1.0 / (double)N; sum = 0.0; И эта часть: if (myid == 0) { pi = mypi; for (i = 1; i < numprocs; i++) { MPI_Irecv(&temp[i], 1, MPI_DOUBLE, i, tag, MPI_COMM_WORLD, &request[i - 1]); MPI_Waitall(numprocs - 1, request, stat); } for (i = 1; i < numprocs; i++) pi = pi + temp[i]; printf(“Pi is approximately %.24f, Error is %.24f\n“, pi, fabs(pi - PI25DT)); endwtime = MPI_Wtime(); printf(“Time = %f\n“, endwtime - startwtime); } else { MPI_Send(&mypi, 1, MPI_DOUBLE, 0, tag, MPI_COMM_WORLD); } Объясните, пожалуйста