2012.12.1
Rユーザー会2012
岡田 昌史
スライドは slidify ( http://www.slidify.org/ )で作成しました。 http://rpubs.com/mokjpn/mpirstudio にあります。
sapply(abs(floor(rnorm(10000, mean = 1000, sd = 200))), function(x) {
mean(rep(iris$Sepal.Length, x))
})
library(Rmpi)
library(snow)
cl <- makeCluster(11, type = "MPI")
parSapply(cl, abs(floor(rnorm(10000, mean = 1000, sd = 200))), function(x) {
mean(rep(iris$Sepal.Length, x))
})
library(Rmpi)
library(snow)
cl <- makeCluster(11, type = "MPI") # 12コア機
data(iris)
tf <- function(x) {
mean(rep(iris$Sepal.Length, x))
}
# 並列処理で利用する変数および関数を各ノードにコピー
clusterExport(cl, c("iris", "tf"))
parSapply(cl, abs(floor(rnorm(10000, mean = 1000, sd = 200))), tf)
system.time(parSapply(cl, abs(floor(rnorm(10000, mean = 1000, sd = 200))),
function(x) {
mean(rep(iris$Sepal.Length, x))
}))
system.time(sapply(abs(floor(rnorm(10000, mean = 1000, sd = 200))),
function(x) {
mean(rep(iris$Sepal.Length, x))
}))
並列化 | ユーザ | システム | 経過 |
---|---|---|---|
あり | 0.591 | 3.991 | 4.562 |
なし | 26.772 | 10.947 | 37.637 |
library(Rmpi)
library(snow)
cl <- makeCluster(11, type = "MPI") # 12コア機
を、
library(Rmpi)
library(snow)
cl <- getMPIcluster()
に変更。
mokada@axis:~$ cat hosts
axis.example.com slots=3
texas.example.com slots=4
mokada@axis:~$ mpirun -n 7 --hostfile /home/mokada/hosts /home/mokada/bin/RMPISNOW CMD BATCH /home/mokada/Dropbox/MPItest.R
並列化 | ユーザ | システム | 経過 |
---|---|---|---|
4コア+3コア | 5.448 | 17.093 | 22.541 |
12コア | 0.591 | 3.991 | 4.562 |
なし | 26.772 | 10.947 | 37.637 |
library(knitr)
library(markdown)
knit("AnalysisReport.Rmd")
markdownToHTML("AnalysisReport.md", "AnalysisReport.html")
#!/bin/sh
#@$-q r128
#@$-r MPItest
#@$-lP 128
#@$-lp 1
#@$-o MPItest.out
#@$-e MPItest.err
#@$-oi
cd ${QSUB_WORKDIR}
cd ~
GOTO_NUM_THREADS=1
export GOTO_NUM_THREADS
mpiexec -n 128 RMPISNOW CMD BATCH -q --no-save MPItest.R
並列化 | ユーザ | システム | 経過 |
---|---|---|---|
128ノード | 0.222 | 0.002 | 0.225 |
4コア+3コア | 5.448 | 17.093 | 22.541 |
12コア | 0.591 | 3.991 | 4.562 |
なし | 26.772 | 10.947 | 37.637 |