确保透明度PARFOR-Loops或SPMD声明

一个身体PARFOR-loop或SPMD块必须透明。透明度是指变量的所有引用必须在代码的文本可见。

在以下实施例中,可变X不转移到工人。只有一个字符向量'X'被传递到EVALX不是如在循环或块体上的输入变量是可见的。其结果是,MATLAB®问题在运行时错误。

X = 5;PARFORII = 1:4的eval('X');结束
X = 5;SPMD的eval('X');结束

同样,你不能从一个工作区通过执行清除变量明确PARFOR要么SPMD声明:

PARFORII = 1:4 <语句...>明确('X'%无法明确:违反透明度<报表...>结束
SPMD;明确('X');结束

另外,您也可以通过其值设置为空当不再需要它腾出一个变量使用的内存。

PARFORII = 1:4 <语句...>X = [];<报表...>结束

如果是SPMD块,你可以从客户工作区清除其复合。

在一般情况下,透明性的要求限制了变量的所有动态获取,因为整个变量可能不会出现在任何给定的工人。在一个透明的工作区,你不能创建,删除,修改,访问或查询变量,如果你没有明确指定的代码,这些变量。

违反的透明度其他操作或功能的例子PARFOR-loop包括:

  • WHO谁是

  • EVALCevalinassignin工作区参数指定为'呼叫者'

  • 保存加载除非的输出加载被分配给一个变量

  • 如果脚本尝试读取或父工作的写变量,然后运行此脚本可能会导致透明度冲突。为了避免这个问题,脚本转换为一个功能,并提供必要的变量为输入或输出参数来调用它。

注意

透明度仅适用于的直接身体PARFOR要么SPMD构建,而不是从那里调用的任何功能。对于解决办法保存加载是隐藏的来电保存加载在函数内部。

MATLAB成功执行EVALEVALC出现在从调用的函数语句PARFOR身体。

平行金宝app模拟

您可以运行的Simuli金宝appnk®模型与并行parsim命令,而不是使用PARFOR-loops。有关详细信息,并在平行利用Simulink的实例,参见金宝app运行多个模拟(金宝appSIMULINK)。

  • 如果你的Simu金宝applink模型需要访问的变量包含在。垫文件,你必须在每个工人的工作空间加载这些参数。前必须这样做PARFOR-loop,后开放parpool。要做到这一点,你可以使用SPMD要么parfevalOnAll,在实施例中,如图所示。

    SPMDevalin('基础'“负载(”“路径/到/文件”“)”结束
    parfevalOnAll(@evalin,0,'基础'“负载(”“路径/到/文件”“)”

  • 如果你的模型还需要在您的MATLAB脚本主体中定义的变量,你必须使用assignin要么evalin这些变量移动到每个工人的基工作区,在每PARFOR迭代。

也可以看看

|

相关话题