dspunfold

生成一个文件从一个多线程的墨西哥人MATLAB函数

描述

dspunfold文件从入口点MATLAB文件生成一个多线程的墨西哥人®指定的功能文件使用展开技术。展开技术通过并行提高吞吐量。利用多线程墨西哥人文件的多核CPU架构主机,可以显著提高速度。除了多线程墨西哥人文件,函数生成一个单线程的墨西哥人文件,自我诊断分析仪功能,相应的帮助文件。

dspunfold选项文件生成一个多线程的墨西哥人文件规定从入口点MATLAB函数文件,使用指定的函数参数选项

请注意

这个函数需要一个MATLAB编码器™许可证。

输入参数

全部折叠

选项

描述

例子

args参数

单元阵列

入口点MATLAB函数参数类型,指定为一个单元阵列。

单元阵列接受数字元素coder.typeof功能,coder.Constant函数。

生成的多线程墨西哥人文件是专业的大小、类和复杂性参数

细胞数组中元素的数量必须一样的参数数量预计的入口点MATLAB函数。

  • dspunfold fcn args {(10, 1), 5}

    dspunfold提取类型(大小、类和复杂性)来自元素的信息参数单元阵列。

    fcn是入口点MATLAB函数。

  • dspunfold fcn args {coder.typeof ((10, 1)), coder.typeof (5)}

    coder.typeof用于指定的类型fcn参数。

  • dspunfold fcn args {coder.Constant ((10, 1)), coder.Constant (5)}

  • dspunfold fcn args {}

    默认情况下,参数{}。一个空单元阵列{}表明fcn不接受输入参数。

- o输出

特征向量

输出多线程墨西哥人文件的名称,指定为一个特征向量。如果没有输出指定名称,生成的多线程墨西哥人文件的名称与一个继承了输入MATLAB函数“_mt”后缀。dspunfold还增加了一个特定于平台的扩展这个名字。此外,dspunfold生成一个文件与一个单线程的墨西哥人“_st”用一个后缀,试验台文件“_analyzer”后缀。

  • 没有输出指定名称

    dspunfold fcn

    文件生成:fcn_mt.mexw64,fcn_st.mexw64,fcn_analyzer.p

  • 输出指定名称

    dspunfold fcn - o foo

    文件生成:foo.mexw64,foo_st.mexw64,foo_analyzer.p

- s statelength

标量整数大于或等于零

汽车

状态长度算法的MATLAB函数入口点,指定为一个标量整数大于或等于零,或汽车。默认情况下,statelength框架,表明该算法是无状态的。

如果至少有一个条目frameinputs真正的,statelength被认为是在样本。

帧和样品的信息,请参阅样品和框架的概念

- s汽车长度检测触发自动状态。在这种模式下,您必须提供数字的输入参数单元阵列。这些输入检测算法的状态长度。你可以输入coder.Constant但不是coder.typeof。当调用自动状态长度检测,建议您提供随机输入参数数组中。看到自动状态长度检测

  • dspunfold fcn args {randn (10, 1), randn (10, 1), randn (10,1)} 3 - f - s(假的,假的,假)

    状态长度是三个帧。

  • dspunfold fcn args {randn (10, 1), randn (10, 1), randn (10,1)} 3 - f - s(真,假,假)

    状态长度是三个样本。状态被认为是在样本长度,因为至少有一个条目- f选择是真正的

  • dspunfold fcn args {randn (10, 1), randn (10, 1), randn (10,1)} - s汽车

    自动状态长度检测被调用。

  • dspunfold fcn args{编码器。1)typeof (randn(10日),coder.typeof (randn (10,1)), coder.typeof (randn (10,1))} - s汽车产生这个错误信息:输入参数1是类型的编码器。使用- s汽车PrimitiveType时不支持万博1manbetx

- f frameinputs

标量的逻辑

向量的逻辑值

帧状态入口点MATLAB函数的输入参数,指定为之一真正的

  • 真正的——输入帧,可以细分为样品在不改变系统行为。

  • ——输入不能细分为样品在不改变系统行为。例如,你不能细分滤波器的系数不改变过滤器的特点。

默认情况下,frameinputs

frameinputs设置为一个标量逻辑值同时设置帧状态的所有输入。

指定statelength在样本中,设置至少一个条目frameinputs真正的

