RNG, R, mclapply dan cluster komputer

10

Saya menjalankan simulasi pada R dan sekelompok komputer dan memiliki masalah berikut. Di setiap komputer X yang saya jalankan:

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

Ada 32 komputer, masing-masing dengan 16 core. Namun, sekitar 2% dari angka acak identik. Strategi apa yang akan Anda adopsi untuk menghindari hal ini?

Saya dapat menghindari masalah ini untuk fxT2 dengan menetapkan latensi (yaitu menunda sebentar dalam waktu setiap pekerjaan dikirim ke masing-masing komputer X). Tapi sepertinya sangat ad-hoc ke fxt2.

Masalahnya adalah bahwa pada kenyataannya fxT2 adalah tugas panjang yang melibatkan angka acak semu. Pada akhir proses, saya berharap mendapatkan reproduksi X * nessay dari eksperimen statistik yang sama, bukan reproduksi nessay. Bagaimana memastikan bahwa ini memang benar dan apakah ada cara untuk memeriksa ini?

pengguna603
sumber
Pertanyaan bagus. Lihatlah pertanyaan ini pada nomor acak dan paket multicore
csgillespie
@CSgillepsie:> terima kasih untuk pointernya, tapi saya tidak yakin itu masalah yang sama: cara saya memahami pertanyaan yang Anda tunjuk, semua proses dihasilkan oleh mclapply. Ini sedikit berbeda: pada masing-masing mesin, semua proses dihasilkan oleh mclapply, tetapi ini tidak berlaku untuk semua mesin.
user603

Jawaban:

6

The salju memiliki dukungan eksplisit untuk menginisialisasi jumlah tertentu Ping sungai dalam perhitungan cluster.

Itu dapat menggunakan salah satu dari dua implementasi RNG:

Kalau tidak, Anda harus melakukan koordinasi dengan tangan.

Dirk Eddelbuettel
sumber
3

Anda perlu menggunakan RNG yang dirancang khusus untuk komputasi paralel. Lihat bagian "Komputasi paralel: Angka acak" pada Tampilan Tugas Komputasi Kinerja Tinggi .

Joshua Ulrich
sumber
Anda juga perlu mengoordinasikan antara aliran RNG. Snow melakukan itu, multicore mungkin sekarang.
Dirk Eddelbuettel