图片缩略图“itemprop=

PARFOR进度监视器(进度条)v4

版本2.0.4(53 kB) Frerk萨克森
具有估计剩余时间的Matlab Parcon(并行)循环的进度监视器
4.6
13评级

59下载

更新05年9月2019年

从GitHub

视图版本历史

在GitHub上查看许可证

一个非常Ressource高效的MATLAB类,用于在“阶段”过程中的进度监测,显示每个工作人员的剩余时间和可选进度。
它支持金宝app分布式工人池(即不仅适用于本地池)。

用法:
%'numiterations'是一个整数,其中循环中的迭代总数。
%随意增加这甚至更高,看到其他进度监视器失败。
numiterations = 100000;

然后,构造一个parforprogressbar对象:
ppm = parforprogressbar(numiterations);

parfor i = 1:numIterations
%做一些并行计算
暂停(100 / numIterations);
%递增计数器以跟踪进度
ppm.increment ();
结束

%删除Paret循环完成时删除进度句柄(否则使更新进度可能不会停止的计时器)。
删除(ppm);

可选参数:
ppm = ParforProgressbar(numIterations)构造一个ParforProgressbar对象。
“numIterations”是一个整数,其总数为
parfor循环中的迭代。

ppm = ParforProgressbar(___, 'showWorkerProgress', true)将显示
所有工人的进度(默认值:假)。

ppm = ParforProgressbar(___, 'progressBarUpdatePeriod', 1.5)将
每1.5秒更新进度条(默认为1.0秒)。

ppm = ParforProgressbar(___, 'title', 'my fancy title')将
在进度条上显示“我的花哨标题”。

ppm = ParforProgressbar(___, 'parpool', 'local')将
使用“local”配置文件启动并行池(parpool)。

ppm = ParforProgressbar(___, 'parpool', {profilename, poolsize, Name, Value})
将启动并行池(parpool)使用profilename配置文件
池化工人和功能Parpool支持的任何名称值对。金宝app

好处:
1.这是第一个parfor进度监视器,也显示剩余时间。
2.这是第一个进度监视器,也显示每个工人的进度。
3.它可以从非常少的迭代次数扩展到占用空间非常小的任意高的迭代次数。

缺点:
1.它确实减慢了计算速度。多少钱?这取决于你更新进度条的频率(默认每1.0秒更新一次-但这是一个你可以调整的参数)。
更新计算机上的ProgressBar平均需要40毫秒。即,其中一个工人更新了ProgressBar(默认为每秒),每秒额外花费40毫秒= 4%。
但是你有X-1工人根本没有延迟(呼叫增量也有一个甚至数百万迭代的近似效果)。
2.它需要仪表控制工具箱

