Parfor循环就挂,CPU使用归零
57视图(30天)
显示旧的评论
嗨。这是我尝试运行示例代码。
parfor我= 1:num
(回答:,我)= someFunction (someData(:,我));
结束
关键信息:“someFunction”是一个c++墨西哥人文件。是一个“someData”
memmapfile
(memmapfilename.data),因为它太大了,被加载到每个工人
奇怪的是,parfor循环就挂,CPU使用率趋于零,当我按CTRL + C,这就是我得到的:
操作由用户在distcomp终止。remoteparfor / getCompleteIntervals(线
127)
在parallel_function > distributed_execution(第820行)
(标签,)= P.getCompleteIntervals (chunkSize);
在parallel_function(第587行)
R = distributed_execution (…
这不是一个问题,如果我将“parfor”替换为一个简单的“对”
——一切工作正常。似乎发生的是,一些工人变得反应迟钝。遇到上面的问题后,甚至一个简单的命令,如运行
pctRunOnAll1 + 1
只会返回“2”一些,但不是全部,工人。
任何帮助就太好了。一个全新重装没有帮助。“parpool”验证通过。
5个评论
大卫Saidman
2020年1月14日
有人成功了呢?我拥有完全相同的2017 b,绝对没有键盘的声明。
如果我等待,它最终运行但在单个CPU(事件tho我池有18和20物理和40个逻辑CPU核心,大约10 gb空闲内存性能监视器)。
答案(7)
戴夫Behera
2016年3月24日
似乎有一个死锁,当工人们正试图访问文件使用相同的对象(你从memmapfile)。由于进展变得停滞不前,零CPU使用率和没有中止的消息。
你能试着创建一个单独的memmapfile对象在每个parfor someFunction函数迭代和传递?这可能使文件访问线程安全的。
同时,你能试着相同的工作流spmd吗?