【问题标题】:MPI matrix multification compile err: undeclared with codeMPI矩阵多重编译错误:未用代码声明
【发布时间】:2010-10-19 14:34:59
【问题描述】:

我编写了一个mpi矩阵乘法程序,它使用scanf("%d", &size),指定矩阵大小,然后我定义int matrix[size*size],但是当我编译它时,它报告矩阵未声明。请告诉我为什么,或者我的问题是什么!

根据 Ed 的建议,我将矩阵定义更改为 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");

【问题讨论】:

  • 重新格式化你的代码怎么样?
  • 呵呵,我试过了,但是布局好像不行!顺便说一句,我已经解决了这个问题!我尝试了#define MAX_SIZE 500,然后我只使用了数组的一部分^u^

标签: matrix mpi


【解决方案1】:

重新格式化的代码会很好......

一个问题是您没有声明 size 变量。另一个问题是声明数组的 [size] 符号只适用于在编译时已知的大小。您想改用malloc()

【讨论】:

  • 谢谢,我认为 scanf("%d", &size) 可以在运行时工作!我试过 scanf("%d", &size);整数矩阵[大小];在我自己的电脑上成功。但是在 mpi 环境中,它很糟糕!那是我困惑的地方!
【解决方案2】:

如果您使用动态内存分配,您实际上不需要定义 MAX_SIZE。

#include <stdio.h>
#include <stdlib.h>
...
   scanf("%d", &size); 
   int *matrix1 = (int *) malloc(size*size*sizeof(int)); 
   int *matrix2 = (int *) malloc(size*size*sizeof(int)); 
   int *matrix3 = (int *) malloc(size*size*sizeof(int));
...

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多