影响60135 - parfor进度-监控-进度条- v3:
1.使用[progressbar] (https://de.mathworks.com/matlabcentral/fileexchange/6922-progressbar.)与它的漂亮绘图的剩余时间。
2.完成MATLAB实施,没有Java。
3.每次增量,Dylan基于java的实现都通过tcp连接到服务器,并立即关闭连接,而不发送任何数据。
服务器仅根据已建立的连接增加计数器。
这是相当快的,但对于非常短的循环周期(如上面),它会导致太多的连接。
原始的ParforProgmonv3通过让用户手动选择STAPEIZE来解决此问题。然而,这是Comberome和非直观的。
这个更新自动计算步长,因此即使对于非常短的循环周期,也能保持非常快的执行时间。
4.代替tcp套接字,我们使用udp套接字,它是建立在建设和不打开/关闭在每个循环周期。
5.为了跟踪每个工作进程,每个工作进程通过udp发送自己的进程到服务器。
6.小界面更改:我真的不关心进度条的窗口标题。这是现在是一个可选的参数,现在也由Matlab的输入解析器正确监控。

引用

Frerk萨克森(2021)。PARFOR进度监视器(进度条)v4(https://github.com/fsaxen/parforprogmon),github。检索到

意见及评分(22.

Z王

阿里Komai

比这里的其他文件交换方式快得多。谢谢你!

Frerk萨克森

@All:如果您有任何问题,请在github上提交错误报告。我不经常在文件Exchange TBH上,我一旦提交错误报告,我就会收到通知。
@Christian Steinmetz:我认为你必须简单地跳过所有ppm相关的调用,直接调用进度条。理论上,我们可以添加一个额外的参数来禁用所有功能,但它会使代码膨胀,而不会提供巨大的好处。
@Xavier Laforgue:看起来自2016年以来,upd联系已经改变了。不幸的是,我只有2018b。

Xavier Laforgue.

你好,
我不能让这个函数工作:进度条在循环开始时出现,在循环结束时消失,但它们从不显示任何信息。
有一个警告应该是原因:
" DatagramReceivedFcn正在被禁用。要启用回调属性,可以使用FOPEN连接到硬件,或者设置DatagramReceivedFcn属性。
在distcomp >。remoteparfor / getCompleteIntervals(第127行)
在parallel_function> distributed_execution(第793行)
在parallel_function(第587行)中
在testParforProgressbar(第21行)
然而,我不知道如何修复它。
有人能帮我一下吗?
我正在使用MATLAB 2016B,并具有仪器控制工具箱。

注:最初我收到了错误:“错误使用表(第229行)”,但我固定它的推荐使用细胞阵列代替特征向量来创建表(我把特征向量,参数表的函数,不是已经在细胞阵列,在花括号中)

杰夫米勒

基督教斯坦梅茨

伟大的软件!

然而,我正在编写一个工具,有时应该并行运行,有时不(取决于你提供多少输入)。所以我并不总是想要启动并行池的进度条。但是,如果没有并行池,我就不能让函数运行。由于某些原因,即使我让程序进入increment-function,如果我删除了相应的行,如果我发送任何fwrite(u。connection, [1,50], 'ulong')-statement(1将是worker,在本例中我必须手动设置为0,50将是进度监视器应该设置的值)。我不知道为什么不行。

Frerk萨克森

@max_fire:没有办法提前知道每个worker的确切迭代次数。它只是简单地假设所有人都做同样的工作。但有些人做得更多,有些人做得更少。虽然每个个体的进展都是猜测,但总的进展是准确的。

马克斯火

好的。
但是,虽然有些员工不能达到100%,但其他人却超过了100%,这很奇怪。

Frerk萨克森

@Adam Wyatt:谢谢你的回复。如果你愿意贡献,你非常欢迎做出你的改变,并在github上做一个pull请求:https://github.com/fsaxen/ParforProgMon

亚当·怀亚特

非常好。ProgressBar目前在实时脚本内部不起作用,因为Live Scripts工作的方式 - *非常*简单的修复程序是在创建图形(第196行“ProgressBar时添加”可见“,”在“中”,“”选项“。m“)。如果ProgressBar将句柄返回到图形,并且该句柄可在ParforProgressBar对象中访问该句柄,则会非常好 - 这将允许嵌入现有数据等。

利亚姆大厅

Frerk萨克森

你知道为什么pctconfig对你不起作用吗?你能在github (https://github.com/fsaxen/ParforProgMon)?

冯成

“使用ICInterface / Fopen时出错(第83行)
未成功打开:Unknown RemoteHost: ........."

解决后,我修改了o.ServerName
“%pct = pctconfig;
%o.servername = pct.hostname;
o.ServerName = char (getHostName (java.net.InetAddress.getLocalHost));

汉斯香肠

为了回答我的问题,请修改“进度条”。米”
progfig =图(…
“单位”、“规范化”,……
'Position',[左下角宽度高度],…
‘NumberTitle’,‘off’,……
“调整”,“关闭”,……
“菜单条”,“没有”,…
“可见”、“关于”);

汉斯香肠

我想在一个直播脚本中打开它,是可能的吗?

Frerk萨克森

@Emil Pavlov:因为这个实现使用了progressbar (https://de.mathworks.com/matlabcentral/fileexchange/6922-progressbar.)由于其非常快速执行,添加经过的时间将需要更改进度栏实现。也许在那里要求一个功能请求?

埃米尔帕洛夫

伟大的工具。您是否能够添加经过的时间?

Thomas Koopman

伊凡Mostak

阿德尔

似乎很好但不幸的是需要仪器控制工具箱!

阿德尔

迪伦穆尔

看起来不错!

MATLAB版本兼容性
创建R2018b
与任何版本兼容
平台兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!