Я кодировал программу мультипликации матрицы mpi, которая использует scanf("%d", &size)
, определяет размер матрицы, затем я определил int matrix[size*size]
, но когда я выполнил это, он сообщил, что матрица не объявлена. Пожалуйста, скажите мне, почему, или в чем моя проблема!
По предложению Эда я изменил определение матрицы на блок if (myid == 0), но получил ту же ошибку! Теперь я публикую свой код, пожалуйста, помогите мне узнать, где я допустил ошибки! спасибо!
int size;
int main(int argc, char* argv[]) {
int myid, numprocs;
int *p;
MPI_Status status;
int i,j,k;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
if(myid == 0)
{
scanf("%d", &size);
int matrix1[size*size];
int matrix2[size*size];
int matrix3[size*size];
int section = size/numprocs;
int tail = size % numprocs;
srand((unsigned)time(NULL));
for( i=0; i<size; i++)
for( j=0; j<size; j++)
{
matrix1[i*size+j]=rand()%9;
matrix3[i*size+j]= 0;
matrix2[i*size+j]=rand()%9;
}
printf("Matrix1 is: \n");
for( i=0; i<size; i++)
{
for( j=0; j<size; j++)
{
printf("%3d", matrix1[i*size+j]);
}
printf("\n");
}
printf("\n");
printf("Matrix2 is: \n");