我试图在计算集群中同时运行一段代码的多个实例(2000 个实例左右)。它的工作方式是,我提交作业,集群将在节点经常打开时运行它们,每个节点有多个作业。这似乎在使用时间种子的随机数生成中为大量实例生成相同的值。
我可以使用一个简单的替代方案吗?可重复性和安全性并不重要,重要的是快速生成独特的种子。最简单的方法是什么,如果可能的话,跨平台方法会很好。
The rdtsc
指令是一个非常可靠(且随机)的种子。
在 Windows 中,可以通过以下方式访问__rdtsc()
固有的。
在 GNU C 中,可以通过以下方式访问它:
unsigned long long rdtsc(){
unsigned int lo,hi;
__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
return ((unsigned long long)hi << 32) | lo;
}
该指令测量自处理器加电以来的总伪周期。鉴于当今机器的高频率,即使两个处理器同时启动并且时钟速度相同,它们也极不可能返回相同的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)