PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 21 июл 18 8:29

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Краевая задача....
СообщениеДобавлено: 24 мар 09 14:12 
Не в сети

Зарегистрирован: 19 мар 09 20:21
Сообщения: 2
Здравствуйте люди добрый. Мне необходима Ваша помощь. Проблема такая.
Необходимо реализовать алгоритм Решения краевых задач.
Стандартный который пишиться во всех учебниках не подходит. Хотелось бы разработать такой
Есть нулевой процесс он создаёт большую матрицу. Остальные процессы создают только матрицу того размера которая нужна для расчета. т.е. нулевой процесс должен отправить всем процессам их размеры матриц когда они посчитают результат собирается в главном.

Проблема моя заключалась в том что не получается работать с динамическими массивами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Краевая задача....
СообщениеДобавлено: 24 мар 09 23:07 
Не в сети

Зарегистрирован: 21 май 08 0:32
Сообщения: 14
Откуда: ОФиВП ФФ МГУ
Динамические массивы в программах, использующих MPI, создаются обычным образом. Если бы вы написали, что у вас уже есть, было бы проще ответить на вопрос. А так похоже что вы и не начинали :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Краевая задача....
СообщениеДобавлено: 24 мар 09 23:13 
Не в сети

Зарегистрирован: 19 мар 09 20:21
Сообщения: 2
Код:
// ***************** Создаем димнамический массив **************************
   static double *f = new double[MX*MY];
   for (int i=0; i < MX;i++)
      f[i] = new double[MY-1];

   static double *df = new double[MX*MY];
   for (int i=0; i < MX;i++)
      df[i] = new double[MY-1];
//*********************** тут идет обмен между процессами *******************
.
.
.
.
//*********************** расчитываем ************************************
for (int i = 1; i < (mx*mx-1); i= i + block)
   for (int j = 1;j < (block-1);j++){
      df[block + i+j] = (f[i+block+j] + f[i-block -j] + f[i-1+j] + f[i+1+j])*0.25 - f[block + i+j];
   }

for (int i = 1; i < (mx*mx-1);i = i + block)
   for(int j = 1; j < (my-1); j++)
      f[i+j] += df[i+j];

А вот тут вылазит ошибка ***************************************************
MPI_Gather(f,mx_my,MPI_DOUBLE,f,mx_my,MPI_DOUBLE,0,MPI_COMM_WORLD);



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Краевая задача....
СообщениеДобавлено: 25 мар 09 20:44 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
Creator_ писал(а):
Код:
// ***************** Создаем димнамический массив **************************
   static double *f = new double[MX*MY];
   for (int i=0; i < MX;i++)
      f[i] = new double[MY-1];

Так делать нельзя. Или уж выделяйте один массив MX*MY или делайте MX массивов длины MY. Одно из двух. Судя по тому, что у Вас далее, нужен первый вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Краевая задача....
СообщениеДобавлено: 30 янв 15 15:51 
Не в сети

Зарегистрирован: 30 янв 15 15:48
Сообщения: 1
Интересный факт, закоменчивая первый вызов MPI_SEND, программа (по коду) переходит к вызову процедуры MPI_RECV, и как и должно - переходит в режим ожидания буфера, т.е. дело не в передаче буфера, как я думал, а есть подозрение, что сама реализация MPI_SEND в MPICH2 для фортрана с багом.

_________________
We offer best quality learnspanishtoday test papers build a burrito! and Spanish Words dumps materials. You can get our 100% guaranteed questions pittstate to help you in passing the real exam of www.mica.edu


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB