使用GPU编码器在NVIDIA目标上的处理器在循环执行
这个例子展示了MATLAB®Coder™支持包NVIDIA Jetson和NVIDI万博1manbetxA DRIVE平台如何使GPU Coder™产品在NVIDIA®DRIVE™和Jetson硬件平台上运行PIL执行。本例使用GPU雾校正代码生成来自GPU Coder的示例演示PIL执行。有关更多信息,请参见雾整改(GPU编码器).
先决条件
目标板要求
NVIDIA Jetson或DRIVE嵌入式平台。
用于连接目标板和主机PC的以太网交叉网线(如果目标板无法连接到本地网络)。
NVIDIA CUDA工具包安装在板上。
目标上用于编译器和库的环境变量。有关更多信息,请参见NVIDIA板的安装和设置先决条件.
开发主机要求
用于CUDA代码生成的GPU编码器。有关教程,请参见开始使用GPU编码器(GPU编码器).
图像处理工具箱™。
用于代码生成的嵌入式Coder™。
主机上的NVIDIA CUDA工具包。
编译器和库的环境变量。有关更多信息,请参见第三方硬件(GPU编码器)而且设置必备产品s manbetx 845(GPU编码器).
创建一个文件夹并复制相关文件
下面这行代码在主机上的当前工作文件夹中创建了一个文件夹,并将所有相关文件复制到该文件夹中。如果无法在此文件夹中生成文件,请先更改当前工作文件夹再执行此命令。
nvidiademo_setup (“gpucoderdemo_fog_rectification”);
连接到NVIDIA硬件
支持包使万博1manbetx用TCP/IP上的SSH连接来执行命令,同时在DRIVE或Jetson平台上构建和运行生成的CUDA代码。将目标平台连接到与主机相同的网络中,或者使用以太网交叉电缆将单板直接连接到主机。有关如何设置和配置您的电路板的信息,请参阅NVIDIA文档。
属性来创建活动硬件连接对象,以与NVIDIA硬件通信开车
或杰森
函数。创建硬件活连接对象时,需要知道目标板的主机名或IP地址、用户名和密码。例如,当第一次连接到目标板时,使用命令为Jetson硬件创建一个活动对象:
Hwobj = jetson(“jetson-tx2-name”,ubuntu的,ubuntu的);
在硬件活动对象创建期间,支持包执行硬件和软件检查、IO服务器安装并收集目标的外围设备信息。万博1manbetx该信息显示在“命令窗口”中。
类似地,要为DRIVE硬件创建活动对象,使用命令:
Hwobj = drive(“drive-px2-name”,ubuntu的,ubuntu的);
在连接失败的情况下,在MATLAB命令行报告诊断错误消息。如果连接失败,最可能的原因是IP地址或主机名错误。
检查目标板GPU环境
要验证运行此示例所需的编译器和库是否已正确设置,请使用coder.checkGpuInstall
(GPU编码器)函数。
envCfg = code . gpuenvconfig (“杰森”);% NVIDIA drive硬件使用'drive'envCfg。BasicCodegen = 1;envCfg。安静= 1;envCfg。HardwareObject = hwobj;coder.checkGpuInstall (envCfg);
使用GPU编码器在目标板上生成PIL执行的CUDA代码
要运行PIL执行NVIDIA目标,为'lib'创建一个GPU代码配置对象,并将验证模式设置为'PIL'。
cfg = code . gpuconfig (“自由”);cfg。VerificationMode =“公益诉讼”;
为DRIVE或Jetson平台创建一个配置对象,并将其分配给硬件
代码配置对象的属性cfg
,使用coder.hardware
函数。使用英伟达杰森的
杰森家族的董事会和“NVIDIA驱动”
用于DRIVE板。
cfg。硬件= code . Hardware (英伟达杰森的);
若要启用代码执行分析,请设置CodeExecutionProfiling
将GPU Coder配置对象的值设置为true。
cfg。CodeExecutionProfiling = true;
加载样本雾输入图像。
foggyImg = imread(“foggyInput.png”);
要生成CUDA代码,请使用codegen
函数和通过GPU代码配置和输入的大小fog_rectification
入口点函数。代码生成器创建墨西哥人
函数命名fog_rectification_pil
用于基于pil的执行。
codegen (“配置”cfg,“fog_rectification”,“参数”, {foggyImg});
运行PIL MEX函数
要在目标板上运行生成的代码并将结果输入MATLAB,请调用fog_rectification_pil
具有所需输入的MEX功能。
defoggyImg_pil = fog_rectification_pil(foggyImg);
P1 = subplot(1,2,1);P2 = subplot(1,2,2);imshow (foggyImg“父”, p1);imshow (defoggyImg_pil“父”, p2);标题(p1,“有雾的输入图像”);标题(p2,“从硬件输出图像去雾”);
验证生成的代码
为了验证生成代码的数值准确性,将MATLAB结果与PIL执行的结果进行比较。
defoggyImg_sim = fog_rectifier (foggyImg);diffImg = defoggyImg_sim - defoggyImg_pil;流(PIL输出与模拟输出的最大差异为%f\n马克斯(diffImg (:)));
分析结果
清除PIL MEX函数后,就可以得到分析结果。
清楚(“fog_rectification_pil”);
配置报告生成器并打开分析报告。TimerTicksPerSecond
保持目标硬件时钟频率。
executionProfile = getCoderExecutionProfile (“fog_rectification”);executionProfile。TimerTicksPerSecond = 2035 * 1e6;报告(executionProfile,...“单位”,“秒”,...“ScaleFactor”,“1 e 03”,...“NumericFormat”,' % 0.3 f ');
清理
要删除示例文件并返回到原始文件夹,请调用清理
函数。
清理