Create a Rich Message Passing Interface (MPI) Cluster of R Workers for Parallel Processing
Create a Rich Message Passing Interface (MPI) Cluster of R Workers for Parallel Processing
The makeClusterMPI() function creates an MPI cluster of workers for parallel processing. This function utilizes makeCluster(..., type = "MPI") of the parallel package and tweaks the cluster in an attempt to avoid stopCluster() from hanging (1). WARNING: This function is very much in a beta version and should only be used if parallel::makeCluster(..., type = "MPI") fails.
workers: The number workers (as a positive integer).
autoStop: If TRUE, the cluster will be automatically stopped using stopCluster() when it is garbage collected, unless already stopped. See also autoStopCluster().
verbose: If TRUE, informative messages are outputted.
``: Optional arguments passed to makeCluster(workers, type = "MPI", ...).
Returns
An object of class c("RichMPIcluster", "MPIcluster", "cluster") consisting of a list of "MPInode" workers.
Details
**Creating MPI clusters requires that the Rmpi and snow
packages are installed.**
Alternative usage
In R (>= 4.4.0), an alternatively to using cl <- parallelly::makeClusterMPI(workers) is:
cl <- parallel::makeCluster(workers, type = parallelly::MPI)
Examples
## Not run:if(requireNamespace("Rmpi")&& requireNamespace("snow")){ cl <- makeClusterMPI(2, autoStop =TRUE) print(cl) y <- parLapply(cl, X =1:3, fun = sqrt) print(y) rm(list ="cl")}## End(Not run)