ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
110
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
res1[i*n+j] = A[i+1][j];
}
}
printf(" id = %i, itcnt = %i \n",iam,itcnt);
if(iam != 0)
{
MPI_Send(res1, m*n, MPI_DOUBLE, 0,
101, MPI_COMM_WORLD);
}
if(iam == 0) {
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
result[i][j]=A[i][j];}}
for(i=1; i<nprocs; i++)
{
MPI_Recv(res1, m*n, MPI_DOUBLE, i,
101, MPI_COMM_WORLD, &status);
int i1, j1;
for(i1=0;i1<m;i1++)
for(j1=0;j1<n;j1++)
result[i*m+i1][j1]=res1[i1*n+j1];
}
}
break;
}
}
if(iam == 0)
{
char mode_w = 'w';
FILE* stream;
stream = fopen("laplas.txt", &mode_w);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
fprintf(stream, "%f ", result[i][j]);
}
fprintf(stream, "\n");
}
fclose(stream);
printf("number of iterations = %i \n",itcnt);
}
MPI_Finalize();
return 0;
}
1...,102,103,104,105,106,107,108,109,110,111 113,114,115,116,117,118,119,120,121,122,...180