是如何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函数的入口点parfor
,parfor
禁用多线程。dspunfold
调用codegen
与- o
选项设置为禁用:openmp
.有了这个选项集,parfor
循环被视为为
——循环。所生成的MEX文件的多线程行为完全是由于dspunfold
.
另请参阅
功能
相关的话题
- 使用并行for循环生成代码(parfor)(MATLAB编码器)
- 使用并行for循环的算法加速(MATLAB编码器)
- MATLAB算法加速(MATLAB编码器)