For循环随机暂停和重新启动

3视图(30天)
我有一个简单的代码(下图),其中包含两个for循环。这段代码计算信号的功率谱和符合对数谱斜率。
m = 0 (100100);
x = 1:10 0
y = 1:10 0
咕咕叫=挤压(数据(x, y:));
[pcurr f] = pwelch(咕咕叫,[][],[],1);
页= polyfit (log10 (f), log10 (pcurr), 1);
米(y, x) =页(1);
结束
结束
代码将运行并使用60%的CPU时间,30秒可能是马克斯,然后将暂停,看似随机的时间什么都不做,有时5 - 10分钟或更长时间才再次启动并运行了几秒。总运行时间应该只有几分钟,但它最终需要的时间。
这不会发生,只有这段代码,但与其他函数在一个for循环将利用更多然后一个处理器,如“imfilter”。它也会发生当我运行代码的函数或命令窗口。
我上运行Matlab r2011b新款高能效型opteron英特尔系统。
如果任何人有任何知道我能做什么,这样程序不暂停请让我知道。
1评论
肖恩·德Wolski
肖恩·德Wolski 2012年5月1日
你能包装的tic和toc内脏循环,打印时间为每个迭代和x / y。我很好奇如果有某些迭代多次需要更长的时间。

登录置评。

接受的答案

骑自行车的人
骑自行车的人 2012年5月1日
没有详细看代码,我可以说,这种行为是典型的会发生什么从RAM代码转换成所需的内存虚拟内存。瓶颈是内存访问,所以从根本上CPU使用率下降。您可能想要查看内存使用情况。
(我没有信号处理工具箱,所以我不能调查更多。)
5个评论
杰森·罗斯
杰森·罗斯 2012年5月3日
我不知道一个没有关闭BIOS的超线程。我知道对于matlabpool默认池大小是物理核的数量,这可能是为什么你看不到。
很高兴知道你有一个不错的系统内存。

登录置评。

答案(1)

Ed Callway
Ed Callway 2021年9月2日
在2021年依然让人着迷- - -我也有同样的问题。程序只是随机停滞。
设置:
  • 赢得10,4结核病SSD和大量的空间,32 GB DRAM, 6核心12线程Ryzen 3600 x,没有超频或BSOD,监测速度和临时工和球迷很好,持续多日的借许可证离线工作,网络断开,以避免干扰。
  • 运行6副本的一个脚本6 matlab R2020b从一个批处理文件的实例:
  • matlab / r”someScriptName (parameterSet1a parameterSet1b)”
  • matlab / r”someScriptName (parameterSet2a parameterSet2b)”等等设置6方式
  • Matlab应用程序写任何磁盘直到完成,所以磁盘空闲
  • 这6份只用7 GB的32 GB的一切,没有内存抖动
  • 总CPU负载~ 66%,每个matlab过程约10%,命令窗口打印出进步,不错
  • 脚本包含循环做相当正常的数学,和一个循环使用parfor(使速度提高了10%)
  • 年底的一个更大的循环(第二次)它下来从而打印时间和预计完成时间
存在的问题:
运行好了大约5小时24需要,然后每10分钟左右6实例停止一次大约10秒,停止打印命令窗口,他们的CPU使用率分别下降到0%。
  • 2分钟后他们再次启动一次并运行10分钟。
  • 注意从任务管理器我知道他们开始。他们总是停止运行从最后一个开始(小时前),进展到1日开始。当他们再次启动也总是以相同的顺序。
  • 我可以开始CPU-Z并运行一个所有核心强调,将CPU和matlab负荷下降100%到50%。临时工依然很好,不会影响matlab册,跑步或停滞。
  • 我可以手动启动和运行另一个matlab实例时,其他6也停滞不前,这很好
  • 其他项目我开始当matlab闲置也运行良好。
  • Renabling网络,运行一个浏览器等也没有区别
所以我什么也没看见,电压、临时工、网络、cpu负载、磁盘或内存负载看起来坏……除了matlab随机睡觉。
代码本身是专有的,不能把它放在这里。很乐意听到事情来避免,其他类似的故事线索,或微小尝试减少脚本。
想买Leeloo达拉斯说过,请
1评论
Ed Callway
Ed Callway 2021年10月5日
我想我找到了部分答案经过大量的挖掘。
通常如果代码包含一个工具箱没有一个可用的许可证(过期,没有足够的网络许可证,许可证服务器不在线,不是借来的等等)的代码停止,这么说。这很好。
但如果平行工具箱不可用可能没有消息!
我托管在一个运行的程序在一个“无证和用于内部使用”例程说类似“如果没有平行的工具箱,不断尝试很久了”之类的。
而不是随机的5分钟里,我就会更快乐,如果:
  1. 项目暂停,说“请工具箱许可证”
  2. 程序忽略parfor并回到系列
对不起我没有保存,但是有人熟悉并行工具箱内部可能知道。

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

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

开始狩猎!