ตัวเลขสุ่มและแพ็คเกจมัลติคอร์


15

เมื่อเขียนโปรแกรมใน R ฉันใช้แพ็คเกจมัลติคอร์สองสามครั้ง อย่างไรก็ตามฉันไม่เคยเห็นคำสั่งเกี่ยวกับวิธีการจัดการกับตัวเลขสุ่ม เมื่อฉันใช้ openMP กับ C ฉันระวังที่จะใช้ RNG แบบขนานที่เหมาะสม แต่ด้วย R ฉันคิดว่ามีบางอย่างที่เหมาะสมเกิดขึ้น มีใครยืนยันได้ไหมว่ามีบางสิ่งที่เหมาะสมเกิดขึ้น?

ตัวอย่าง

จากเอกสารเรามี

x <- foreach(icount(1000), .combine = "+") %do% rnorm(4)

วิธีนี้เป็นrnorm`s สร้าง?

คำตอบ:


8

ผมไม่แน่ใจว่าวิธีการที่foreachผลงาน (จากแพคเกจ doMC ฉันเดา) แต่ในแบบมัลติคอร์ถ้าคุณทำอะไรบางอย่างเช่นค่าเริ่มต้นพารามิเตอร์ซึ่งจะช่วยให้แต่ละขั้นตอนเมล็ดพันธุ์ที่แตกต่างกัน (เช่น) ฉันคิดว่าโค้ดของคุณถูกแปลเป็นสิ่งที่คล้ายกันนั่นคือจะทำให้การโทรไปที่มีแบบแผนเดียวกันmclapplymc.set.seedTRUEmclapply(1:1000, rnorm)parallel

แต่ยังดูหน้า 16 จากภาพนิ่งโดยชาร์ลีเกเยอร์ซึ่งแนะนำrlecuyerแพคเกจสำหรับลำธารอิสระคู่ขนานกับการค้ำประกันทฤษฎี หน้าของเยอร์มีรหัสตัวอย่างใน R สำหรับการตั้งค่าที่แตกต่างกัน


7

คุณอาจต้องการดูหน้า 5 ของนี้ เอกสารและเอกสารนี้ ตามค่าเริ่มต้นภายใต้ R ชุดหลักแต่ละชุดจะเป็นเมล็ดของตัวเอง (ฉันดูเหมือนจะจำได้ว่าใช้เวลาที่มีความแม่นยำสูง)

หมายเหตุ: ถ้าคุณใช้ foreach () จาก Revolution-computing ภายใต้ windows ดังนั้นฉันสงสัยว่าสิ่งที่เหมาะสมจะไม่เกิดขึ้น Windows ไม่เป็นไปตาม POSIX และสิ่งนี้ควรสร้างปัญหาเมื่อแต่ละคอร์ต้องการระดับสูงที่แตกต่างกัน เวลาเริ่มต้นในการตั้งค่าเป็นเมล็ดพันธุ์ (น่าเสียดายที่ฉันไม่มีหน้าต่างที่มีประโยชน์ดังนั้นฉันจึงไม่สามารถตรวจสอบสังเกตุได้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.