8

これは R の機能の極端な方向にあると思いますが、ここでは...

私はRでいくつかの重い処理を行っています.1回の呼び出しからすべての足の仕事をする関数を書いています. ただし、複数のコアをスレッド化または利用したいと考えています。

非推奨として登場する Parallel パッケージを見てきました。関数を新しいスレッドとして呼び出すのが理想的です。

私は並列コンピューティングの複雑さを理解しており、それが世界で最も簡単なことではないことを理解していますが、役に立つパッケージや私が見落としているものを誰かが知っていれば幸いです.

乾杯

4

1 に答える 1

20

multicoreパッケージは推奨されていません: ではありませんparallel。関数のドキュメントを参照してください。これは、パッケージmclapply内で関数を並列に実行する最も簡単な方法です。parallelに非常に似てlapplyいますが、新しいオプションの引数がいくつかあります。

library(parallel)
myfun <- function(i) { Sys.sleep(1); i }
mclapply(1:8, myfun, mc.cores=4)

mclapplyスレッドではなくプロセスを使用し、Windows での並列実行をサポートしていないことに注意してください。Windows の場合は、parLapplyも参照してparallelください。これも に似てlapplyいますが、最初の引数としてクラスタ オブジェクトが必要です。これは同じ例ですが、これは基本的にどのプラットフォームでも機能します。

library(parallel)
cl <- makePSOCKcluster(4)
myfun <- function(i) { Sys.sleep(1); i }
parLapply(cl, 1:8, myfun)
stopCluster(cl)
于 2013-06-11T21:23:53.207 に答える