这个例子展示了支持NVIDIA GP金宝appU的GPU编码器使GPU编码器产品能够在NVIDIA®Drive™和Jetson硬件平台上运行PIL执行。迷雾整流示例用于演示此功能。有关迷雾整流功能的更多信息,请参阅GPU代码生成雾化整流.
目标板要求
NVIDIA Jetson TX1/TX2嵌入式平台。
用于连接目标板和主机PC(如果目标板无法连接本地网络)的以太网交叉线缆。
NVIDIA CUDA工具包安装在电路板上。
对编译器和库的目标环境变量。有关编译器和库的支持版本及其设置的信息,请参阅金宝app安装和设置NVIDIA板的先决条件.
开发主机要求
用于代码生成的GPU编码器™。要获得概述和教程,请访问GPU编码器产品页面.
用于代码生成的嵌入式编码器™。有关概述和教程,请访问嵌入式编码器产品页面.
NVIDIA CUDA工具包在主机上。
主机上编译器和库的环境变量。有关编译器和库支持的版本的信息,请参见金宝app第三方产品下载188bet金宝搏.有关设置环境变量,请参见环境变量.
以下代码行在当前工作目录(主机)中创建一个文件夹,并将所有相关文件复制到此文件夹中。如果您无法在此文件夹中生成文件,请在运行此命令之前更改当前工作目录。
gpucoderdemo_setup ('gpucoderdemo_fog_rectification');
用于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');
使用coder.checkGpuInstall函数并验证运行此示例所需的编译器和库是否正确设置。
envCfg = coder.gpuEnvConfig (“杰森”);%使用NVIDIA drive硬件Envcfg.basiccodegen = 1;Envcfg.quiet = 1;envcfg.hardwareObject = hwobj;Coder.CheckGPuInstall(Envcfg);
要运行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杰森< / > '
打电话给fog_rections_pil.
MEX功能具有所需输入以在目标上运行代码并将结果获取到MATLAB中。
defoggyImg_pil = fog_rectification_pil (foggyImg);
###启动应用程序:'codegen / lib / fog_rection / pil / fog_rectization.elf'终止执行:仿真数据检查器。>终止后可用的分析报告。
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 ');
删除文件并返回原始文件夹。
清理