mpirun не работает с двумя узлами

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

  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 и node2, повторяющимися по 16 раз каждый.

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

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

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

Спасибо.


person armando    schedule 03.04.2012    source источник


Ответы (2)


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

node1 slots=16

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

person High Performance Mark    schedule 03.04.2012
comment
На самом деле я пробовал несколько способов настроить узлы, включая -host node1,node2. Я попробовал то, что вы сказали, и поведение точно такое же, я не получаю подсказку. - person armando; 03.04.2012

вы пробовали mpiexec вместо mpirun?

person arunmoezhi    schedule 20.07.2012