Cha*_*net 10 random parallel-processing prng mersenne-twister
如何在集群上生成独立的伪随机数,例如蒙特卡罗模拟?我可以有很多计算节点(例如100),我需要在每个节点上生成数百万个数字.我需要保证一个节点上的PRN序列不会与另一个节点上的PRN序列重叠.
jop*_*rat 11
您永远不应该使用从相同原始流获取的可能重叠的随机流.如果您尚未测试生成的交错流,则不了解其统计质量.
幸运的是,Mersenne Twister(MT)将帮助您完成分发任务.使用其专用算法,称为Dynamic Creator(以下称为DC),您可以创建独立的随机数生成器,以生成高度独立的随机流.
将在将使用它的节点上创建每个流.基本上,将DC视为面向对象范例中的构造函数,它创建了不同的MT实例.每个不同的实例被设计为产生高度独立的随机序列.
你可以在这里找到DC:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/DC/dc.html
它非常简单易用,你可以修复不同的参数,例如您想要获取的不同MT实例的数量或这些MT的周期.根据其输入参数,DC将运行时将更改.
除了DC附带的自述文件外,还可以查看example/new_example2.cDC存档中的文件.它显示了在给定不同输入标识符的情况下获取独立序列的调用示例,这基本上是您必须识别集群作业的内容.
最后,如果您打算进一步了解如何在并行或分布式环境中使用PRNG,我建议您阅读以下科学文章:
用于随机高性能计算的随机流的实际分布,David RC Hill,2010年高性能计算与仿真国际会议(HPCS)
| 归档时间: |
|
| 查看次数: |
3479 次 |
| 最近记录: |