0

我在集群上运行 matlab。当我从集群上的交互式 matlab 会话运行我的 .m 脚本时,我的结果是可重现的。但是,当我从 qsub 命令运行相同的脚本时,作为阵列作业的一部分,远离我的监视,我得到了可信但无法重现的结果。.m 文件的作用完全相同,包括将结果保存为 .mat 文件。

任何人都知道为什么以一种方式运行脚本给出可重现的结果,而以另一种方式运行它们变得不可重现?

这仅仅是重现性的问题还是表明结果不准确?

%%%%% 感谢 spuder 的帮助。以防万一有人偶然发现并感兴趣,这里有一些进一步的信息。如果您在 Matlab 作业中使用多个线程,这可能会导致从其他作业中窃取资源,从而对结果造成严重破坏。因此,您有 2 个选项: 1. 选择对节点的独占访问。我正在使用的集群当前不允许并行阵列作业,所以这样做对我来说非常浪费 - 我拿了一个整个节点但串行使用它。2. 让 matlab 在 singleCompThread 上运行。这可能会使您的脚本需要更长的时间才能完成,但它会更快地通过队列获取作业。

4

1 回答 1

1

有很多变数在起作用。排除网络性能和负载等瞬态问题,这里有几个可能的解释:

当您从使用 qsub 运行交互式作业时,您将获得不同批次的节点。

我已经看到一些站点将“独占”策略分配给运行交互式作业的节点,并将“共享”策略分配给运行排队的“qsub”作业的节点。如果是这种情况,那么您几乎总是会在独占节点上看到更好的性能。

另一个答案可能是交互式作业被分配给网络拥塞较少的节点。

此外,如果您请求多个节点,并且您碰巧落在遍历多个跃点的节点上,那么您可能会看到明显的网络速度下降。解决方案是让集群管理员设置节点集。

您是否使用多个节点来完成这项工作?你是如何请求资源的?

于 2013-12-28T04:24:36.280 回答