从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。