1 |
827b4b87
|
Adam M. Wilson @ pfe
|
# Echo out library paths
|
2 |
|
|
.libPaths()
|
3 |
|
|
|
4 |
|
|
# Load the R MPI package if it is not already loaded
|
5 |
|
|
if (!is.loaded("mpi_initialize")) {
|
6 |
|
|
library("Rmpi")
|
7 |
|
|
}
|
8 |
|
|
|
9 |
|
|
# Echo out libraries loaded
|
10 |
|
|
library()
|
11 |
|
|
|
12 |
|
|
# Echo out what is loaded
|
13 |
|
|
search()
|
14 |
|
|
|
15 |
|
|
# Spawn as many slaves as possible
|
16 |
|
|
mpi.spawn.Rslaves()
|
17 |
|
|
|
18 |
|
|
# In case R exits unexpectedly, have it automatically clean up
|
19 |
|
|
# resources taken up by Rmpi (slaves, memory, etc...)
|
20 |
|
|
.Last <- function(){
|
21 |
|
|
if (is.loaded("mpi_initialize")){
|
22 |
|
|
if (mpi.comm.size(1) > 0){
|
23 |
|
|
print("Please use mpi.close.Rslaves() to close slaves.")
|
24 |
|
|
mpi.close.Rslaves()
|
25 |
|
|
}
|
26 |
|
|
print("Please use mpi.quit() to quit R")
|
27 |
|
|
.Call("mpi_finalize")
|
28 |
|
|
}
|
29 |
|
|
}
|
30 |
|
|
|
31 |
|
|
# Tell all slaves to return a message identifying themselves
|
32 |
|
|
mpi.remote.exec(paste("I am",mpi.comm.rank(),"of",mpi.comm.size()))
|
33 |
|
|
|
34 |
|
|
# Tell all slaves to close down, and exit the program
|
35 |
|
|
mpi.close.Rslaves()
|
36 |
|
|
mpi.quit()
|