PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 10 дек 18 18:16

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 8 мар 15 0:47 
Не в сети

Зарегистрирован: 16 июн 14 18:41
Сообщения: 9
Здравствуйте, у меня тут пример 1.3 из книги Корнеева В.Д. Параллельное программирование в MPI.
Значит переписал пример из книги в Visual Studio 2007 и запустил. Вылезло 4 ошибки - подскажите, пожалуйста, как их исправить?(У меня на компьютере стоит Windows XP и MPICH2)
________Перечень ошибок_______________
Error 1 error C3861: 'MPI_DIMS_CREATE': identifier not found
Error 2 error C2664: 'MPI_Cart_create' : cannot convert parameter 6 from 'MPI_Comm' to 'MPI_Comm *'
Error 3 error C2664: 'MPI_Cart_shift' : cannot convert parameter 4 from 'int' to 'int *'
Error 4 error C2664: 'MPI_Cart_shift' : cannot convert parameter 4 from 'int' to 'int *'
________Код программы_________________

#include "stdafx.h"
#include "mpi.h"
#include "stdio.h"
#include "iostream"
int main(int argc, char **argv)
{ int size, rank, coords[2], source, dest;
int dims[2];
int reorder, periods[2];
MPI_Comm comm_2d;
//Инициализация библиотеки MPI
MPI_Init(&argc, &argv);
//Каждая ветвь определяет размер системы, если он больше 12, то завершение
MPI_Comm_size(MPI_COMM_WORLD,&size);
if (size > 12)
MPI_Abort(MPI_COMM_WORLD,MPI_ERR_OTHER);
//Каждая ветвь определяет свой номер
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
//Создание топологии "двумерная решетка" с количеством компьютеров 12
dims[0]=3;
dims[1]=0;
//Делаем разбивку всех компьютеров на двумерную решетку, т.е. с помощью функции
//MPI_DIMS_CREATE заполняем массив размерностей dims, с учетом того, что dims[0]=3,
//запишет dims[1]=4
MPI_DIMS_CREATE(size,2,dims);
periods[0]=0; // грани вдоль 0-координаты не замкнуты
periods[1]=0; // грани вдоль 1-координаты не замкнуты
reorder=0; // в новой топологии номера компьютеров останутся прежними
MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, reorder,comm_2d);
// 12 процессов из MPI_COMM_WORLD объединяются в группу comm_2d,
// с рангами как в MPI_COMM_WORLD
// Находим декартовы координаты */
MPI_Cart_coords(comm_2d, rank, 2, coords);
// Каждый компьютер вычисляет соседей source и dest вдоль
// нулевой координаты
MPI_Cart_shift(comm_2d, 0, 1, source, dest);
// Каждый компьютер вычисляет соседей source и dest вдоль
// первой координаты
MPI_Cart_shift(comm_2d, 1, 1, source, dest);
// Продолжение программы
MPI_Finalize();
system("PAUSE");
return 0;
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 8 мар 15 5:02 
Не в сети

Зарегистрирован: 2 ноя 11 19:40
Сообщения: 26
Откуда: Владивосток
Синтаксически
Err1. MPI_DIMS_CREATE заменить на MPI_Dims_create
Err2. comm_2d заменить на &comm_2d
Err3 и Err4. source заменить на &source (и еще dest также похоже придется сделать).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 8 мар 15 13:26 
Не в сети

Зарегистрирован: 16 июн 14 18:41
Сообщения: 9
Поменял код, сделал как вы сказали
Код:
   MPI_Dims_create(size,2,dims);

И тут тоже
Код:
    MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, reorder,&comm_2d);
    MPI_Cart_coords(comm_2d, rank, 2, coords);
    MPI_Cart_shift(comm_2d, 0, 1, &source, &dest);
    MPI_Cart_shift(comm_2d, 1, 1, &source, &dest);

В общем, ошибки эти 4 исчезли, Спасибо большое.


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

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


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

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


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

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