主要内容

转换循环进入parfor循环

在某些情况下,您必须修改代码转换循环,parfor循环。这个例子展示了如何诊断和修复parfor使用一个简单的嵌套循环问题循环。在MATLAB运行这段代码®并检查结果。

x = 0:0.1:1y = 2:10 (y) = (y-1) + y;结束结束

加快代码,尝试转换循环,parfor循环。观察到这段代码产生错误。

parforx = 0:0.1:1parfory = 2:10 (y) = (y-1) + y;结束结束

在这种情况下,你不能简单地转换循环,parfor循环没有修改。为了使这项工作,你必须改变代码在几个地方。诊断问题,寻找在MATLAB代码分析器消息编辑器。

这个代码显示了常见的问题当你试图转换循环,parfor循环。

要解决这些问题,必须修改代码使用parfor。的主体parfor循环执行一个平行的池中使用多个MATLAB工人在一个不确定的秩序。因此,您必须满足这些需求的主体parfor循环:

  1. 的主体parfor循环必须独立。一个循环迭代不能依赖于前一个迭代,因为迭代并行执行在一个不确定的秩序。在这个例子中,

    (y) = (y-1) + y;
    你不是相互独立的,因此不能使用吗parfor。为下一步在独立处理问题,明白了确保parfor-Loop迭代是独立的

  2. 你不能嵌套parfor循环在另一个parfor循环。这个例子有两个嵌套的循环,因此可以取代只有一个循环用parfor循环。相反,您可以使用一个调用一个函数parfor体内循环parfor循环。然而,这样的嵌套parfor循环给你计算没有好处,因为所有的工人用于并行化最外层的循环。帮忙处理嵌套循环,明白了嵌套parfor和for循环和其他parfor需求

  3. parfor循环变量必须连续增加整数。在这个例子中,

    parforx = 0:0.1:1
    非整数循环变量,因此你不能使用吗parfor在这里。你可以解决这个问题通过改变循环变量的值所需的整数值算法。对于故障诊断中的下一个步骤parfor循环变量,看到确保parfor-Loop变量是连续增加的整数

  4. 你不能打破parfor循环的早期,你可以在一个循环。不包括返回或break语句在你的身体parfor循环。没有沟通,其他MATLAB实例运行循环不知道何时停止。作为一种替代方法,考虑parfeval

    如果你仍然有问题转换循环,parfor循环,看排除变量parfor-Loops

提示

您可以配置文件parfor循环使用抽搐toc测量相对应的加速比循环。使用ticBytestocBytes测量多少数据转移的工人在并行池。的更多信息和示例,请参阅剖析parfor-loops

另请参阅

||

相关的话题