如果frameinputs没有指定,单位的statelength是帧。

  • dspunfold fcn args {randn (10, 1), randn (10, 1), randn (10,1)} 3 - f - s真的

    所有的输入都标记为帧。状态长度是三个样本。

  • dspunfold fcn args {randn (10, 1), randn (10, 1), randn (10,1)} 3 - f - s(真,假,假)

    状态长度是三个样本。

  • dspunfold fcn args {randn (10, 1), randn (10, 1), randn (10,1)} - s 3

    的默认值frameinputs。状态长度是三个帧。

- r重复

正整数

重复因子用于生成多线程墨西哥人文件,指定为一个正整数。的默认值重复1。看到重复的因素

dspunfold fcn args {randn (10, 2), randn(20日2),randn(30日,3)}- r 2

- t线程

正整数

数量的线程使用的多线程墨西哥人文件,指定为一个正整数。的默认值线程是物理CPU内核的数量呈现在您的机器上。看到线程

dspunfold fcn args {randn (10, 1), randn(20日2),randn(30日,3)}- t 4

- v详细

标量的逻辑

选择显示在代码生成详细输出,指定为真正的。默认值是真正的

  • dspunfold fcn args {randn (10, 1), randn(20日2),randn(30日,3)}- v真的

  • dspunfold fcn args {randn (10, 1), randn(20日2),randn(30日,3)}- v假

MATLAB函数的入口点dspunfold生成多线程墨西哥人的文件。函数必须支持代码生成。万博1manbetx

例子:dspunfold fcn args {randn (10, 1), randn (10, 2), randn(20日1)}

