[已解决] 使用parfor并且处理时,有些物理核进程崩溃的

[复制链接]
逆时偏移小白 发表于 2022-6-21 15:35:40
我在使用parfor并且处理时,有些物理核进程崩溃,终止了任务。
程序如下:
主程序:
IM=zeros(200,1000);
load('T_h4mm.mat','a');
parfor n=1:32
    I=Back_wavefield(a,n);
    IM=IM+I;
end
save('Tcx4mm','IM');
函数Back_wavefield里面是一些复杂计算。主程序代码出现了警告,
[Warning: A worker aborted during execution of the parfor loop. The parfor loop will now run again on the remaining workers.]
[> In distcomp/remoteparfor/handleIntervalErrorResult (line 245)
In distcomp/remoteparfor/getCompleteIntervals (line 392)
In parallel_function>distributed_execution (line 741)
In parallel_function (line 573)
In RTM (line 24)]
整体上代码还能成功输出正确结果,但是极其耗费时间,大量的计算被终止。不知道如何修改,问题在哪里也不知道

最佳答案


maple1314168 发表于 2022-6-21 17:21:27
理论上 可能是你的内存不足,不能支持所有的核运算。
试试只调用2个核,这样的话可能可以。之后,也可以慢慢提高核数直至失败。
不过,如果每核运算的内存较大的话,就单独两核就好。或者增加内存。
回复此楼

2 条回复


maple1314168 发表于 2022-6-21 17:21:27
理论上 可能是你的内存不足,不能支持所有的核运算。
试试只调用2个核,这样的话可能可以。之后,也可以慢慢提高核数直至失败。
不过,如果每核运算的内存较大的话,就单独两核就好。或者增加内存。
回复此楼

逆时偏移小白 发表于 2022-6-28 00:26:08
maple1314168 发表于 2022-6-21 17:21
理论上 可能是你的内存不足,不能支持所有的核运算。
试试只调用2个核,这样的话可能可以。之后,也可以慢 ...

感谢你的建议。我作了一些尝试,确实如此。将所用物理核数降到6时就已经不在出现那种状况。
但是让我不解的是,我在parfor循环的函数开头都已经给所用变量预分配了内存大小,但是观察内存使用情况发现,matlab调用每个核所用内存是逐渐增加的。而不是像串行代码时那样几乎不变,这种情况让我感到意外。

再次感谢你的回复。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表