[R-sig-hpc] parallelising: nodes and cores
Martin Ivanov
martin.ivanov at ifg.uni-tuebingen.de
Sat Apr 20 19:19:29 CEST 2013
Dear all,
I have a task, which I would like to run in parallel on 3 nodes, each
with 2 cores.
So I create an MPI cluster, use clusterSplit to split the task into 3
subtasks, one for each node.
My question is: Will the function in the fun argument to clusterApply be
run in parallel on the 2 available cores on each node?
Do I need to explicitly parallelise within fun along the 2 available
cores on the current node?
To be more specific, this is my current setup (testNodes.R):
library(parallel);
library(snow);
library(Rmpi);
cl <- makeCluster(spec=3L, type="MPI", outfile=""); # 3 slave nodes are
created
x <- seq_len(20L);
xseq <- clusterSplit(cl=cl, seq=x);
y <- clusterApply(cl=cl, x=xseq, fun=function(x)
list(sysInfo=Sys.info()[c("nodename","machine")], x=x));
save(x,y, xseq, file="/home-link/epaiv01/test.RData");
stopCluster(cl=cl);
mpi.quit()
I submit this script (testNodes.R) to torque via:
#!/bin/bash
#PBS -l nodes=1:ppn=1+3:ppn=2
#PBS -l walltime=00:01:00
#PBS -l pmem=100kb
. /$HOME/.bashrc
cd $PBS_O_WORKDIR
mpirun -np 1 --hostfile ${PBS_NODEFILE}
/home-link/epaiv01/system/usr/bin/Rscript testNodes.R
I have deliberately chosen 1 node with 1 core for the master process,
and 3 nodes with 2 cpus for the slave processes, spawned in R.
The question is, will clusterApply use the 2 cores on each node? How can
I make sure that the task is not actually
enaging only 1 core on the current node? Is there a way to actually
check that?
Any comments will be appreciated.
Best regards,
Martin
--
Dr. Martin Ivanov
Eberhard-Karls-Universität Tübingen
Mathematisch-Naturwissenschaftliche Fakultät
Fachbereich Geowissenschaften
Water & Earth System Science (WESS)
Hölderlinstraße 12, 72074 Tübingen, Deutschland
Tel. +4970712974213
More information about the R-sig-hpc
mailing list