snow::clusterApply
'u kullanarak bir işlevi paralel olarak uygulamak istiyorum. İşlevim, işlevin bir bölümünde geçici (önceden tanımlanmış) bir tohum kullanır, ancak genel olarak bağımsız rasgele sayıları korumalıdır. Geçici tohumlar her "iş" için farklıdır.R Kar rlecuyer: geçici tohumlu fonksiyonu uygulayın
ben aşağıdakileri yapabilirsiniz: Kar paket belgelerinde (http://homepage.stat.uiowa.edu/~luke/R/cluster/cluster.html) bölümünün "KAR Kümelerinde Üniforma Rasgele Sayı Üretimi" de verilen linke aşağıdaki Ancak
# setting up cluster of type="SOCK"
library(snow)
cl <- makeSOCKcluster(2)
# this is my function
myfu <- function(seed){
# temporary seed:
x <- R.utils::withSeed(rnorm(10),seed)
# more calculation with independent RNG:
y <- x*rnorm(10)
return(list(stays=x,changes=y))
}
# run example:
seed <- 1:4
data.frame(clusterApply(cl,seed,myfu))
# reproduce
data.frame(clusterApply(cl,seed,myfu))
stopCluster(cl)
, okudum "varsayılan olduğunu Rastgele sayı üreteçlerinin oldukça ilişkili olması muhtemeldir ve örneğin, örneğin Paket rlecuyer
. Benim kodunda olduğunu eklemeyi denerseniz
Şimdi, set.seed
veya withSeed
hiçbir kullanılacak malzeme bir daha:
# setting up cluster of type="SOCK"
library(snow)
library(rlecuyer)
cl <- makeSOCKcluster(2)
# setup RNG Stream
clusterSetupRNGstream(cl,seed=1:6)
# run example:
seed <- 1:4
data.frame(clusterApply(cl,seed,myfu))
# can't reproduce
data.frame(clusterApply(cl,seed,myfu))
stopCluster(cl)
nasıl onları çağırmak gerektiğinde ben set.seed
veya withSeed
paralel geçici bir çözüm olabilir iş temeli ve clusterApply
çağrı öncesinde değil mi?