主要内容

您现在的位置是:虫虫下载站>资源下载> MATLAB编程器> MATLAB 万博1manbetxCoder Support Package for NVIDIA Jetson and NVIDIA DRIVE platform

此示例显示如何使用MATLAB®Coder™支持万博1manbetx包,用于NVIDIA Jetson和NVIDIA Drive Platforms使用NVIDIA®的嵌入式电路板。该示例使用简单的向量添加算法来说明:

  • 从MATLAB环境连接到嵌入式板。

  • 执行基本操作,例如与MATLAB之间的文件传输,以及在板上执行Linux®shell命令。

  • 从一个Matlab函数生成C++可执行文件,并在该板上运行ARM®CPU的可执行文件。

  • 从MATLAB函数生成CUDA®可执行文件,并在NVIDIA GPU上运行可执行文件。

先决条件

目标板要求

  • NVIDIA驱动PX2或Jetson嵌入式平台。

  • 以太网交叉电缆连接目标板和主机PC(如果您无法将目标板连接到本地网络)。

  • NVIDIA CUDA工具包和安装在主板上的库。

  • 编译器和库的目标环境变量。有关更多信息,请参阅安装和设置NVIDIA板的先决条件(MATLAB编码器支持包为万博1manbetxNVIDIA Jetson和NVIDIA Drive Platforms)

开发主机要求

创建文件夹并复制相关文件

以下代码行在主机上的当前工作文件夹中创建一个文件夹,并将所有相关文件复制到此文件夹中。如果无法在此文件夹中生成文件,请在运行此命令之前更改当前工作文件夹。

nvidiademo_setup(“nvidia_即将启动”);

连接到NVIDIA硬件

支持包使万博1manbetx用TCP/IP上的SSH连接来执行命令,同时在Jetson或DRIVE平台上构建和运行生成的代码。将目标平台与主机连接到同一网络,或者使用以太网交叉网线直接将单板与主机连接。有关如何设置和配置主板的信息,请参阅NVIDIA文档。

要与NVIDIA硬件进行通信,请通过使用“创建实时硬件连接对象”驾驶(MATLAB编码器支持包为万博1manbetxNVIDIA Jetson和NVIDIA Drive Platforms)杰森(MATLAB编码器支持包为万博1manbetxNVIDIA Jetson和NVIDIA Drive Platforms)功能。您必须知道目标板的主机名或IP地址,用户名和密码以创建实时硬件连接对象。例如,在第一次连接到目标板时,使用命令为Jetson硬件创建Live对象:

hwobj =杰森('jetson-tx2-name''ubuntu''ubuntu');

在硬件实时对象创建过程中,支持包执行硬件和软件检查、IO服务器安装,并收集目标上的外围信息。万博1manbetx此信息显示在命令窗口中。

同样,要为驱动器硬件创建实时对象,请使用命令:

hwobj = drive(“drive-px2-name”'ubuntu''ubuntu');

在连接失败的情况下,Matlab命令行报告了诊断错误消息。如果连接失败,则最可能的原因是IP地址或主机名不正确。

在NVIDIA硬件上运行Linux命令

当成功连接到板时,可以使用板对象的系统方法,从MATLAB在NVIDIA硬件上执行各种Linux shell命令。例如,要列出目标板的home文件夹的内容,使用命令:

系统(hwobj,'ls -al〜');

硬件对象提供基本的文件操作能力。要将文件从主机传输到目标,请使用putFile()实时硬件对象的方法。例如,转移test.txt.文件中的文件在当前文件夹中RemoteBuilddir.在目标板上使用命令:

putfile(hwobj,'test.txt''〜/ remotebuilddir');

要将文件从目标板复制到主机,请使用getFile()硬件对象的方法。例如,

getfile(hwobj,“~ / remoteBuildDir /用法”'。');

使用MATLAB编码器生成ARM CPU的C ++代码

这个例子用途myadd.m.,一个简单的向量添加,作为代码生成的入口点函数。

功能Out = MyAdd(Inp1,Inp2)%#codegen.%简单矢量添加%版权所有2018-2021 The MathWorks,Inc。Out = inp1 + inp2;结尾

要生成可部署到NVIDIA目标的可执行文件,请创建用于生成可执行文件的代码配置对象。

cfg = coder.config('可执行程序');cfg.targetlang ='c ++';

