主要内容

Processor-In-The-Loop从命令行执行

使用processor-in-the-loop(公益诉讼)执行检查数值CUDA的行为®你从MATLAB生成的代码®功能。公益诉讼模拟,它要求目标连接,生成编译源代码,然后下载并运行在NVIDIA对象代码®GPU平台。公益诉讼的结果被转移到MATLAB仿真验证数值模拟的等效和代码生成的结果。

公益诉讼验证过程中的一个重要部分设计周期检查生成的代码的行为匹配设计。公益诉讼的验证需要嵌入式编码器®许可证。

请注意

当使用公益诉讼执行,确保基准测试选择在GPU编码器™设置。公益诉讼执行编译错误的基准测试结果。

请注意

GPU编码器不支持收集代码覆盖率度量在金宝appsoftware-in-the-loop(银)和processor-in-the-loop(公益诉讼)模拟。

先决条件

目标板需求

  • NVIDIA驱动®或杰森™嵌入式平台。

  • 以太网交叉电缆来连接目标板和主机PC(如果目标不能被连接到一个本地网络)。

  • NVIDIA CUDA工具包安装在董事会。

  • 环境变量的目标编译器和库。信息支持版本的编译器和库及其设置,明白了金宝app安装和设置先决条件NVIDIA董事会

开发主机需求

  • 对CUDA GPU编码器代码生成。帮忙在开始使用GPU编码器,明白了开始使用GPU编码器(GPU编码器)

  • NVIDIA CUDA工具包在主机。

  • 环境变量在主机的编译器和库。信息的支持版本的编译器和库,明白了金宝app第三方硬件(GPU编码器)。设置环境变量,看到环境变量(GPU编码器)

例子:了曼德尔勃特集合

描述

你不需要熟悉算法在完成本教程的例子。

了曼德尔勃特集合中该地区复平面组成的值z0定义的轨迹

z k + 1 = z k 2 + z 0 , k = 0 , 1 ,

保持有界k→∞。曼德尔勃特集合的整体几何图所示。这种观点没有边缘的分辨率显示丰富详细的结构的边界外。在不断的放大,一个精心设计的边界,揭示了曼德尔勃特集合展品逐步精细递归的细节。

算法

创建一个MATLAB脚本调用mandelbrot_count.m用下面的代码行。这段代码是一个基线矢量化了曼德尔勃特集合的MATLAB实现。

函数数= mandelbrot_count (maxIterations xGrid yGrid)% # codegen曼德布洛特百分比计算z0 = xGrid + 1我* yGrid;数= 1(大小(z0));%添加Kernelfun编译指示触发内核创建coder.gpu.kernelfun;z = z0;n = 0: maxIterations z z =。* z + z0;在= abs (z) < = 2;数=数+内部;结束数=日志(数);

对于本教程,选择一组限制,指定一个高度放大了曼德尔勃特集合的一部分主心形和之间的山谷p / q灯泡了。一个真正的部分(1000 x1000网格x)和虚部(y这两个极限之间创建)。曼德布洛特然后在每个迭代算法网格的位置。迭代的500足以呈现图像完整的决议。创建一个MATLAB脚本调用mandelbrot_test.m用下面的代码行。它还称mandelbrot_count功能和情节产生的曼德尔勃特集合。

maxIterations = 500;gridSize = 1000;xlim = [-0.748766713922161, -0.748766707771757];ylim = [0.123640844894862, 0.123640851045266];xlim x = linspace (xlim (1), (2), gridSize);ylim y = linspace (ylim (1), (2), gridSize);[xGrid, yGrid] = meshgrid (x, y);数= mandelbrot_count (maxIterations xGrid yGrid);图(1)显示亮度图像(x, y,数);colormap([飞机();flipud(飞机());0 0 0)); axis标题(曼德尔勃特集合的);

创建一个生活硬件连接对象

与NVIDIA硬件进行通信,您必须创建一个生活硬件连接对象使用杰森开车函数。创建一个生活硬件连接对象,提供主机名或IP地址,用户名和密码的目标。例如为杰森硬件创建活动对象:

hwobj =杰森(“jetson-board-name”,ubuntu的,ubuntu的);

的软件执行检查硬件、编译器工具和库,IO服务器安装和收集信息的外围设备连接到目标。这些信息显示在MATLAB命令窗口。

检查CUDA可用性目标……检查“nvcc”在目标系统路径…检查cuDNN库可用性目标……检查TensorRT库可用性目标……检查先决条件库完成。收集硬件信息…检查第三方库可用性目标……收集完成硬件细节。委员会名称:英伟达杰森TX2 CUDA版本:10.0 cuDNN版本:7.6 TensorRT版本:6.0 GStreamer版本:1.14.5 V4L2版本:1.14.2-1 SDL版本:1.2 OpenCV版本:以下4.4.1可用网络摄像头:MicrosoftA®LifeCam电影院(TM)可用gpu: NVIDIA Tegra X2

另外,创建生活对象驱动的硬件:

hwobj =驱动(“drive-board-name”,“英伟达”,“英伟达”);

请注意

如果有连接故障,诊断错误消息报道了MATLAB命令窗口。最可能导致一个失败的连接是错误的IP地址或主机名。

配置公益诉讼执行

创建一个GPU代码配置对象生成一个图书馆为公益诉讼和配置对象。使用coder.hardware函数创建一个配置对象的NVIDIA驱动或杰森平台,并将其分配给硬件代码配置对象的属性cfg。使用英伟达杰森的杰森董事会和“NVIDIA驱动”驱动板。

cfg = coder.gpuConfig (“自由”,“是”,真正的);cfg.GpuConfig。CompilerFlags =“——fmad = false”;cfg。VerificationMode =“公益诉讼”;cfg。GenerateReport = true;cfg。硬件= coder.hardware (英伟达杰森的);

——fmad = false国旗时传递给学校网站,指示编译器禁用浮点Multiply-Add (FMAD)优化。此选项设置,防止生成的代码,因为建筑中的数值不匹配不同的CPU和GPU。有关更多信息,请参见数值CPU和GPU之间的区别(GPU编码器)

生成代码并运行公益诉讼执行

生成CUDA图书馆和公益诉讼的界面,使用codegen命令并通过GPU代码配置对象的大小的输入mandelbrot_count入口点函数。的以及选择MATLAB运行测试文件,mandelbrot_test。测试文件使用mandelbrot_count_pil,生成的公益诉讼的接口mandelbrot_count

codegen配置cfgarg游戏{0,0 (1000),0 (1000)}mandelbrot_count以及mandelbrot_test
# # #连接配置功能“mandelbrot_count”:“英伟达杰森”代码生成成功:视图报告运行测试文件:“mandelbrot_test”与墨西哥人“mandelbrot_count_pil.mexa64”功能。# # #开始应用程序:“codegen / lib / mandelbrot_count /公益诉讼/ mandelbrot_count。精灵的终止执行:明确mandelbrot_count_pil # # #启动应用程序mandelbrot_count.elf……

该软件创建以下输出文件夹:

  • codegen \ lib \ mandelbrot_count——独立的代码mandelbrot_count

  • codegen \ lib \ mandelbrot_count \公益诉讼——公益诉讼接口代码mandelbrot_count

验证这个运行的输出匹配原始的输出mandelbrot_count.m函数。

请注意

在微软®窗户®系统,Windows防火墙可以阻止公益诉讼执行。更改Windows防火墙设置允许访问。

终止公益诉讼执行过程。

终止公益诉讼执行过程。

清晰的mandelbrot_count_pil;

另请参阅

功能

对象

相关的例子

更多关于