Генерация случайных чисел с помощью doSMP

Я пытаюсь использовать пакет doSMP для параллельного программирования на R. Вот фрагмент кода, который я написал, чтобы проверить, начинается ли каждая реплика MC с одного и того же начального числа и дает ли ГСЧ одно и то же число. Случайные числа получаются одинаковыми. Я хочу, чтобы каждая реплика MC была случайной (я генерирую случайные числа в run.MC.replicate). Как я могу это исправить?

par.mc.result<- foreach(mc =1:nmc,.packages=c("MASS") ) %dopar% {

    source("./src/simulation_math_util_fn.R")

    source("./src/oosMDS.R")
    source("./src/smacofM.R")
    source("./src/oosIM.R")
    sink(file=paste("debug",mc,collapse=""))
    print(runif(1))
            run.MC.replicate(myParams)

    }

Я предполагаю, что такое поведение происходит из-за того, как doSMP генерирует дочерние процессы R. Пожалуйста помоги


person statistician_in_training    schedule 06.05.2011    source источник


Ответы (1)


Вам нужен ГСЧ, подходящий для параллельных вычислений. Перейдите в представление задач высокопроизводительных вычислений и просмотрите раздел Параллельный вычисления: случайные числа. В нем перечислены rsprng и rlecuyer.

person Joshua Ulrich    schedule 06.05.2011
comment
Очень хороший совет. Снежный пакет даже занимается правильной инициализацией различных потоков, к которым я постоянно возвращаюсь. Я никогда не могу вспомнить, знает ли семья до * или нет. - person Dirk Eddelbuettel; 07.05.2011