NVIDIA Jetson和NVIDIA DRIVE平台的MATLAB编码器金宝app支持包
方法的使用MATLAB®Coder™支持金宝app包NVIDIA Jetson和NVIDIA DRIVE平台与NVIDIA®嵌入式板。这个例子使用了一个简单的向量加法算法来说明:
从MATLAB环境连接到嵌入式板。
在单板上执行基本操作,如MATLAB文件传输、Linux®shell命令等。
从MATLAB函数生成c++可执行文件,并在主板上的ARM®CPU上运行。
从MATLAB函数生成CUDA®可执行文件,并在板中的NVIDIA GPU上运行可执行文件。
先决条件
目标板要求
NVIDIA DRIVE PX2或Jetson嵌入式平台。
用于连接目标板和主机PC的以太网交叉电缆(如果无法将目标板连接到本地网络)。
NVIDIA CUDA工具包和库安装在板上。
目标上用于编译器和库的环境变量。有关更多信息,请参见NVIDIA板的安装和设置先决条件(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包).
开发主机要求
MATLAB编码器用于c++代码生成。有关教程,请参见开始使用MATLAB编码器.
用于CUDA代码生成的GPU编码器。有关教程,请参见开始使用GPU编码器.
用于CUDA代码生成,NVIDIA CUDA工具包上的主机和环境变量为编译器和库。有关更多信息,请参见第三方硬件而且设置必备产品下载188bet金宝搏.
创建一个文件夹并复制相关文件
下面这行代码在主机上的当前工作文件夹中创建了一个文件夹,并将所有相关文件复制到该文件夹中。如果无法在此文件夹中生成文件,请先更改当前工作文件夹再执行此命令。
nvidiademo_setup (“nvidia_gettingstarted”);
连接到NVIDIA硬件
支持包使金宝app用TCP/IP上的SSH连接来执行命令,同时在Jetson或DRIVE平台上构建和运行生成的代码。将目标平台连接到与主机相同的网络中,或者使用以太网交叉电缆将单板直接连接到主机。有关如何设置和配置您的电路板的信息,请参阅NVIDIA文档。
属性来创建活动硬件连接对象,以与NVIDIA硬件通信开车
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)或杰森
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)函数。创建硬件活连接对象时,需要知道目标板的主机名或IP地址、用户名和密码。例如,当第一次连接到目标板时,使用命令为Jetson硬件创建一个活动对象:
Hwobj = jetson(“jetson-tx2-name”,ubuntu的,ubuntu的);
在硬件活动对象创建期间,支持包执行硬件和软件检查、IO服务器安装并收集目标的外围设备信息。金宝app该信息显示在“命令窗口”中。
类似地,要为DRIVE硬件创建活动对象,使用命令:
Hwobj = drive(“drive-px2-name”,ubuntu的,ubuntu的);
在连接失败的情况下,在MATLAB命令行报告诊断错误消息。如果连接失败,最可能的原因是IP地址或主机名错误。
在NVIDIA硬件上运行Linux命令
当成功建立到单板的连接时,您可以使用board对象的系统方法从MATLAB在NVIDIA硬件上执行各种Linux shell命令。例如,要列出目标板上主文件夹的内容,使用命令:
系统(hwobj,ls -al ~);
硬件对象提供基本的文件操作功能。要将文件从主机传输到目标,请使用putFile ()
活硬件对象的方法。例如,传输用法
将当前文件夹中的文件转移到remoteBuildDir
在目标板上使用命令:
putFile (hwobj“用法”,“~ / remoteBuildDir”);
要将文件从目标板复制到主机,请使用getFile ()
硬件对象的方法。例如,
getFile (hwobj,“~ / remoteBuildDir /用法”,“。”);
使用MATLAB Coder生成ARM CPU的c++代码
这个例子使用了myAdd.m
,一个简单的向量加法,作为代码生成的入口点函数。
函数out = myAdd(inp1,inp2)% # codegen简单向量加法版权所有The MathWorks, Inc.Out = inp1 + inp2;结束
若要生成可部署到NVIDIA目标上的可执行文件,请创建用于生成可执行文件的代码配置对象。
CFG = code .config(exe”);cfg。TargetLang =“c++”;
当不同目标有多个活动连接对象时,代码生成器将在为其创建最近活动对象的目标板上执行远程构建。若要选择执行远程构建的硬件板,请使用setupCodegenContext ()
各自活动硬件对象的方法。如果只创建了一个活动连接对象,则不需要调用此方法。
hwobj.setupCodegenContext;
为DRIVE或Jetson平台创建一个配置对象,并将其分配给硬件
代码配置对象的属性cfg
,使用coder.hardware
函数。使用英伟达杰森的
杰森家族的董事会和“NVIDIA驱动”
用于DRIVE板。
cfg。硬件= code . Hardware (英伟达杰森的);
要指定在目标板上执行远程生成过程的文件夹,请使用BuildDir
财产。如果指定的构建文件夹在目标板上不存在,那么该软件将创建一个具有给定名称的文件夹。如果没有赋值cfg.Hardware.BuildDir
,则远程生成过程发生在最后指定的生成文件夹中。如果没有存储生成文件夹值,则生成过程将在主文件夹中进行。
cfg.Hardware.BuildDir =“~ / remoteBuildDir”;
自定义main.cpp
File是在生成的代码中调用入口点函数的包装器。这个主文件将一个包含前100个自然数的向量传递给入口点函数。主文件将结果写入myAdd.bin
二进制文件。
cfg。CustomSource = fullfile(“main.cpp”);
要生成c++代码,请使用codegen
函数和传递的代码配置和输入的大小myAdd.m
入口点函数。在主机上生成代码后,将复制生成的文件并在目标板上构建。
codegen (“配置”cfg,“myAdd”,“参数”, {1:10 0, 1:10 0});
使用GPU Coder为目标板生成CUDA代码
检查目标板GPU环境
要验证运行此示例所需的编译器和库是否已正确设置,请使用coder.checkGpuInstall
函数。
% NVIDIA drive硬件使用'drive'envCfg = code . gpuenvconfig (“杰森”);envCfg。BasicCodegen = 1;envCfg。安静= 1;envCfg。HardwareObject = hwobj;coder.checkGpuInstall (envCfg);
生成CUDA可执行文件
若要生成可部署到NVIDIA目标上的CUDA可执行文件,请创建用于生成可执行文件的GPU代码配置对象。
cfg = code . gpuconfig (exe”);cfg。硬件= code . Hardware (英伟达杰森的);cfg.Hardware.BuildDir =“~ / remoteBuildDir”;cfg。CustomSource = fullfile(“main.cu”);
某些NVIDIA平台(如DRIVE PX2)包含多个gpu。在这样的平台上,使用SelectCudaDevice
属性,选择指定的图形处理器。
cfg. gpconfig . selectcudadevice = 0;
codegen (“配置”cfg,“myAdd”,“参数”, {1:10 0, 1:10 0});
在目标板上运行可执行文件
要在目标硬件上运行可执行文件,请使用runApplication ()
硬件对象的方法。
pid = runApplication(hwobj,“myAdd”);
或者,要运行可执行文件,请使用runExecutable ()
硬件对象的方法。
exe = [hwobj.workspaceDir . exe' / myAdd.elf '];pid = runExecutable(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中从target读取复制的结果二进制文件:
fId = fopen(“myAdd.bin”,“r”);(fId)“双”);
找出MATLAB仿真输出与目标板输出的差异。
diff = simOut - tOut';
显示模拟输出与目标板输出之间的最大偏差。
流(' MATLAB仿真输出与Target输出的最大偏差为:%f\n'马克斯(diff (:)));
清理
要删除示例文件并返回到原始文件夹,请调用清理
函数。
清理
另请参阅
对象
杰森
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)|开车
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)
相关的话题
- 在NVIDIA硬件上构建和运行可执行文件
- 使用GPU编码器应用程序在NVIDIA硬件上构建和运行可执行文件
- 停止或重新启动在NVIDIA硬件上运行的可执行文件(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)
- 在NVIDIA硬件上运行Linux命令(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)