Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MPI_散射根进程带信号退出(6)_C++_C_Mpi_Openmpi_Mpir - Fatal编程技术网

C++ MPI_散射根进程带信号退出(6)

C++ MPI_散射根进程带信号退出(6),c++,c,mpi,openmpi,mpir,C++,C,Mpi,Openmpi,Mpir,我正在尝试读取图像(.ras)并将图像的一部分发送到每个进程。但每次我 主作业正常终止,但1进程返回非零退出代码。根据用户指示,作业已中止。 mpirun注意到节点eskandarany上PID为0的进程列组0在信号6(中止)时退出。 这是我的密码: typedef struct { struct rasterfile file; ///< Entête image Sun Raster unsigned char rouge[256],vert[256],bleu[256];

我正在尝试读取图像(.ras)并将图像的一部分发送到每个进程。但每次我

主作业正常终止,但1进程返回非零退出代码。根据用户指示,作业已中止。 mpirun注意到节点eskandarany上PID为0的进程列组0在信号6(中止)时退出。

这是我的密码:


typedef struct {
  struct rasterfile file;  ///< Entête image Sun Raster
  unsigned char rouge[256],vert[256],bleu[256];  ///< Palette de couleur
  unsigned char *data;    ///< Pointeur vers l'image
} Raster;

int main(int argc, char *argv[]) {
  Raster r;
  int    w, h, lh;  /* nombre de lignes et de colonnes de l'image */
  /* Variables liees au traitement de l'image */
  int    filtre;        /* numero du filtre */
  int    nbiter;        /* nombre d'iterations */
  /* Variables liees au chronometrage */
  double debut, fin;
  /* Variables de boucle */
  int   i,j;
  /* Nombres de processus */
  int p, my_rank, tag = 0, root = 0;
  MPI_Status status;
  if (argc != 4) {
    fprintf( stderr, usage, argv[0]);
    return 1;
  }      
  /* Saisie des paramètres */
  filtre = atoi(argv[2]);
  nbiter = atoi(argv[3]);

  /* Initialisation */
  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
  MPI_Comm_size(MPI_COMM_WORLD, &p);

  /* Lecture du fichier Raster */
  if (my_rank == root) {
    lire_rasterfile( argv[1], &r);
    h = r.file.ras_height;
    w = r.file.ras_width;
    lh = (h/p) + 2;
  }
  MPI_Bcast(&w, 1, MPI_INT, root, MPI_COMM_WORLD);
  MPI_Bcast(&lh, 1, MPI_INT, root, MPI_COMM_WORLD);
  int shift = 0;
  if (my_rank == 0 || my_rank == p-1) {
    lh--;
    shift = w;
  }
  unsigned char *bandlette = (unsigned char *) malloc(w * lh * sizeof(unsigned char));
  MPI_Scatter(r.data, w*h, MPI_UNSIGNED_CHAR, bandlette + shift, w*lh, MPI_UNSIGNED_CHAR, root, MPI_COMM_WORLD);

  printf("my rank is %i\n", my_rank);

  free(bandlette);
  free(r.data);
  MPI_Finalize();

  return 0;
} ```

类型定义结构{
结构光栅文件;//
问题在于,MPI\u分散的第二个参数是要发送到每个进程的数据大小,而不是发送缓冲区的总大小。
所以在这种情况下,它将是w*h/p

停止使用未初始化的变量!