fork download
  1. library(Rmpi)
  2. mpi.spawn.Rslaves(needlog = FALSE)
  3.  
  4. mpi.bcast.cmd( id <- mpi.comm.rank() )
  5. mpi.bcast.cmd( np <- mpi.comm.size() )
  6. mpi.bcast.cmd( host <- mpi.get.processor.name() )
  7. result <- mpi.remote.exec(paste("I am", id, "of", np, "running on", host))
  8.  
  9. print(unlist(result))
  10.  
  11. mpi.close.Rslaves(dellog = FALSE)
  12. mpi.exit()
  13.  
  14.  
Success #stdin #stdout #stderr 0.26s 39516KB
stdin
#include <stdio.h> #include <mpi.h>

int main(int argc, char *argv[])

int node, value, numProcs, size,i, p, tag, start_row, sum1, sum2;

int chunk_size;

int Myarray1[20],Myarray2[10]; MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD, &node); MPI_Comm_size(MPI_COMM_WORLD, &numProcs);

size = 12;

sum1 = 0; sum2 = 0;

chunk_size=3;

if(node == 0)

{

printf("The Original Array Myarray1 has: \n"); for(i=0; i<size; i++)

{

}

Myarray1[i] = (i*2); printf("Myarray1[%d] = %d\n",i,Myarray1[i]);

for(i=0; i<chunk_size; i++) Myarray2[i] = Myarray1[i]; for(p=1; p<numProcs; p++)

{

start_row = p*chunk_size;

MPI_Send(&Myarray1 [start_row], chunk_size,MPI_INT, p, tag, MPI_COMM_WORLD);

} } /*end if*/

else

MPI_Recv(&Myarray2, chunk_size, MPI_INT,0, tag, MPI_COMM_WORLD, &status);

for(i=0; i<chunk_size; i++) sum1 = sum1+ Myarray2[i];

MPI_Reduce(&sum1, &sum2, 1, MPI_INT, MPI_SUM, 0,MPI_COMM_WORLD); printf("I am node: %d My Sum = %d\n",node, sum1);

if(node == 0)

printf("My Rank is: %d The Total = %d\n",node,sum2);

MPI_Finalize(); return 0;

}

}
stdout
Standard output is empty
stderr
Error in library(Rmpi) : there is no package called ‘Rmpi’
Execution halted