2012-04-03 3 views
0

Я работаю в кластере, где каждый узел имеет 16 процессоров. Моя версия Open MPI - 1.5.3. Я написал следующий простой код в Fortran:mpirun не работает с двумя узлами

program MAIN 
    implicit none 
    include 'mpif.h' 
    integer status(MPI_STATUS_SIZE) 
    integer ierr,my_rank,size 


    integer irep, nrep, iex 
    character*1 task 


    !Initialize MPI 
    call mpi_init(ierr) 
    call mpi_comm_rank(MPI_COMM_WORLD,my_rank,ierr) 
    call mpi_comm_size(MPI_COMM_WORLD,size,ierr) 


    do iex=1,2 

    if(my_rank.eq.0) then 
     !Task for the master 
     nrep = size 

     do irep=1,nrep-1 
      task='q' 
      print *, 'master',iex,task 
      call mpi_send(task,1,MPI_BYTE,irep,irep+1, 
&      MPI_COMM_WORLD,ierr) 
     enddo 


    else 
     !Here are the tasks for the slaves 


     !Receive the task sent by the master node 
     call mpi_recv(task,1,MPI_BYTE,0,my_rank+1, 
&     MPI_COMM_WORLD,status,ierr) 


     print *, 'slaves', my_rank,task 


    endif 

    enddo 


    call mpi_finalize(ierr) 

    end 

затем компилировать код с:

/usr/lib64/openmpi/bin/mpif77 -o test2 test2.f 

и запустить его с

/usr/lib64/openmpi/bin/mpirun -np 32 -hostfile nodefile test2 

мой nodefile выглядит следующим образом:

node1 
node1 
... 
node2 
node2 
... 

с node1 an d node2 повторяется 16 раз каждый.

Я могу скомпилировать успешно. Когда я запускаю его для -np 16 (так что только один узел), он работает отлично: каждый подчиненный заканчивает свою задачу, и я возвращаю запрос обратно в терминал. Но когда я пытаюсь -np 32, не все подчиненные заканчивают свою работу, только 16 из них.

На самом деле с 32 узлами программа не дает мне назад, так что я думаю, что программа уложена где-то и ждет некоторой задачи для выполнения.

Я хотел бы получить от вас любые комментарии, поскольку я провел некоторое время в этой тривиальной проблеме.

Спасибо.

+0

попробуйте этот узел 0: 16 node1: 16 – peaceman

ответ

0

Я не уверен, что ваш файл узла верен. Я бы ожидал увидеть такие строки:

node1 slots=16 

OpenMPI довольно хорошо документирован, вы проверили их FAQ?

+0

На самом деле я пробовал несколько способов настроить узлы, включая -host node1, node2. Я попробовал то, что вы сказали, и поведение точно такое же. Я не вернусь назад. – armando

Смежные вопросы