估计算子数的MATLAB算法
这个例子展示了如何在MATLAB®编写的算法中估计算术运算符的数量。分析基数2的FFT算法并生成显示操作符使用情况的报告。
基2 FFT算法及测试台
中算术运算符的数目soc_analyze_FFT_radix2
函数。计算函数执行期间使用的算术运算符的数量。的testbenchsoc_analyze_fft_tb
给出刺激并验证了基2 FFT算法的实现(soc_analyze_FFT_radix2
)与MATLAB FFT函数(fft
)。
打开soc_analyze_FFT_tb.m
在MATLAB编辑器中对该文件的结构进行测试。
开放soc_analyze_FFT_tb
试验台产生两个正弦波的测试信号,一个是50 Hz,振幅为0.7,另一个是120 Hz,振幅为1。该信号的采样频率为1千赫,带有加性随机噪声。测试台计算上述测试信号的FFT输出,FFT长度指定为FFTLen
论点。测试平台将函数的输出与MATLAB FFT函数的输出进行比较(fft
)并绘制结果。
生成1024点基数2 FFT操作员计数报告
要估计基数2 FFT的操作符数,请使用socFunctionAnalyzer
函数,并提供测试平台函数soc_analyze_FFT_tb
作为一个论证。默认情况下,该函数为testbench函数中调用的所有函数生成报告,并列出使用的所有操作符。
若要仅为算法生成报告(soc_analyze_FFT_radix2
),而不是用于测试台,使用“RestrictFunction”
名称-值对参数“soc_analyze_FFT_radix2.m”
.使用“RestrictOperator”
参数来筛选报表,并通过将其值设置为仅显示三个操作符{'添加',' - ',' MUL '}
.设置“OutputFolder”
参数指定生成报表的文件夹位置。
执行此命令生成1024点基数2的FFT算法仿真报告。该命令在计算运算符并生成报告时模拟设计。
socFunctionAnalyzer (“soc_analyze_FFT_tb.m”,“FunctionInputs”, 1024,...“文件夹”,“report_1024”,“IncludeFunction”,“soc_analyze_FFT_radix2.m”,...“IncludeOperator”, {“添加”,“-”,“MUL”});
生成/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex65369380/soc_analyze_FFT_tb的操作符分析报告。米……将报表文件保存在“/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex65369380/report_1024”目录下。运算估计:打开报表查看器完成。
观察基2 FFT算法和参考MATLAB FFT函数(fft
)的结果得到上面的模拟图。验证这些结果是非常相似的,这些结果之间的差异是10e-12。
分析操作员评估报告
控件打开报告打开报表查看器链接在MATLAB控制台中。或者,您可以使用socAlgorithmAnalyzerReport
函数。该报告提供了两个视图。第一个视图是操作符视图,它显示的数据是每一行对应一个操作符。若要使用该视图,请单击操作视图在报表工具条上。第二个视图是算法视图,其中每一行对应一个MATLAB函数。若要使用该视图,请单击算法的观点在报表工具条上。
默认情况下,报表以操作员视图打开。该报告打开每个操作符和数据类型的聚合视图。例如,1024个点数基数2的FFT总共有91649个加法(添加(+))数据类型的双
还有67094个减法(负(-))数据类型的int32
.要获得每个操作符的详细报告,展开该操作符。该报告显示了在各种函数中使用的运算符计数。例如,蝴蝶函数l_butterfly
包含四个双
每个添加项执行5120次。控件中的一个链接,以突出显示该操作符的位置,从而跟踪该操作符soc_analyze_FFT_radix2
文件。
控件切换到算法视图算法的观点按钮。展开报告并查看文件下所有函数的运算符计数soc_analyze_FFT_radix2.m
.您可以通过展开另一层来查看每个操作符及其数据类型的计数。你也可以使用全部展开而且全部折叠用于导航报表的报表工具条上的按钮。要将特定的运算符跟踪到MATLAB代码,请单击列中相应的链接链接到源代码在报告中。
生成512点基数2 FFT报告
为了观察操作数和FFT中的点数之间的相关性,将之前的报告与512点基数2的FFT的报告进行比较。通过将512的值传递给“FunctionInputs”
名称-值对参数,如此命令。
socFunctionAnalyzer (“soc_analyze_FFT_tb.m”,“FunctionInputs”, 512,...“文件夹”,“report_512”,“IncludeFunction”,“soc_analyze_FFT_radix2.m”,...“IncludeOperator”, {“添加”,“-”,“MUL”});
生成/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex65369380/soc_analyze_FFT_tb的操作符分析报告。米……将报告文件保存在“/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex65369380/report_512”目录下。运算估计:打开报表查看器完成。
对于512点基数2 FFT,聚合报告显示了数据类型增加的估计数量为41,473双
, 32,026种类型的减法int32
以及11,316个数据类型的减法双
.之前,以1024点为基数的FFT,这些值分别为91,649、70,173和25,146。控件中展开报告以获得详细的操作员利用率l_butterfly
函数。在这种情况下,对于512长度的函数执行2304次,而对于1024长度的函数执行5120次)。
结论
使用socFunctionAnalyzer
函数来估计和分析算术算子的数量在MATLAB函数为基数2 FFT。使用各种查看器选项来分析报表。
在总体视图中
详细的每个操作符视图和每个MATLAB函数
通过将不同的参数作为输入传递给算法并观察差异来分析报告。
您可以使用此分析来估计在给定硬件平台上实现算法的成本。