I am trying to make an mpi cluster using the following tutorial using ubuntu 14.04 and beagleboard xm board. The problem is that my client is beagleboard-xm which has a 32 bit armv7 processor. I have created an executable using mpic++ -o hello_world.c the contents of which are :
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
// Initialize the MPI environment
MPI_Init(NULL, NULL);
// Get the number of processes
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
// Get the rank of the process
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
// Get the name of the processor
char processor_name[MPI_MAX_PROCESSOR_NAME];
int name_len;
MPI_Get_processor_name(processor_name, &name_len);
// Print off a hello world message
printf("Hello world from processor %s, rank %d"
" out of %d processors\n",
processor_name, world_rank, world_size);
// Finalize the MPI environment.
MPI_Finalize();
}
I can compile this on both ubuntu 14.04 (intel x86_64) and beagleboard-xm. However when i try to run in parallel using for example using " mpirun -host Server,board1 ./mpi_hello_world
" i get
bash: orted: command not found
--------------------------------------------------------------------------
A daemon (pid 8349) died unexpectedly with status 127 while attempting
to launch so we are aborting.
I believe this is because the 32 bit executiable cannot be launched from my server. If i run "./mpi_hello_world on the board itself i get "-su: ./mpi_hello_world: cannot execute binary file: Exec format error
" . The reverse happens if i compile on the board and try to run it on the server. So my question is how can i have a single executable which can run on both my server and board at the same time?