Здравствуйте, у меня тут пример 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; }
|