主要内容

parfor

并行 for 循环

说明

parfor loopVar = initVal:endVal; statements; endloopvarinitval(包括二者)之间的 endval 值执行一系列的 MATLAB® 语句,这些值指定一个由递增整数值组成的向量。

当您有 Parallel Computing Toolbox™ 或当您使用 MATLAB Coder™ 创建 MEX 函数或独立代码时,将以并行方式循环运行。与传统的 for 循环不同,迭代不按保证的顺序执行。您无法直接在 parfor 循环中调用脚本。但是,您可以通过调用函数来调用脚本。

示例

parfor loopVar = initVal:step:endVal; statements;end 在每次迭代时将 loopVar 递增 step 的值,或当 step 的值为负时递减 loopVarstep 必须为 1-1。使用此语法运行具有降序循环索引变量的 parfor 循环。

如果您使用此语法,则循环迭代数必须为连续的整数值。

在 R2026a 之前的版本中: step 必须为 1,并且循环迭代数必须为连续递增的整数值。

示例

parfor(loopVar = initVal:endVal); statements; endparfor(loopVar = initVal:step:endVal); statements; end 也会使用循环方式执行语句。在循环表达式两侧使用括号以允许使用其他选项。

parfor(___,M); statements; end 使用 M 指定在计算循环体中的语句时要使用的最大工作单元数或线程数。M 必须为非负整数。

示例

全部折叠

通过 Parallel Computing Toolbox 执行使用三个工作单元或核的三次大特征值计算:

parpool(3)
parfor ii = 1:3 
    c(:,ii) = eig(rand(1000)); 
end

自 R2026a 起

使用具有降序范围的 parfor 循环在工作单元上计算数学表达式。

指定初始值为 12,步长为 -1,结束值为 1parfor 循环从 12 向下迭代到 1。

parfor k = 12:-1:1
    out(k) = (5.*(k+8))./2;
end

输入参数

全部折叠

具有初始值 initVal 和最终值 endVal 的循环索引变量。该变量可以是任何数值类型,并且值必须为整数。

确保您的 parfor 循环变量数是连续的整数。有关详细信息,请参阅排除 parfor 循环中的变量故障 (Parallel Computing Toolbox)

在 R2026a 之前的版本中: 循环迭代数必须为连续递增的整数值。

parfor 循环变量的范围不能超出支持的范围。如需更多帮助,请参阅避免 parfor 循环中的溢出 (Parallel Computing Toolbox)

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

循环索引变量 loopVar 的初始值。该变量可以是任何数值类型,并且值必须为整数。与 endVal 一起以 M:N 形式使用时,指定 parfor 范围向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

循环索引变量 loopVar 的结束值。该变量可以是任何数值类型,并且值必须为整数。与 initVal 一起以 M:N 形式使用时,指定 parfor 范围向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

循环索引 loopVar 的步长。该变量可以是任何数值类型,并且必须是值为 1-1 的整数,以确保循环迭代数是连续的整数值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

循环体,指定为文本。要在 parfor 循环中执行的 MATLAB 命令系列。

您可能需要修改代码以使用 parfor 循环。如需更多帮助,请参阅将 for 循环转换为 parfor 循环 (Parallel Computing Toolbox)

请不要嵌套 parfor 循环,请参阅嵌套 parfor 和 for 循环以及其他 parfor 要求 (Parallel Computing Toolbox)

并行运行的最大工作单元数,指定为非负整数。如果您指定上限,MATLAB 使用的工作单元数不会超出此数量,即使有额外的可用工作单元也是如此。如果您请求的工作单元数超过可用工作单元数,则 MATLAB 将使用在调用时可用的最大工作单元数。如果循环迭代数少于工作单元数,一些工作单元将不执行任何工作。

如果 parfor 无法在多个工作单元上运行(例如,如果只有一个核可用或 M 为 0),MATLAB 将以串行方式执行循环。在这种情况下,MATLAB 仍以非确定性顺序执行循环体。在测试代码时,使用此语法在并行和串行之间切换。

提示

  • 如果您有 Parallel Computing Toolbox,请参阅 parfor (Parallel Computing Toolbox)parpool (Parallel Computing Toolbox) 以了解更多信息。

  • 如果您有 MATLAB Coder,请参阅 parfor (MATLAB Coder) 了解更多信息。

扩展功能

全部展开

版本历史记录

在 R2008a 中推出

全部展开

另请参阅