我在集群上运行 matlab。当我从集群上的交互式 matlab 会话运行我的 .m 脚本时,我的结果是可重现的。但是,当我从 qsub 命令运行相同的脚本时,作为阵列作业的一部分,远离我的监视,我得到了可信但无法重现的结果。.m 文件的作用完全相同,包括将结果保存为 .mat 文件。
任何人都知道为什么以一种方式运行脚本给出可重现的结果,而以另一种方式运行它们变得不可重现?
这仅仅是重现性的问题还是表明结果不准确?
%%%%% 感谢 spuder 的帮助。以防万一有人偶然发现并感兴趣,这里有一些进一步的信息。如果您在 Matlab 作业中使用多个线程,这可能会导致从其他作业中窃取资源,从而对结果造成严重破坏。因此,您有 2 个选项: 1. 选择对节点的独占访问。我正在使用的集群当前不允许并行阵列作业,所以这样做对我来说非常浪费 - 我拿了一个整个节点但串行使用它。2. 让 matlab 在 singleCompThread 上运行。这可能会使您的脚本需要更长的时间才能完成,但它会更快地通过队列获取作业。