Я пытаюсь запустить репликативные цепочки байесовской статистической функции на нескольких ядрах; 1 цепь на сердечник. Функция mcmc ниже представляет собой скрипт для запуска одной цепочки mcmc. Я думаю, что я могу просто запустить mcmc функцию три раза, каждый экземпляр на отдельном ядре. Я нашел пару примеров, которые я пытался изменить, но не смог заставить его работать надлежащим образом. Я получаю следующую ошибку: 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