主要内容

生成高性能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

与Windows上的普通C代码相比,生成的SIMD代码大约快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代码生成的System对象列表,请参见金宝app支持SIMD代码生成的DSP系统工具箱中的系统对象金宝app

相关的话题