主要内容

为小波生成和部署优化的代码时间对部门目标散射

这个例子展示了如何生成代码小波次散射有或没有手臂®特殊优化。示例演示了性能改进臂由于优化目标。

下面的例子使用了代码生成只方法,codegen函数生成代码在主机电脑。下面的例子使用了packNGo函数在主机上生成的代码打包成一个压缩的zip文件。你必须运行命令复制压缩zip文件和其他支持文件和构建可执行程序在目标硬件。万博1manbetx

请注意这个例子是测试覆盆子π®4模型B设备。在Windows平台上,安装plink.exepscp.exe硬件和宿主的相互作用。

创建waveletScatteringProfiler函数

waveletScatteringProfiler函数读取输入数据和计算小波散射特性。函数用于生成代码,没有优化。功能概要waveletScattering函数为50迭代相同的输入数据并保存文件中的每个迭代的时间profileData.txt。生成的文件profileData.txt是用来比较的性能没有和优化生成的代码。

类型waveletScatteringProfiler
函数waveletScatteringProfiler() %免责声明:这个函数仅仅是为了支持“小波生成和部署%优化代码时间对部门目标散射”的例子。万博1manbetx%,它可能改变或在将来的版本中被删除。% # codegen % 2022年版权MathWorks公司持久sn;如果isempty (sn) windowLength = 5 e4;Fs = 16 e3;= 0.5;%实例化小波散射对象。sn = waveletScattering (SignalLength = windowLength SamplingFrequency = Fs,…InvarianceScale =);最终文件标识= fopen (' profileData.txt ', ' w '); formatSpec = "%f \n"; numRuns = 50; for i=1:numRuns tic; % Invoke featureMatrix method on wavelet scattering object. S = sn.featureMatrix(in,'transform','log'); elapsedTime = toc; % Write the elapse time in "profileData.txt" file. fprintf(fileID, formatSpec, elapsedTime); end fclose(fileID); end

代码生成没有优化

本节演示了代码生成和部署的waveletScatteringProfiler功能树莓π硬件。

设置代码生成配置对象

建立一个可执行的代码配置对象。生成可执行文件,设置cfg.CustomSource主要的文件的名称。这个例子包括一个定制的主文件(main_waveletScattering.c)。主文件调用生成的代码waveletScatteringProfiler函数。

类型main_waveletScattering.c
/ /版权2022 MathWorks公司/ /免责声明:这个函数仅仅是为了支持“小波生成和部署/ /优化代码时间对部门目标散射”的例子。万博1manbetx/ /可能改变或在将来的版本中被删除。/ /包含文件# Include“waveletScatteringProfiler。h waveletScatteringProfiler_terminate # include。h”# include < stdlib。h > # include <时间。h > / /函数声明静态孔隙argInit_50000x1_real_T(双结果[50000]);/ / / / / /函数定义参数:双重结果[50000]/ /返回类型:空白/ /静态孔隙argInit_50000x1_real_T(双结果[50000]){/ /种子当前时间价值在几秒钟内。将srand ((unsigned int)时间(0));/ /遍历该数组初始化每个元素。for (int idx0 = 0;idx0 < 50000;idx0 + +){/ /设置数组元素的值。 // Change this value to the value that the application requires. // Assign random values between 0 and 1. result[idx0] = ((float)rand() / (float)(RAND_MAX)); } } int main() { static double dv[50000]; // Initialize function 'waveletScatteringProfiler' input arguments. argInit_50000x1_real_T(dv); // Call the entry-point 'waveletScatteringProfiler'. waveletScatteringProfiler(dv); // Terminate the application. // You do not need to do this more than one time. waveletScatteringProfiler_terminate(); return 0; } // // File trailer for main.cpp // // [EOF] //

如果你想提供自己的主文件,生成一个主文件,并使用它作为一个模板重写的主要文件。有关更多信息,请参见GenerateExampleMain的属性coder.CodeConfig(MATLAB编码器)

