2013-08-27 12 views
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コアを持っていると私に伝えています... 何かヒントありがとう!

+2

あなたはどのOSを使用していますか?あなたの場合は関係ないようですが、Windows上の 'mclapply'は単に' lapply'のラッパーに過ぎないことに注意してください。 – Frank

+0

Linux。正確なレッドハット。 – reptilicus

+1

上記の例がmclapply()で実際にスピードアップしていることを誰でも確認できれば助けになります。 – reptilicus

答えて

6

同様の結果が得られますが、rnorm(10000)rnorm(100000)に変更すると、速度が大幅に向上します。追加のオーバーヘッドは、このような小規模な問題のパフォーマンス上のメリットを相殺していると思います。

関連する問題