Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 00:03   #1
Nelly_S
Новичок
Джуниор
 
Регистрация: 07.11.2012
Сообщений: 1
По умолчанию Ошибка сегментации (С + MPI)

Всем привет, просьба проверить код.
Прога в несколько процессов обрабатывает массив.
При запуске выводит:
mpirun noticed that process rank 0 with PID 19558 on node hex exited on signal 11 (Segmentation fault).

Код:
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#include <math.h>
#define ISIZE  10000
#define JSIZE  10000


int main(int argc, char **argv)
{
   printf("prints\n");
   int myid, nums;
   int i, j, k;
   double a[ISIZE][JSIZE];
   FILE *ff;
   MPI_Status status;
   MPI_Init(&argc, &argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &myid);
   MPI_Comm_size(MPI_COMM_WORLD, &nums);
  

   double time = MPI_Wtime();
   int begin = ISIZE / nums * myid;
   int end = ISIZE / nums * (myid+1);
   if (myid == nums-1) end = ISIZE;
   for (i=begin; i<end; i++){
      for (j = 0; j < JSIZE; j++){
          a[i][j] = 10*i +j; 
          a[i][j] = sin(0.00001*a[i][j]); 
      }
   }

   if (myid != 0)
   {
	MPI_Send(&a[begin][0], (end-begin)*JSIZE, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);	
   }
   else
   {
    for (k = 1; k < nums; k++)
    {

        begin = ISIZE / nums * k;
        end = ISIZE / nums * (k+1);
        if (k == nums-1) end = ISIZE;
	MPI_Recv(&a[begin][0], (end-begin)*JSIZE, MPI_DOUBLE, k, 0, MPI_COMM_WORLD, &status);	
    }
    time = MPI_Wtime() - time;
    ff = fopen("aaas","w");   
    for(i=0; i < ISIZE; i++){
      for (j=0; j < JSIZE; j++){
          fprintf(ff,"%f ",a[i][j]);
      }
      fprintf(ff,"\n");
    }     
    fclose(ff);

    printf("time %f\n", time); 
   }
Nelly_S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка сегментации srs6270 Общие вопросы C/C++ 16 19.07.2012 11:31
С++ Линейные списки. Ошибка сегментации при добавлении элемента. litviak Общие вопросы C/C++ 10 30.10.2011 23:48
Работа с указателями. Ошибка сегментации. agronomchek Помощь студентам 1 24.08.2010 14:51
Ошибка сегментации при вызове system("PAUSE") Lavisa Общие вопросы C/C++ 9 01.08.2009 18:14
Ошибка сегментации при вызове system("PAUSE") Lavisa Помощь студентам 0 29.07.2009 17:43