创建一个配置对象的可执行文件和生成代码。

cfg = coder.config (exe”);cfg.CustomSource=“main_waveletScattering.c”;cfg。GenCodeOnly = true;

使用生成代码codegen

生成的代码waveletScatteringProfiler函数的输入大小50000 - 1。的codegen函数生成代码与该文件夹的名称waveletScatteringProfiler在当前工作目录在主机电脑。

signalLength = 5 e4;信号= 1 (signalLength, 1);codegenFolderName =“waveletScatteringProfiler”;codegen (“waveletScatteringProfiler”,“配置”cfg,“参数”},{信号,“- d”,codegenFolderName);
代码生成成功。

创建Zip文件打包使用packNGo

packNGo函数在一个压缩包所有相关文件的zip文件。

zipFileName = [codegenFolderName,“zip”];bInfo =负载(fullfile (codegenFolderName“buildInfo.mat”));packNGo (bInfo。buildInfo, {“文件名”zipFileName,“minimalHeaders”假的,“ignoreFileMissing”,真正的});

代码打包成一个zip文件。

构建和运行可执行目标硬件上

运行下面的命令来构建和运行的可执行的硬件。

在以下代码中,指定目标设备细节如下:

  • hardwareName名或IP地址的覆盆子π设备

  • 用户名和你的用户名

  • 密码用你的密码

  • codegenFolderLocationOnTarget硬件上的位置,你想复制生成的代码

hardwareName =“< NameOfTheRaspberryPiDevice >”;用户名=“<用户名>”;密码=“<密码>”;codegenFolderLocationOnTarget =“< CodegenFolderLocationOnTarget >”;

使用辅助函数copyAndExtractZipFileInTheHardwareHelper复制和硬件目标提取的zip文件。

copyAndExtractZipFileInTheHardwareHelper (zipFileName hardwareName、用户名、密码codegenFolderLocationOnTarget);
# # Zip文件复制到硬件成功。# #解压缩的文件夹上的硬件。

使用辅助函数copy万博1manbetxSupportedFilesToTheHardwareHelper复制文件到目标硬件的支持万博1manbetx。这个例子使用一个支持文件:万博1manbetx

  • waveletScatteringProfiler_rtw.mk——Makefile用于创建可执行生成的代码。

万博1manbetxsupportingFiles =“waveletScatteringProfiler_rtw.mk”;copy万博1manbetxSupportedFilesToTheHardwareHelper (supportingFiles zipFileName hardwareName,用户名,密码,codegenFolderLocationOnTarget);
# #复制硬件的支持文件。万博1manbetx

使用辅助函数buildAndRunExecutableOnTheHardwareHelper在硬件构建和运行可执行的目标。

构建和硬件上运行的可执行文件。可执行创建该文件profileData.txt节省了小波散射函数运行时间50迭代。

buildAndRunExecutableOnTheHardwareHelper (zipFileName hardwareName、用户名、密码codegenFolderLocationOnTarget);
# #可执行成功创建的硬件。# #开始跑步的eecutable硬件……# #运行可执行成功的硬件。

提取分析数据来自硬件的信息

使用辅助函数profileDataWithoutOptimizations复制profileData.txt硬件上的MATLAB®主机和数据读取文本文件到工作空间变量profileDataWithoutOptimizations

profileDataWithoutOptimizations =getProfilingDataFromTheHardwareHelper (zipFileName hardwareName、用户名、密码codegenFolderLocationOnTarget);
# #“profileData复制。txt文件从硬件到主机。在“profileData # #完成写入数据。txt”MATLAB工作空间变量。

代码生成与优化

本节演示了如何生成优化代码和部署waveletScatteringProfiler功能树莓π硬件。本节遵循步骤类似于前一节中使用。生成最优代码,你需要额外的设置来配置对象的代码。

设置代码生成配置对象

