RNG, R, mclapply та кластер комп'ютерів


10

Я запускаю симуляцію на R та кластер комп’ютерів і маю наступну проблему. На кожному з X комп’ютерів я запускаю:

fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)

Є 32 комп’ютери, кожен з яких має 16 ядер. Однак приблизно 2% випадкових чисел однакові. Які стратегії ви б прийняли, щоб уникнути цього?

Мені вдалося уникнути цієї проблеми для fxT2, встановивши затримку (тобто затримуючи на секунду час, на який кожне завдання надсилається на кожен з комп'ютерів X). Але це здається дуже спеціальним для fxt2.

Проблема полягає в тому, що насправді fxT2 - це довге завдання, що включає псевдовипадкові числа. В кінці процесу я очікую отримати X * nessay відтворення того ж статистичного експерименту, а не репродукції nessay. Як переконатися, що це дійсно так, і чи є спосіб це перевірити?


Хороше питання. Подивіться на це питання щодо випадкових чисел та багатоядерного пакету
csgillespie

@CSgillepsie:> дякую за вказівник, але я не впевнений, що це та сама проблема: те, як я розумію питання, на яке ви вказали, усі процеси породжуються mclapply. Тут дещо інакше: на кожній з машин усі процеси породжуються mclapply, але це не так у всіх машинах.
user603

Відповіді:


6

Сніг має явну підтримку ініціалізації заданого числа ГСЧА потоків в обчислювальному кластері.

Він може використовувати одну з двох реалізацій RNG:

Інакше вам доведеться виконувати координацію вручну.


3

Потрібно використовувати RNG, спеціально розроблений для паралельних обчислень. Дивіться розділ "Паралельні обчислення: Випадкові числа" в розділі Перегляд завдань обчислювальної техніки з високою продуктивністю .


Вам також потрібно координувати між потоками RNG. Сніг це робить, багатоядерний може зараз.
Дірк Еддельбуеттель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.