Доброго времени суток. Передо мной встала задача разобраться с MPI. На мой установленный
64-битный Ubuntu 9.04 я скачал какую-то кучу пакетов, которые как мне показалось будут необходимы для этого (а именно:
lam-runtime, mpich-bin, mpi-doc, libmpich1.0-dev, liblam4, libmpich1.0gf). У меня не было цели построить кластер, а просто надо было написать и отладить программу для существующего кластера.
Чтобы разобраться попытался написать простую программу на Си и назвал ее
test:
#include <stdio.h>
#include "mpi.h"
main(int argc, char **argv) {
int numtasks, taskid;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &taskid);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
printf("%d\n", taskid);
MPI_Finalize();
}
Скомпилировал ее:
#mpicc test.c -o ./testПопытался запустить:
#mpiexec -np 2 ./test, на что получил ошибку:
Lamnodes Failed!
Check if you had booted lam before calling mpiexec else use -machinefile to pass host file to mpiexec
Попытался исправиться и запустил lamboot, а потом снова запустил свой
test:
#lamboot#mpiexec -np 2 ./testТеперь получился следующий вывод:
0
0
-----------------------------------------------------------------------------
It seems that [at least] one of the processes that was started with
mpirun did not invoke MPI_INIT before quitting (it is possible that
more than one process did not invoke MPI_INIT -- mpirun was only
notified of the first one, which was on node n0).
mpirun can *only* be used with MPI programs (i.e., programs that
invoke MPI_INIT and MPI_FINALIZE). You can use the "lamexec" program
to run non-MPI programs over the lambooted nodes.
-----------------------------------------------------------------------------
mpirun failed with exit status 252
Т.е. два созданных процесса написали свои
taskid, которые почему-то оба равны 0. А потом уже была ошибка запуска, что нет MPI_INIT и MPI_FINALIZE (а они вроде как имеются). Помимо
mpiexec я также пытался использовать
mpirun, результат был таким же.
lamexec я пробовал, ошибки не было, но
taskid так же был 0 в обоих процессах.
P.S. Заранее благодарен за помощь или хотя бы за то, что Вы прочитали столь длинный пост.