时间并行FOR (PARFOR)循环
我运行了相当数量的计算成本高的操作,并经常使用平行for (parfor)循环来加速它们。这个实用工具让我感兴趣,主要是因为它显示了工作如何在工人之间分配,并提供了工人利用率。
首先,我将确保一个并行池正在使用gcp ()或“获取当前池”。这打开了parfor循环分配迭代的无头MATLAB进程。
Pool = GCP
pool = pool with properties: Connected: true NumWorkers: 2 Cluster: local AttachedFiles: {} IdleTimeout: 90 minute(s) (89 minutes remaining) SpmdEnabled: true
我们将用一个随机暂停的循环做一个简单的例子。暂停是一个操作的代理,该操作所花费的时间是变化的且不可预测的。
N = 50;p = Par(n);生成Par定时器parforii = 1:n parc .tic;%开始计时器暂停(兰迪(5))暂停最多5秒p(ii) = Par.toc;测量运行时间%结束停止(p);完成百分比情节(p);
parfor循环很好地在两个worker之间分配了计算。利用率更高的工作人员只有一个额外的迭代。
这里还有一些其他巧妙的技巧,是我通过查看代码发现的。
- 如果你在每个迭代的时间点上右键单击坐标轴,它会给你一个上下文菜单来选择比例。
- 由于Par类继承自句柄,因此可以获得那些可见的方法。莎拉把这些隐藏起来方法()通过隐藏他们的签名。
- Sarah还提供了关于该实用程序功能的完整文档以及示例。
评论
- 类别:
- 选择
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。