【发布时间】:2017-10-06 22:13:29
【问题描述】:
我很确定在我的 PC 中分析我的数据时,我正确地控制了随机数生成器。然而,当我将脚本放在另一台服务器上运行时,我得到了不同的结果。我认为我的代码是正确的原因是因为我在机器内具有完全的可重复性。在相同的机器上总是有相同的结果!使用服务器时的不同结果...
- 我的电脑有 Windows 和一个 Intel i7(4 核),而服务器有 Linux 和一个 Intel XEON(8 核)。
我已经彻底阅读了有关 parfor 的文档,我正在做的是根据迭代编号和不是工作人员 ID 在每次迭代中分配一个特定的子流编号。
即使尝试在 8 核机器上创建一个具有相同数量的工人 (4) 的池,我仍然得到不同的结果...
这里是使用的基本代码,没有不相关的细节。
myCluster = parcluster('local'); myCluster.NumWorkers = 4;
saveProfile(myCluster); parcluster('local')
parpool('local', 4)
spmd
rng(0,'combRecursive');
end
parfor iter = 1:10
stream = RandStream.getGlobalStream();
stream.Substream = (iter);
...
...
end
【问题讨论】:
-
请编辑您的问题并以纯文本格式上传您的代码,而不是您的代码图像。
-
抱歉,这是我的第一篇文章,仍在尝试弄清楚它是如何工作的!
-
欢迎来到 Stack Overflow!您可以访问Help Center 开始使用。干杯。
-
你确定随机数不同吗?您的不同结果有何不同?
-
是的,我确信它们是不同的,而且它们的不同足以让我无法建议其他人运行我的脚本并获得“相同”的结果!实验中的统计意义有时有点脆弱......
标签: matlab random parallel-processing parfor