主要内容

使用GPU编码器在NVIDIA目标上的处理器在循环执行

这个例子展示了MATLAB®Coder™支持包NVIDIA Jetson和NVIDI金宝appA DRIVE平台如何使GPU Coder™产品在NVIDIA®DRIVE™和Jetson硬件平台上运行PIL执行。本例使用GPU雾校正代码生成来自GPU Coder的示例演示PIL执行。有关更多信息,请参见雾整改(GPU编码器)

先决条件

目标板要求

  • NVIDIA Jetson或DRIVE嵌入式平台。

  • 用于连接目标板和主机PC的以太网交叉网线(如果目标板无法连接到本地网络)。

  • NVIDIA CUDA工具包安装在板上。

  • 目标上用于编译器和库的环境变量。有关更多信息,请参见NVIDIA板的安装和设置先决条件

开发主机要求

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

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

nvidiademo_setup (“gpucoderdemo_fog_rectification”);

连接到NVIDIA硬件

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

属性来创建活动硬件连接对象,以与NVIDIA硬件通信开车杰森函数。创建硬件活连接对象时,需要知道目标板的主机名或IP地址、用户名和密码。例如,当第一次连接到目标板时,使用命令为Jetson硬件创建一个活动对象:

Hwobj = jetson(“jetson-tx2-name”ubuntu的ubuntu的);

在硬件活动对象创建期间,支持包执行硬件和软件检查、IO服务器安装并收集目标的外围设备信息。金宝app该信息显示在“命令窗口”中。

类似地,要为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 ');

清理

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

清理