转换为
循环进入parfor
循环
在某些情况下,您必须修改代码转换为
循环,parfor
循环。这个例子展示了如何诊断和修复parfor
使用一个简单的嵌套循环问题为
循环。在MATLAB运行这段代码®并检查结果。
为x = 0:0.1:1为y = 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
循环:
的主体
parfor
循环必须独立。一个循环迭代不能依赖于前一个迭代,因为迭代并行执行在一个不确定的秩序。在这个例子中,(y) = (y-1) + y;
parfor
。为下一步在独立处理问题,明白了确保parfor-Loop迭代是独立的。你不能嵌套
parfor
循环在另一个parfor
循环。这个例子有两个嵌套的为
循环,因此可以取代只有一个为
循环用parfor
循环。相反,您可以使用一个调用一个函数parfor
体内循环parfor
循环。然而,这样的嵌套parfor
循环给你计算没有好处,因为所有的工人用于并行化最外层的循环。帮忙处理嵌套循环,明白了嵌套parfor和for循环和其他parfor需求。parfor
循环变量必须连续增加整数。在这个例子中,parforx = 0:0.1:1
parfor
在这里。你可以解决这个问题通过改变循环变量的值所需的整数值算法。对于故障诊断中的下一个步骤parfor
循环变量,看到确保parfor-Loop变量是连续增加的整数。你不能打破
parfor
循环的早期,你可以在一个为
循环。不包括返回或break语句在你的身体parfor
循环。没有沟通,其他MATLAB实例运行循环不知道何时停止。作为一种替代方法,考虑parfeval
。如果你仍然有问题转换
为
循环,parfor
循环,看排除变量parfor-Loops。
提示
您可以配置文件parfor
循环使用抽搐
和toc
测量相对应的加速比为
循环。使用ticBytes
和tocBytes
测量多少数据转移的工人在并行池。的更多信息和示例,请参阅剖析parfor-loops。