所有工人在执行期间中止parfor循环

28日视图(30天)
Birjit”class=
Birjit 2023年6月12日20:04
回答: 雷蒙德·诺里斯 2023年6月15日21:59
“错误使用distcomp.remoteparfor / rebuildParforController
所有工人在执行期间中止的parfor循环。
在distcomp错误。remoteparfor / handleIntervalErrorResult(第259行)
obj.rebuildParforController ();
在distcomp错误。remoteparfor / getCompleteIntervals(第396行)
(r,犯错)= obj.handleIntervalErrorResult (r);
错误MTD_Finalinv(第655行)
parfor i = 16: numberofplaintexts
客户失去联系工人1。这可能是由于网络问题,
或互动沟通的工作可能有错误。”
这是错误当我使用1十万的csv文件涉及代码的并行计算。但50000年相同的代码运行正确的csv文件没有任何错误。有人知道它为什么如此? ? ?

答案(1)

雷蒙德·诺里斯”class=
雷蒙德·诺里斯 2023年6月15日21:59
当我看到
客户失去联系工人1。这可能是由于网络问题,或互动交流的工作可能有错误
我倾向于认为这是因为一个工人坠毁(内存)。一个建议是使用 ticBytes / tocBytes 看到多少数据是通过在/的工人。然而,这不会告诉你正在消耗多少 parfor 循环。为了了解多少被消耗,尝试以下。
重构你的 parfor 这是调用一个函数,
函数birjit
ticBytes (gcp)
parforidx = 16: numberofplaintexts
unit_of_work ()
结束
tocBytes (gcp)
结束
函数unit_of_work
一个=兰德(10);
结束
因为透明的规则,您需要调用 在一个函数,而不是直接在 parfor
另一个考虑是使用 parforOptions
函数birjit2
选择= parforOptions (parcluster,“RangePartitionMethod”,“固定”,“SubrangeSize”N);
parfor(idx = 16: numberofplaintexts选择)
结束
这里,是一系列工作的运行(numberofplaintexts-16) / N的工作。这样每个工人可能不会耗尽内存。

类别

找到更多的在并行for循环(parfor)帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!