fcnMATLAB函数入口点和吗1){randn(10日,randn (10, 2), randn(20日1)}是它的输入参数。

输出文件

当您调用dspunfold在一个入口点MATLAB函数,dspunfold生成以下文件。

文件

价值

描述

例子

多线程的墨西哥人文件

墨西哥人文件

多线程的墨西哥人文件产生的MATLAB函数入口点。墨西哥人文件继承了输出的名字。如果没有输出指定名称,这个文件的名字是与一个继承了MATLAB函数“_mt”后缀。也添加到特定于平台的扩展名。

  • dspunfold fcn - o foo生成foo.mexw64

  • dspunfold fcn生成fcn_mt.mexw64

多线程的墨西哥人的帮助文件的文件

MATLAB文件

MATLAB多线程墨西哥人文件的帮助文件。帮助文件名称相同的墨西哥人文件,但是有一个”。米的扩展。调用帮助文件,类型帮助<墨西哥人文件名>在MATLAB命令提示符。

这个帮助文件显示关于如何调用墨西哥人文件的信息,它的语法,延迟和类型(大小、类和复杂性)的墨西哥人的输入文件。此外,帮助文件文档所使用的参数dspunfold- - - - - -线程,重复,国家长。这些信息是有用的,当你调用墨西哥人文件。语法来调用墨西哥人文件应该是一样的在帮助文件中所示的语法。

  • 帮助foo

  • 帮助fcn_mt

单线程的墨西哥人文件

墨西哥人文件

单线程的墨西哥人文件产生的MATLAB函数入口点。墨西哥人文件继承了输出的名字与一个“_st”后缀。如果没有输出指定名称,这个文件的名字是与一个继承了MATLAB函数“_st”后缀。也添加到特定于平台的扩展名。使用这个文件作为基准比较对多线程的墨西哥人文件的速度。

  • dspunfold fcn - o foo生成foo_st.mexw64

  • dspunfold fcn生成fcn_st.mexw64

单线程的墨西哥人的帮助文件的文件

MATLAB文件

MATLAB单线程的墨西哥人文件的帮助文件。帮助文件名称相同的墨西哥人文件,但是有一个”。米的扩展。调用帮助文件,类型帮助<墨西哥人文件名>在MATLAB命令提示符。

帮助文件显示了如何调用墨西哥人的信息文件,它的语法,和类型(大小、类和复杂性)的墨西哥人的输入文件。语法来调用墨西哥人文件应该是一样的在帮助文件中所示的语法。

  • 帮助foo_st

  • 帮助fcn_st

自我诊断分析仪功能

p代码文件

报告= function_analyzer(输入1,输入2,……输入n)措施之间的速度差异多线程墨西哥人文件和单线程的墨西哥人文件。这个文件验证输出值匹配。

报告= function_analyzer(延迟)报告延迟引入多线程墨西哥人文件的展开。

报告包含以下字段:

  • 延迟,延迟时间(帧)的价值

  • 加速,加速区别多线程墨西哥人文件和单线程的墨西哥人文件。如果你指定延迟选择,这个字段的值是空的[]

  • 传递-逻辑值显示如果输出匹配生成的多线程墨西哥人文件和单线程的墨西哥人之间文件。如果你指定延迟选择,这个字段的值是空的[]

分析器的输入必须的第一个维度对应输入的第一个维度的倍数,给了arg游戏选择。其他的尺寸必须完全匹配。

分析器继承了输出的名字与一个“_analyzer”后缀。如果没有输出指定名称,这个文件的名字是与一个继承了MATLAB函数“_analyzer”后缀。

  • 多个帧沿第一个维度指定不同的值

    示例1:报告= foo_analyzer (randn (10 * 2, 1), randn (20 * 2, 2), randn (30 * 3, 3))

    示例2:报告= foo_analyzer ([randn (10,1); randn (10,1)], [randn (20,1); randn (20,1)], [randn (30、1); randn (30、1); randn(30日1)))

  • 报告= foo_analyzer(延迟)

帮助文件的自我诊断分析仪的功能

MATLAB文件

帮助文件的自我诊断分析仪的功能。帮助文件名称相同的墨西哥人文件,但是有一个”。米的扩展。调用帮助文件,类型帮助< function_analyzer >在MATLAB。

自我诊断分析仪功能的帮助文件显示信息如何调用分析器的功能,它的语法,和类型(大小、类和复杂性)分析器的输入功能。要调用的语法分析器功能应该是一样的在帮助文件中所示的语法。

帮助foo_analyzer

限制

一般的局限性:

  • 在Windows和Linux,您必须使用一个编译器,它支持开放的多处理(OpenMP)应用程序接口。万博1manbetx看到万博1manbetx支持编译器

  • 如果输入MATLAB函数运行时错误,错误不被当您运行多线程墨西哥人文件。在你使用dspunfold函数,调用codegen在MATLAB函数和确保墨西哥人文件生成成功。

  • 如果生成的代码使用了大量的内存来存储本地变量,4MB在Windows平台上,生成的多线程墨西哥人文件可以有意想不到的行为。这个极限随每个平台。作为一个解决方案,降低输入信号的大小或重组MATLAB函数使用更少的本地内存。

  • dspunfold不支持:万博1manbetx

分析仪的局限性:

以下限制适用于分析器生成的函数dspunfold函数。分析仪功能的更多信息,请参阅“自我诊断分析仪”的“更多”部分dspunfold

  • 如果分析仪的多个帧输入完全相同,分析器可能会把假阳性结果。建议您至少提供两种不同的帧的每个输入分析器。

  • 如果入口点的算法MATLAB函数选择其状态长度根据输入值,分析器可能会提供不同的通过结果不同的输入值。例如,看到FIR_Mean函数为什么分析器选错国家长度?

  • 如果入口点的输入MATLAB函数并立即影响输出,分析器会把假阳性通过结果。例如,看到Input_Output函数为什么分析仪选择零状态的长度?

  • 如果输出结果多线程墨西哥人文件和单线程的墨西哥人文件匹配统计但数字不匹配,分析器不通过。考虑到FilterNoise函数,该过滤器一个随机噪声信号数字滤波器。的函数调用randn从内部本身产生随机噪声。因此,输出的结果FilterNoise数值函数匹配统计但不匹配。

    函数输出= FilterNoise (x)持续的FIRFilter如果isempty (FIRFilter) FIRFilter = dsp.FIRFilter (“分子”0.4 fir1 (12));结束输出= FIRFilter (x + randn (1000 1));结束
    当您运行自动状态长度检测工具上运行FilterNoise长度,该工具检测到一个无限的状态。因为该工具不能找到一个数值匹配长度有限状态,它选择长度无限状态。

    dspunfoldFilterNoisearg游戏{randn (1000 1)}- s汽车
    分析输入MATLAB函数文件FilterNoise_st FilterNoise创建线程的墨西哥人。mexw64寻找最小状态长度(这可能需要一段时间)检查无状态……检查不足1…检查不足无限……充分检查2…不足最小状态长度是Inf文件FilterNoise_mt创建多线程的墨西哥人。mexw64警告:由于性能考虑多线程是禁用的。这发生在当状态长度大于或等于(Threads-1) *重复帧(3帧在这种情况下)。>在coder.internal.warning(第8行)在unfoldingEngine / BuildParallelSolution(25)行unfoldingEngine /生成(第207行)dspunfold FilterNoise_analyzer(第234行)创建分析器文件

    该算法不需要无限的状态。冷杉滤波器的长度,因此该算法12

    调用dspunfold与国家长度设置为12。

    dspunfoldFilterNoisearg游戏{randn (1000 1)}- s12- f真正的
    分析输入MATLAB函数文件FilterNoise_st FilterNoise创建线程的墨西哥人。mexw64创建多线程文件FilterNoise_mt墨西哥人。FilterNoise_analyzer mexw64创建分析器文件

    运行分析功能。

    FilterNoise_analyzer (randn (1000 * 4,1))
    分析多线程文件FilterNoise_mt墨西哥人。mexw64……加速延迟= 8帧= 0.5 x警告:FilterNoise_mt多线程墨西哥人的输出结果文件。mexw64不匹配的输出结果文件FilterNoise_st.mexw64单线程的墨西哥人。检查您提供正确的状态长度值dspunfold函数当你生成了多线程文件FilterNoise_mt.mexw64墨西哥人。最佳实践和可能解决这个问题,请参见“提示”部分dspunfold万博 尤文图斯函数引用页面。>在coder.internal.warning(第8行)FilterNoise_analyzer ans =延迟:8加速:0.4970通过:0

    分析器寻找一个数值匹配和验证失败,虽然生成的多线程墨西哥人文件是有效的。

加速的局限性:

  • 如果入口点MATLAB函数包含代码复杂性较低,MATLAB开销或多线程的墨西哥人的开销超过任何性能收益。在这种情况下,不要使用dspunfold

  • 如果操作的输入MATLAB函数的数量小于输入或输出数据的大小,多线程的墨西哥人文件不提供任何加速收益。有时,它会导致加速损失,即使重复值增加。在这种情况下,不要使用dspunfold

更多关于

全部折叠

国家长

状态长度的算法。

大多数时候,国家所使用的长度dspunfold比赛的状态长度算法的MATLAB函数入口点。如果算法简单,状态很容易确定长度。例如,冷杉滤波器的长度是水龙头过滤器-的数量1。在某些场景中,为了优化加速,dspunfold选择一个长度,不同于算法状态长度或国家指定的使用- s选择。例如,当国家长度大于(线程- 1重复框架,dspunfold认为国家长度是无限的。同时,多线程残疾人出于性能考虑。

自动状态长度检测

你可以自动检测输出的最小状态长度多线程的墨西哥人,单线程的墨西哥人比赛。

在复杂的算法,它是不容易确定长度分析状态。在这种场景中,使用分析仪计算长度。当您设置- s汽车,dspunfold调用分析器。分析仪计算输出为不同长度和状态检测的最小状态长度多线程墨西哥人的输出文件和单线程的墨西哥人文件匹配。分析仪使用的数值输入给arg游戏。长度检测最有效的状态,提供随机输入arg游戏。在这种模式下,你不能输入coder.typeof参数。由于额外的分析这个工具需要,生成墨西哥人文件的时间增加。

当你使用自动状态长度检测算法依赖于输入值的代码路径,使用输入,选择最长状态的代码路径长度。此外,输入必须立即对输出的影响。如果输入选择一个触发器运行时错误的代码路径,自动状态长度检测停止,所以分析仪。确保MATLAB函数支持代码生成和没有运行时错误的输入测试下。万博1manbetx在调用之前dspunfold,叫codegen在入口点MATLAB函数。此外,模拟的入口点MATLAB函数来确保它没有运行时错误。

线程

- t选项指定线程的数量多线程墨西哥人所使用的文件。

增加这个值可以提高多线程墨西哥人加速,代价更大的延迟。降低这个值减少了延迟和可能减少了多线程的墨西哥人加速。

重复的因素

重复的因素是连续帧处理每个线程的数量在一个处理步骤。

增加这个值可以减少开销每帧的数据,可能改善加速代价更大的延迟。降低这个值降低了延迟,并可能降低了多线程的墨西哥人加速。

自我诊断分析仪

自我诊断分析仪功能是一个帮助工具,是与墨西哥人文件生成的。这个函数多线程墨西哥人文件的措施加速获得比单线程的墨西哥人文件。分析仪功能验证输出的多线程墨西哥人文件和单线程的墨西哥人文件匹配。

如果您指定一个错误的国家长度值,输出通常不匹配。检查多线程之间的数值与墨西哥人文件和单线程的墨西哥人文件,至少提供两种不同的帧的每个输入参数分析仪。帧是附加在第一维度。分析器这些帧之间的交替而验证输出匹配。未能提供多个帧对每个输入可以减少分析的有效性,并可能导致假阳性的验证结果。换句话说,分析器可能会产生通过=1即使结果不正确的国家指定长度值。分析器交替通过最多3×(2×线程×重复)的框架。如果你的算法需要超过3×(2×线程×重复)框架来验证结果,然后分析仪无法准确核实。

提示

一般

  • 不显示情节、范围或执行其他用户界面操作在多线程墨西哥人文件。生成的墨西哥人文件可以有意想不到的行为。

  • 不要使用coder.extrinsic在输入MATLAB函数。生成的墨西哥人文件可以有意想不到的行为。

当国家长度小于或等于(线程- 1重复帧:

  • 不要使用一个随机数在MATLAB函数。单线程的墨西哥人的输出文件和多线程的墨西哥人文件可能不匹配。同时,输出的连续执行多线程墨西哥人文件可能不匹配。分析器可能不会通过数值匹配的验证。

    建议您生成随机数的入口点外的MATLAB函数并将它作为参数传递给函数。

  • 不要使用全局或持续变量以外的其他任何地方的MATLAB函数入口点。例如,在子函数中避免使用持久性变量。生成的墨西哥人文件可以产生不准确的结果。一般来说,全局变量不推荐。

  • 不从在多线程访问I / O资源墨西哥人文件。生成的墨西哥人文件可以有意想不到的行为。这些资源包括文件作者和读者,UDP套接字,音频播放器和录音机。

  • 不要使用功能与交互式输入(例如,键盘)在多线程墨西哥人文件。生成的墨西哥人文件可以有意想不到的行为。

工作流

  • 生成一个有效的多线程墨西哥人文件所需的加速和延迟,遵循生成一个多线程的工作流使用dspunfold墨西哥人文件

  • 使用前dspunfold,叫codegen入口点的MATLAB函数和确保函数生成一个墨西哥人文件成功。

  • 在生成文件使用多线程的墨西哥人dspunfold,运行分析功能。通过确保分析仪功能。这条规则的例外是当该算法产生的结果匹配数据,而不是数字。在这个异常,分析仪功能没有通过,即使dspunfold函数生成一个有效的多线程墨西哥人文件。看到“分析仪限制”为例。

  • 帮忙在使用墨西哥人文件和分析仪,在MATLAB命令提示符,输入帮助< mexfile名称>帮助<分析仪名称>

国家长

  • 如果你选择一个状态长度大于或等于价值的确切状态长度,分析器。如果分析仪失败,增加长度,重新生成墨西哥人文件,并再次验证。

  • 如果政府长度大于0(通过输入标记为帧- f选项)都必须有相同的尺寸。

  • 墨西哥人文件生成并运行分析器时,使用输入,调用相同的长度。

自动状态长度检测

当您设置- s汽车:

  • 如果入口点的算法MATLAB函数选择基于输入值的代码路径,使用输入,选择最长状态的代码路径长度。

  • 提供随机输入arg游戏

  • 选择输入输出具有立竿见影的效果。看到为什么分析仪选择零状态的长度?

分析仪

  • 确保多线程墨西哥人的输出文件和文件不包含单线程的墨西哥人或者一个。分析仪不能数字检查并返回通过作为。自动状态长度检测工具检测到无限的状态并显示一个警告

    警告

    多线程的墨西哥人的输出结果文件不匹配的输出结果无限状态的线程甚至墨西哥人文件长度。一个可能的原因是,输入MATLAB函数生成不同的输出结果之间的连续运行即使对于相同的输入值。

  • 提供多个帧不同的分析仪的每个输入值。提高分析仪有效性、附加连续帧的第一个维度。

  • 提供分析器的输入,导致有效的代码覆盖率。

加速

  • 提高多线程加速的墨西哥人文件,指定具体的国家样本长度。您可以指定国家长度的样品通过设置至少一个条目frameinputs真正的。样品的使用减少了开销,提高了加速。

  • 增加加速的代价更大的延迟,您可以:

    • 增加重复的因素。使用- r选择。

    • 增加线程的数量。使用- t选择。

  • 对每个输入,可分为样品在不改变算法的行为,设置帧状态真正的使用- f选择。然后考虑输入样本,可以增加加速生成的多线程的墨西哥人文件。

算法

多线程多墨西哥人文件缓冲信号帧的缓冲2×线程×重复帧,线程是线程的数量,和重复是重复的因素。墨西哥人文件同时处理这些帧,使用多个内核。这个过程介绍了确定性延迟,延迟=2×线程×重复。延迟交易与加速你可能获得通过增加线程的数量或重复的因素。

介绍了R2015b