主要内容

生成高性能SIMD代码英特尔MATLAB算法DSP系统工具箱

从MATLAB中生成SIMD代码®系统对象,创建一个coder.config(MATLAB编码器)对象,设置CodeReplacementLibrary财产'DSP Intel AVX2-FMA (Windows)''DSP Intel AVX2-FMA (Linux)',或'DSP Intel AVX2-FMA (Mac)',并将对象与codegen(MATLAB编码器)命令。

此工作流程要求您进行安装MATLAB编码器™和嵌入式编码®在您的机器上。

考虑这个MATLAB函数,该函数使用dsp。FIRFilter系统对象™。

函数y = firsingle ()持续的冷杉如果Isempty (fir) b = fir1(250,.4);冷杉= dsp.FIRFilter (b);结束frameSize = 512;numChannels = 8;numFrames = 1 e3;k = 1:numFrames x = randn(frameSize,numChannels,“单一”);y =冷杉(x);结束

方法生成此函数的纯C代码可执行文件codegen命令。

cfg = coder.config (exe”);%提供启动器主cfg。GenerateExampleMain =“GenerateCodeAndCompile”开关计算机(“拱”情况下“glnxa64”codegenfirsingle配置cfg报告- ofirsingle_std情况下“win64”codegenfirsingle配置cfg报告- ofirsingle_std.exe情况下“maci64”codegenfirsingle配置cfg报告- ofirsingle_std结束

测量运行生成的可执行文件所需的时间。

抽搐;系统(“firsingle_std”);tplain = toc
tplain = 1.1700

生成可执行的AVX2 C代码CodeReplacementLibrary参数是'DSP Intel AVX2-FMA (Windows)''DSP Intel AVX2-FMA (Linux)',或'DSP Intel AVX2-FMA (Mac)',并致电codegen命令的coder.config对象。

cfg = coder.config (exe”);开关计算机(“拱”情况下“glnxa64”cfg。CodeReplacementLibrary ='DSP Intel AVX2-FMA (Linux)'情况下“win64”cfg。CodeReplacementLibrary ='DSP Intel AVX2-FMA (Windows)'情况下“maci64”cfg。CodeReplacementLibrary ='DSP Intel AVX2-FMA (Mac)'结束cfg。GenerateExampleMain =“GenerateCodeAndCompile”%提供启动器主开关计算机(“拱”情况下“glnxa64”codegenfirsingle配置cfg报告- ofirsingle_avx2情况下“win64”codegenfirsingle配置cfg报告- ofirsingle_avx2.exe情况下“maci64”codegenfirsingle配置cfg报告- ofirsingle_avx2结束

测量运行生成的可执行文件所需的时间。

抽搐;系统(“firsingle_avx2”);tavx2 = toc
tavx2 = 0.2611

生成的SIMD代码比Windows上的纯C代码快4.5倍左右®10台机器。

tplain / tavx2
ans = 4.4815

您还可以通过指定构建类型为来生成静态库和动态库“自由”而且“dll”,分别。

cfg = coder.config(“自由”);cfg。CodeReplacementLibrary = 'DSP Intel AVX2-FMA (Windows)';codegenMATLABfunctionName配置cfg
cfg = coder.config (dll);cfg。CodeReplacementLibrary = 'DSP Intel AVX2-FMA (Windows)';codegenMATLABfunctionName配置cfg

MATLABfunctionName是一个MATLAB函数,它调用您试图从中生成SIMD代码的System对象。有关支持SIMD代码生成的系统对象列表,请参见DSP系统工具箱中支持SIMD代码生成的系统对象

相关的话题

Baidu
map