複数のコアでベイジアン統計関数のレプリケートチェーンを実行しようとしています。コアあたり1本の鎖。以下の関数mcmcは、1つのmcmcチェーンを実行するためのスクリプトです。私の考えは、mcmc関数を3回実行することだけです。各インスタンスは別々のコアで実行されます。私は変更しようとした例をいくつか見つけましたが、適切に動作させることができませんでした。次のエラーが表示されます。3ノードでエラーが発生しました。最初のエラー:次元数が正しくありません。これは、私が、apply関数のパラレル・バージョンを使用する方法を理解していないと思うようになります。私はそれがまっすぐ進むはずだと思っているが、私の誤りを見つけることはできない。私は、ベイジアンの統計、プログラミング、そしてコンピュータをその場で勉強しています。誰かが私が間違っていることを教えてもらえますか?複数のベイジアンチェーンをパラレルで実行するR:3ノードでエラーが発生しました。最初のエラー:次元数が正しくありません
これまでに回答があった場合、私は助けになった回答を見つけることができませんでした。
library(parallel)
library(snowfall)
library(rlecuyer)
cps=detectCores()-5 #I have access to 8 cores, but want to target only three
sfInit(parallel=TRUE, cpus=cps)
sfExportAll()
sfClusterSetupRNG()
#necessary input; GB, all.layers, ind defined previously
nchain=3
n.mcmc=2000
df=9
#mcmc is a function to run a single mcmc chain
tmp.fcn <- function(i){
tmp.out[i]=mcmc(GB,all.layers,ind,df,n.mcmc)
}
sfExport("GB","all.layers","ind","df","n.mcmc","nchain")
tmp.time=Sys.time()
score.list=sfClusterApplySR(1:nchain,tmp.fcn)
time.1=Sys.time()-tmp.time