Проблемы выполнения OpenMPI на Raspberry Pi

Я пытаюсь построить кластер beowulf с Raspberry Pi. Я загрузил следующие пакеты OpenMPI: openmpi-bin, openmpi-common, libopenmpi1.3, libopenmpi-dbg, libopenmpi-dev. Я использовал статический IP-адрес на каждом из Raspberrys и проверил соединение между ними, и оно работало. Я также включил ssh и использовал его для входа с одной Raspberry на все остальные Raspberry.

Я использовал следующий код:

#include <mpi.h>
int main(int argc, char *argv[])
{
 int tid,nthreads;
 char *cpu_name;

  /* add in MPI startup routines */
  /* 1st: launch the MPI processes on each node */
  MPI_Init(&argc,&argv);

  /* 2nd: request a thread id, sometimes called a "rank" from
          the MPI master process, which has rank or tid == 0
   */
  MPI_Comm_rank(MPI_COMM_WORLD, &tid);

  /* 3rd: this is often useful, get the number of threads
          or processes launched by MPI, this should be NCPUs-1
   */
  MPI_Comm_size(MPI_COMM_WORLD, &nthreads);

  /* on EVERY process, allocate space for the machine name */
  cpu_name    = (char *)calloc(80,sizeof(char));

  /* get the machine name of this particular host ... well
     at least the first 80 characters of it ... */
  gethostname(cpu_name,80);

  printf("hello MPI user: from process = %i on machine=%s, of NCPU=%i processes\n",
         tid, cpu_name, nthreads);
  MPI_Finalize();
  return(0);
}

Сначала я протестировал код только с двумя платами, и он работал нормально, без проблем, без ошибок, и он напечатал оператор printf в коде. Я создал файл хоста, который включает в себя следующее:

Pi0
Pi1
Pi2
Pi3

У меня 4 малиновых писанки. Я скопировал код на каждом из них и скомпилировал код, также используя следующие операторы:

mpicc -g -0O -c hello-mpi.c -o hello-mpi.o
mpicc -g hello-mpi.o -o hello-mpi

Я выполнил код со следующей инструкцией:

mpirun -np 4 -hostfile hostfile hello-mpi

когда я запускаю программу, ничего не происходит, она просто выдает новую пустую строку. Ошибок также не указано. Любое предложение, что я могу сделать, чтобы заставить его работать


person Mahmoud Abdel-Rahman    schedule 04.05.2015    source источник
comment
для OpenMPI используйте параметр (-n) вместо (-np): stackoverflow.com/a/13898537/992406   -  person houssam    schedule 04.05.2015
comment
Вы можете попробовать использовать параметр mpirun -output-filename для перенаправления вывода в файлы. Я бы также сбросил stdout сразу после printf, используя fflush(stdout);, потому что я параноик.   -  person Steve Weston    schedule 04.05.2015
comment
Есть ли у вас беспарольный доступ по ssh от одного Pi к другому?   -  person Carles Fenoy    schedule 05.05.2015
comment
Здравствуйте, проблема была с паролем ssh, я сделал беспарольный доступ к ssh, программа работала нормально и показала результат   -  person Mahmoud Abdel-Rahman    schedule 07.05.2015