当不同目标有多个实时连接对象时,代码生成器会在为其创建最近的实时对象的目标板上执行远程构建。要选择用于执行远程生成的硬件板,请使用setupcodegencontext()相应实时硬件对象的方法。如果仅创建一个实时连接对象,则无需调用此方法。

hwobj.setupCodegenContext;

要为DRIVE或Jetson平台创建配置对象并将其分配给硬件属性CFG., 使用编码器。硬件功能。用'nvidia jetson'对于Jetson板和“NVIDIA驱动”用于驱动板。

cfg.Hardware=coder.Hardware('nvidia jetson');

要指定用于在目标板上执行远程构建过程的文件夹,请使用BuildDir财产。如果目标板上不存在指定的构建文件夹,则该软件将创建具有给定名称的文件夹。如果没有分配任何值cfg.Hardware.BuildDir,远程构建过程发生在最后一个指定的构建文件夹中。如果没有存储的构建文件夹值,则构建过程将在主文件夹中进行。

cfg.hardware.builddir =.'〜/ remotebuilddir';

习俗main.cpp.文件是在生成的代码中调用入口点函数的包装器。此主文件将包含前100个自然数的向量传递给入口点函数。主文件将结果写入myAdd.bin二进制文件。

cfg.customsource = fullfile('main.cpp');

要生成C ++代码,请使用Codegen.功能并通过代码配置和输入的大小myadd.m.入口点函数。在主机上生成代码后,生成的文件将被复制并构建到目标板上。

Codegen(“-config”,cfg,“myAdd”'-args',{1:100,1:100});

使用GPU编码器生成目标板的CUDA代码

验证目标板上的GPU环境

要验证运行此示例所需的编译器和库是否正确设置,请使用coder.checkGpuInstall功能。

%对NVIDIA驱动器硬件使用“驱动器”envCfg=coder.gpuEnvConfig(“杰森”); envCfg.BasicCodegen=1;envCfg.Quiet=1;envCfg.HardwareObject=hwobj;编码器。检查GPUInstall(envCfg);

生成CUDA可执行文件

要生成可部署到NVIDIA目标的CUDA可执行文件,请创建用于生成可执行文件的GPU代码配置对象。

cfg = coder.gpuconfig('可执行程序'); cfg.Hardware=coder.Hardware('nvidia jetson');cfg.hardware.builddir =.'〜/ remotebuilddir'; cfg.CustomSource=fullfile('main.cu');

某些NVIDIA平台(如驱动器PX2)包含多个GPU。在此类平台上,使用SelectCudadevice.GPU配置对象中的属性选择特定的GPU。

cfg.GpuConfig.selectCudDevice=0;
Codegen(“-config”,cfg,“myAdd”'-args',{1:100,1:100});

在目标板上运行可执行文件

要在目标硬件上运行可执行文件,请使用运行应用程序()硬件对象的方法。

pid=运行应用程序(hwobj,“myAdd”);

或者,要运行可执行文件,请使用runExecutable ()硬件对象的方法。

exe = [hwobj.workspacedir'/ myadd.elf']; pid=运行可执行文件(hwobj,exe);

从目标板验证结果

复制输出bin文件myAdd.bin在主机上的MATLAB环境中,并将计算结果与来自MATLAB的结果进行比较。财产workspaceDir包含路径Codegen.目标板上的文件夹。

暂停(0.3);%以确保可执行文件完成执行。getfile(hwobj,[hwobj.workspacedir'/ myadd.bin']);

MATLAB的仿真结果:

simOut=myAdd(0:99,0:99);

在MATLAB中从目标读取复制的结果二进制文件:

fId = fopen (“myAdd.bin”'r'); tOut=fread(fId,“双人”);

找出MATLAB仿真输出与目标板输出之间的差异。

diff = simout  -  tout';

显示仿真输出和目标板输出之间的最大偏差。

fprintf(“MATLAB仿真输出与目标上输出的最大偏差为:%f\n”,最大值(差值(:);

清理

要删除示例文件并返回原始文件夹,请调用清理功能。

清理

也可以看看

对象

  • (MATLAB编码器支持包为万博1manbetxNVIDIA Jetson和NVIDIA Drive Platforms)|(MATLAB编码器支持包为万博1manbetxNVIDIA Jetson和NVIDIA Drive Platforms)

相关的话题