主要内容

是如何dspunfold不同于parfor?

dspunfold而且parfor(MATLAB编码器)函数加速MATLAB®算法通过并行化。每种功能都有其优点和缺点。

当你使用parfor里面的MATLAB函数入口点,并调用codegen在这个函数中,生成的MEX文件是多线程的。有关更多信息,请参见使用并行for循环的算法加速(MATLAB编码器).然而,parfor对于DSP算法来说并不理想。原因是DSP算法涉及到状态。

DSP算法涉及状态

DSP System Toolbox™中的大多数算法都包含状态和流数据。MATLAB中的状态是使用持久变量建模的。因为parfor不支持持久变量,您金宝app不能使用模型状态parfor循环。看到parfor-Loop中的全局或持久声明(MATLAB编码器).此外,您不能有任何跨数据依赖项parfor循环。因此,您不能跨这些循环维护状态信息。看到什么时候不使用parfor-Loops(MATLAB编码器)dspunfold通过支持持久变量克服了这些限制。金宝app

dspunfold介绍了延迟

如果您的应用程序不能容忍延迟,请使用parfor代替。parfor不引入延迟。延迟是在生成第一个输出帧之前处理的输入帧的数量。

parfor需要对代码进行重大重组

parfor要求您重新构造算法,使其具有与迭代无关的类循环结构。由于语义的限制parfor,取代带a的-循环parfor-loop通常需要大量的代码重构。dspunfold不需要重新构造代码。

parfor使用dspunfold

当你打电话时dspunfold包含的MATLAB函数的入口点parforparfor禁用多线程。dspunfold调用codegen- o选项设置为禁用:openmp.有了这个选项集,parfor循环被视为——循环。所生成的MEX文件的多线程行为完全是由于dspunfold

另请参阅

功能

相关的话题