5
私は複数のcsvファイルを処理して、Rでデータフレームを返します。並列にはmclapply()
を使用しています。私は64コアのマシンを持っていますが、今のところ利用されている1コアがmclapply()
を使用しているようには思えません。実際にはではなく、lapply()
を実行するのが少し速いです。以下は、mclapply()がより多くのコアを利用していないことを示す例です。mclapply複数のコアを使用していません
library(parallel)
test <- lapply(1:100,function(x) rnorm(10000))
system.time(x <- lapply(test,function(x) loess.smooth(x,x)))
system.time(x <- mclapply(test,function(x) loess.smooth(x,x), mc.cores=32))
user system elapsed
0.000 0.000 7.234
user system elapsed
0.000 0.000 8.612
これを稼働させるにはいくつかのトリックがありますか?私はこのマシン(v3.0.1)のソースからRをコンパイルしなければなりませんでしたが、フォークするのを忘れたコンパイルフラグがありますか? detectCores()
は、実際には64コアを持っていると私に伝えています... 何かヒントありがとう!
あなたはどのOSを使用していますか?あなたの場合は関係ないようですが、Windows上の 'mclapply'は単に' lapply'のラッパーに過ぎないことに注意してください。 – Frank
Linux。正確なレッドハット。 – reptilicus
上記の例がmclapply()で実際にスピードアップしていることを誰でも確認できれば助けになります。 – reptilicus