SSブログ

MAGRO: 実行時間の比較 [統計]

MAGROはマルチコア対応ということで、WinBUGSおよびJAGSと実行時間を(いいかげんに)測定してみた。

環境: MacBook Pro (Intel Core 2 Duo 2.8GHz), Mac OS X 10.6.2, R 2.10.1 (64bit)

コード
library(rmagro)
library(R2WinBUGS)
library(rjags)

setwd("~/Documents/RData/bugs-examples/vol1/blocker")

source("blocker-data.R")
source("blocker-init.R")
data <- list(rt = rt, nt = nt, rc = rc, nc = nc, Num = Num)
inits <- list(d = d, tau = tau, mu = mu, delta = delta)
parms <- c("d", "delta.new", "sigma")

## MAGRO
magro.test <- function(n.chains = 3, n.iter = 33000,
                       n.burnin = 3000, n.thin = 10) {
  magro.samples("blocker.bug", monitor = parms,
                n.iter = n.iter, n.burnin = n.burnin, thin = n.thin,
                n.chain = n.chains,
                list.data = data, inits = inits,
                mt = 1)
}

## WinBUGS
WINE <- "/Applications/Darwine/Wine.bundle/Contents/bin/wine"
WINEPATH <- "/Applications/Darwine/Wine.bundle/Contents/bin/winepath"

winbugs.test <- function(n.chains = 3, n.iter = 33000,
                         n.burnin = 3000, n.thin = 10) {
  bugs(data, list(inits, inits, inits), parms, "blocker.bug",
       n.chains = n.chains, n.iter = n.iter, n.burnin = n.burnin,
       n.thin = n.thin,
       bugs.directory = paste(Sys.getenv("HOME"),
         ".wine/drive_c/Program Files/WinBUGS14", sep="/"),
       working.directory = NULL, clearWD = TRUE,
       useWINE=TRUE, newWINE = TRUE,
       WINE = WINE, WINEPATH = WINEPATH, debug = FALSE)
}

## JAGS
jags.test <- function(n.chains = 3, n.iter = 33000,
                      n.burnin = 3000, n.thin = 10) {
  model <- jags.model("blocker.bug", data,
                      inits = list(inits, inits, inits),
                      n.chains = n.chains, n.adapt = n.burnin)
  jags.samples(model, parms,
               n.iter = n.iter - n.burnin, thin = n.thin)
}

## Test
n.chains <- 3
n.burnin <- 3000
n.iter <- 100000 + n.burnin
n.thin <- 10

system.time(magro.test(n.chains, n.iter, n.burnin, n.thin))
system.time(winbugs.test(n.chains, n.iter, n.burnin, n.thin))
system.time(jags.test(n.chains, n.iter, n.burnin, n.thin))


結果
ユーザシステム経過
MAGRO84.41883.80344.675
WinBUGS81.58780.83583.963
JAGS231.7940.305231.396


アクティビティモニタをながめていても、MAGROでは2つのコアを目一杯つかっているのがわかる。

[追記]
JAGSがあんまりおそかったので、研究室マシン(Mac OS X 10.6.2, Intel Core 2 Duo 2.4GHz)でやりなおしてみた。
ユーザシステム経過
MAGRO98.69897.87952.633
WinBUGS96.78195.78399.855
JAGS76.7050.19576.541

と、JAGSが速くなった(それでもMAGROの方が速いが)。研究室マシンのJAGSはIntel MKLを使うようにしているので、これがきいているのか。家マシンの方は何かまちがえているのか。

[追記 2]
家マシンでも、configureを見直すと大幅に改善された。

タグ:MAGRO MCMC
nice!(0)  コメント(0)  トラックバック(1) 
共通テーマ:学問

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 1