, призначеним для обчислення інтеграла F (X) на всьому інтервалі [X (1), X (N)]. Процесорам 1. (N-1) ставляться у відповідність підінтервали [X (I), X (I +1)]. Потім обчислюється інтеграл Q (I) методом прямокутників для кожного відрізка інтервалу функції F (x). p align="justify"> Процесор 0 передає процесору I кордону відведеного йому подинтервала. Процесор I повертає процесору 0 розрахований значення Q (i). br/>
Лістинг програми на мові С.
# include
# include
# include
# include
# include "mpi. h "main (int argc, char * argv []);
double f (double x); timestamp (void);
{end_time; h; i; ierr; m; master = 0; n; process; process_id; process_num;
double q_global; q_local;
int received; source; start_time; _Status status; tag;
int target; x; xb [2]; x_max = 3.0; x_min = 0.0; = MPI_Init (& argc, & argv);
/*
Визначимо номер поточного процесора.
*/= MPI_Comm_rank (MPI_COMM_WORLD, & process_id);
/*
Отримання кількості процесорів
*/= MPI_Comm_size (MPI_COMM_WORLD, & process_num);
/*
Перевірка кількості доступних процесорів
*/
if (process_id == master)
{
timestamp ();
printf (" n");
printf ("Головний процесор: n");
printf (" n");
printf ("Програма для вичіленія певних інтегралів, n");
printf ("Призначення підінтервалів процесорам. n");
printf (" n");
printf ("кількість процесорів% d n", process_num);
start_time = MPI_Wtime (); (process_num <= 1)
{
printf (" n");
printf ("головний процесор: n");
printf ("Потрібно як мінімум 2 процесора! n"); = MPI_Finalize (); (" n");
printf ("Головний процесор: n");
printf ("Ненормальне завершення роботи. n");
exit (1);