MPICH2 и MinGW

mikeladze

Ну жно по учебе писать проги. Но никак не могу собрать даже простенькую программу с использованием mpi. что делал:
1)установил MinGW
2)установил MPICH2
3)скопировал lib и include в MinGW
пытаюсь собрать пример:

#include<mpi.h>
#include<stdio.h>
int main(int argc, char**argv) {
int rank,size,len;
char host[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Get_processor_name(host, &len);
printf("Hello, world. I am %d of %d on %s\n",
rank, size, host);
MPI_Finalize();
return 0;
}

 
C:\MinGW\home>gcc mpi.c -lmpi
C:\Users\ASUS\AppData\Local\Temp\cc4Ds53G.o:mpi.c:(.text+0x1f): undefined reference to `_MPI_Init'
C:\Users\ASUS\AppData\Local\Temp\cc4Ds53G.o:mpi.c:(.text+0x36): undefined reference to `_MPI_Comm_rank'
C:\Users\ASUS\AppData\Local\Temp\cc4Ds53G.o:mpi.c:(.text+0x4d): undefined reference to `_MPI_Comm_size'
C:\Users\ASUS\AppData\Local\Temp\cc4Ds53G.o:mpi.c:(.text+0x64): undefined reference to `_MPI_Get_processor_name'
C:\Users\ASUS\AppData\Local\Temp\cc4Ds53G.o:mpi.c:(.text+0x93): undefined reference to `_MPI_Finalize'
collect2.exe: ошибка: выполнение ld завершилось с кодом возврата 1

что я делаю не так?

sergey_m

Собирать нужно не с помощью gcc, а с помощью враппера mpicc.

mikeladze

спасибо, решил:

gcc -c mpi.c -o mpi.o -I"c:\Program Files (x86)\MPICH2\include"
gcc -o mpi.exe mpi.o -L"c:\Program Files (x86)\MPICH2\lib" -lmpi

sergey_m

А работает то?

mikeladze

ну вроде да:

C:\MinGW\home>gcc -c mpi.c -o mpi.o -I"c:\Program Files (x86)\MPICH2\include"
C:\MinGW\home>gcc -o mpi.exe mpi.o -L"c:\Program Files (x86)\MPICH2\lib" -lmpi
C:\MinGW\home>mpi.exe
Hello, world. I am 0 of 1 on ASUS-PC

Ivan8209

А mpiexec с большим числом задач проверял?
---
То, что ты не параноик, ещё не значит, что за тобой не следят.

mikeladze

ксти перестало работать... и не помню что исправил.. (((
с большим это каким? с 8ми прошло.

mikeladze

а нет, вспомнил. В общем у меня 64bit система и с 64бит библиотеками не фурычит, а если ставить 32 то норм.
Оставить комментарий
Имя или ник:
Комментарий: