ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
107
int m;
int n = 400;
int npmin = 1;
int nps = n/npmin+1;
int itmax = 1000;
double A[500][500];
double B[500][500];
double sendlast[500];
double recvlast[500];
double sendfirst[500];
double recvfirst[500];
double diffnorm,gdiffnorm,eps, time;
int left, right, i, j, k, itcnt, tag;
int iam, nprocs;
MPI_Status status;
double result[500][500],res1[100000];
// Параметры:
// n - количество точек области в каждом направлении;
// npmin - минимальное число процессоров для решения задачи;
// npsаа - число столбцов локальной части матрицы. Этот
// параметр введен в целях экономии памяти;
// itmax - максимальное число итераций, если сходимость не
// будет достигнута.
// Определение числа процессоров, выделенных задаче (NPROCS),
// и номера текущего процессора (IAM)
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &iam);
// Установка критерия достижения сходимости
eps = 0.01;
// Вычисление числа строк, обрабатываемых процессором
// n/nprocs - целое
m = n/nprocs;
// Задание начальных и граничных значений
for(i=0;i<m+2;i++)
{
for(j=0;j<n;j++)
{
A[i][j] = 0.0;
}
}
for(i=0;i<m+2;i++)
{
A[i][0] = 10.0;
A[i][n-1] = 10.0;
}
if(iam == 0)
{
for(j=0;j<n;j++)
1...,99,100,101,102,103,104,105,106,107,108 110,111,112,113,114,115,116,117,118,119,...180