建立一个可执行的代码配置对象。生成可执行文件,指定的主要文件cfg.CustomSource。这个例子包括一个定制的主文件(main_waveletScattering.c)。主文件调用生成的代码waveletScatteringProfiler函数。指定cfg.HardwareImplementation.ProdHWDeviceType为一只手臂配置代码生成目标。

cfg = coder.config (exe”);cfg.CustomSource=“main_waveletScattering.c”;cfg。GenCodeOnly = true;cfg.HardwareImplementation.ProdHWDeviceType=手臂兼容- >部门64位(LP64) ';

使用生成代码codegen

生成的代码waveletScatteringProfiler函数的输入大小50000 - 1。的codegen函数生成代码与该文件夹的名称waveletScatteringProfiler在当前工作目录在主机电脑。

signalLength = 5 e4;信号= 1 (signalLength, 1);codegenFolderName =“waveletScatteringProfiler”;codegen (“waveletScatteringProfiler”,“配置”cfg,“参数”},{信号,“- d”,codegenFolderName);
代码生成成功。

创建Zip文件打包使用packNGo

packNGo函数在一个压缩包所有相关文件的zip文件。

zipFileName = [codegenFolderName,“zip”];bInfo =负载(fullfile (codegenFolderName“buildInfo.mat”));packNGo (bInfo。buildInfo, {“文件名”zipFileName,“minimalHeaders”假的,“ignoreFileMissing”,真正的});

代码打包成一个zip文件。

构建和运行可执行目标硬件上

将zip文件并提取复制到文件夹,删除硬件的zip文件。修改hardwareName,用户名,密码与你的树莓π设备细节。

hardwareName =“< NameOfTheRaspberryPiDevice >”;用户名=“<用户名>”;密码=“<密码>”;codegenFolderLocationOnTarget =“< CodegenFolderLocationOnTarget >”;

使用辅助函数copyAndExtractZipFileInTheHardwareHelper复制和硬件目标提取的zip文件。

copyAndExtractZipFileInTheHardwareHelper (zipFileName hardwareName、用户名、密码codegenFolderLocationOnTarget);
# # Zip文件复制到硬件成功。# #解压缩的文件夹上的硬件。

使用辅助函数copy万博1manbetxSupportedFilesToTheHardwareHelper复制文件到目标硬万博1manbetx件的支持。这个例子使用一个支持文件。万博1manbetx

万博1manbetxsupportingFiles =“waveletScatteringProfiler_rtw.mk”;copy万博1manbetxSupportedFilesToTheHardwareHelper (supportingFiles zipFileName hardwareName,用户名,密码,codegenFolderLocationOnTarget);
# #复制硬件的支持文件。万博1manbetx

使用辅助函数buildAndRunExecutableOnTheHardwareHelper在硬件构建和运行可执行的目标。可执行文件创建profileData.txt小波散射函数,存储时间50迭代。

buildAndRunExecutableOnTheHardwareHelper (zipFileName hardwareName、用户名、密码codegenFolderLocationOnTarget);
# #可执行成功创建的硬件。# #开始跑步的eecutable硬件……# #运行可执行成功的硬件。

提取分析数据来自硬件的信息

使用辅助函数getProfilingDataFromTheHardwareHelper阅读profileData.txt文件从硬件。

profileDataWithOptimizations =getProfilingDataFromTheHardwareHelper (zipFileName hardwareName、用户名、密码codegenFolderLocationOnTarget);
# #“profileData复制。txt文件从硬件到主机。在“profileData # #完成写入数据。txt”MATLAB工作空间变量。

比较分析数据使用和不优化

情节分析结果有无ARM-specific优化。你可以看到显著改善和优化使用。

图(“名称”,“生成的代码性能比较)情节(profileDataWithoutOptimizations“- r”)举行情节(profileDataWithOptimizations“g”)传说(“没有优化”,“优化”)举行标题({“生成的代码性能比较,“小波次散射”})包含(“迭代”)ylabel (“运行时间(毫秒)”)

另请参阅

对象

功能

相关的例子

更多关于