文件

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

这个例子展示了支持NVIDIA GP金宝appU的GPU编码器使GPU编码器产品能够在NVIDIA®Drive™和Jetson硬件平台上运行PIL执行。迷雾整流示例用于演示此功能。有关迷雾整流功能的更多信息,请参阅GPU代码生成雾化整流

先决条件

目标板要求

  • NVIDIA Jetson TX1/TX2嵌入式平台。

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

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

  • 对编译器和库的目标环境变量。有关编译器和库的支持版本及其设置的信息,请参阅金宝app安装和设置NVIDIA板的先决条件

开发主机要求

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

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

gpucoderdemo_setup ('gpucoderdemo_fog_rectification');

连接到NVIDIA硬件

用于NVIDIA GPU的G金宝appPU编码器支持包使用TCP / IP上的SSH连接,同时构建并运行驱动器或Jetson平台的生成的CUDA代码。因此,您必须将目标平台连接到与主计算机相同的网络,或者使用以太网交叉电缆将电路板直接连接到主机。有关如何设置和配置电路板的有关如何设置的NVIDIA文档。

要与NVIDIA硬件通信,必须使用驾驶杰森函数。您必须知道目标板的主机名或IP地址、用户名和密码,才能创建实时硬件连接对象。例如,使用以下命令为Jetson硬件创建活动对象:

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

SimIllarly,使用以下命令为驱动器硬件创建实时对象,

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

验证GPU环境

使用coder.checkGpuInstall函数并验证运行此示例所需的编译器和库是否正确设置。

envCfg = coder.gpuEnvConfig (“杰森”);%使用NVIDIA drive硬件Envcf​​g.basiccodegen = 1;Envcf​​g.quiet = 1;envcfg.hardwareObject = hwobj;Coder.CheckGPuInstall(Envcf​​g);

使用GPU编码器生成针对目标的PIL执行的CUDA代码

要运行PIL执行NVIDIA目标,请为“lib”创建GPU代码配置对象并将验证模式设置为“PIL”。

cfg = coder.gpuconfig('lib');cfg。VerificationMode =“公益诉讼”;

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

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

要启用代码执行分析,请设置CodeExecutionProfiling将GPU编码器配置对象的值设置为true。

cfg.codeexecutionProfIning = True;

加载雾蒙蒙的输入图像。

foggyimg = imread(“foggyInput.png”);

要生成CUDA代码,使用Codegen.功能并通过GPU代码配置以及输入的大小fog_rectification入口点函数。它创建一个墨西哥人功能命名fog_rections_pil.对于基于Pil的执行。

Codegen(“配置”,cfg,'fog_rection''-args',{foggyimg});
###函数' fog_整流'的连通性配置:' NVIDIA杰森< / > '

运行PIL MEX功能

打电话给fog_rections_pil.MEX功能具有所需输入以在目标上运行代码并将结果获取到MATLAB中。

defoggyImg_pil = fog_rectification_pil (foggyImg);
p1 =子图(1,2,1);p2 =子图(1,2,2);imshow(foggyimg,“父”,p1);imshow(defoggyimg_pil,“父”,p2);标题(P1,“模模糊糊”输入图像);标题(p2,'去雾输出图像从硬件');

验证生成的代码

为了验证生成代码的数值准确性,将MATLAB的结果与PIL执行的结果进行比较。

defoggyimg_sim = fog_rectification(foggyimg);Diffimg = defoggyimg_sim  -  defoggyimg_pil;FPRINTF('PIL输出和仿真输出之间的最大差异为%F',max(diffimg(:)));
PIL output和Simulation output的最大差值是0.000000

分析结果

在清除PIL MEX功能后,profiling结果是可用的。

清除('fog_rections_pil');

配置报表生成器并打开分析报表timertickspersecond.保持目标硬件时钟频率。

executionProfile = getCoderExecutionProfile ('fog_rection');executionProfile。TimerTicksPerSecond = 2035 * 1e6;报告(executionProfile,......“单位”'秒'......'比例因子''1E-03'......“NumericFormat”' % 0.3 f ');

清理

删除文件并返回原始文件夹。

清理