主要内容

处理器在循环中执行GPU编码器应用程序

使用循环中处理器(PIL)执行来检查CUDA的数值行为®从MATLAB中生成的代码®功能。一个PIL模拟,它需要目标连接,编译生成的源代码,然后在NVIDIA上下载并运行目标代码®GPU平台。将PIL仿真结果转移到MATLAB中,验证仿真结果与代码生成结果的数值等价性。

PIL验证过程是设计周期的一个关键部分,它检查生成代码的行为是否与设计相匹配。PIL验证需要一个嵌入式编码器®许可证。

请注意

当使用PIL执行时,确保基准测试选项在GPU Coder™设置是.使用基准测试执行PIL会导致编译错误。

先决条件

目标董事会要求

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

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

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

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

开发主机要求

  • 用于CUDA代码生成的GPU Coder。有关如何开始使用GPU Coder的帮助,请参见开始使用GPU Coder(GPU编码器)

  • 主机上的NVIDIA CUDA工具包。

  • 主机上用于编译器和库的环境变量。有关编译器和库的支持版本的信息,请参见第三方硬件(GPU编码器).有关设置环境变量,请参见环境变量(GPU编码器)

示例:Mandelbrot集合

描述

您不需要熟悉示例中的算法就可以完成本教程。

曼德尔布罗特集是复平面上由这些值组成的区域z0它的轨迹由

z k + 1 z k 2 + z 0 k 0 1 ...

受限于k→∞.Mandelbrot集合的整体几何结构如图所示。这个视图没有显示集合边界外丰富的细节结构的分辨率。随着放大倍数的增加,Mandelbrot集合显示出一个复杂的边界,它显示出越来越细的递归细节。

算法

创建一个名为mandelbrot_count.m使用以下代码行。这段代码是Mandelbrot集合的基线向量化MATLAB实现。

函数count = mandelbrot_count(maxIterations, xGrid, yGrid)% # codegen% mandelbrot计算z0 = xGrid + 1i*yGrid;Count = ones(size(z0));添加Kernelfun pragma来触发内核创建coder.gpu.kernelfun;Z = z0;n = 0:maxIterations z = z.*z + z0;内= abs(z)<=2;Count = Count + inside;结束Count = log(Count);

对于本教程,选择一组限制,指定Mandelbrot集合中位于主心线和心线之间的山谷中的高度缩放部分p / q球茎向左。实零件的1000x1000网格(x)和虚部(y)是在这两个限制之间创建的。然后在每个网格位置迭代Mandelbrot算法。迭代次数为500就足以以全分辨率渲染图像。创建一个名为mandelbrot_test.m使用以下代码行。它还调用mandelbrot_count函数,并绘制得到的Mandelbrot集。

maxIterations = 500;gridSize = 1000;Xlim = [-0.748766713922161, -0.748766707771757];Ylim = [0.123640844894862, 0.123640851045266];x = linspace(xlim(1), xlim(2), gridSize);y = linspace(ylim(1), ylim(2), gridSize);[xGrid,yGrid] = meshgrid(x, y);count = mandelbrot_count(maxIterations, xGrid, yGrid);图(1)imagesc(x, y, count);Colormap ([jet();flipud(jet());0 0 0]); axis标题(曼德尔勃特集合的);

GPU编码器应用程序

打开GPU Coder应用程序,在MATLAB工具条上,在应用程序选项卡,在代码生成,单击“GPU Coder”应用图标。你也可以通过输入打开应用程序gpucoder(GPU编码器)在MATLAB命令窗口中。

  1. 应用程序打开选择源文件页面。选择mandelbrot_count.m作为入口点函数。点击下一个

  2. 定义输入类型窗口中,输入mandelbrot_count (500 0 (1000), 0 (1000))并点击自动定义输入类型,然后按下一个

  3. 您可以启动检查运行时问题处理或单击下一个生成代码的一步。

  4. 设置构建类型静态库硬件板英伟达杰森

  5. 硬件面板中,输入设备地址、用户名、密码,并为单板构建文件夹。

  6. 关闭设置窗口,单击生成.该软件生成CUDA代码mandelbrot_count入口点函数。

  7. 点击验证代码

  8. 在命令字段中,指定调用原始MATLAB函数的测试文件。例如,mandelbrot_test

  9. 要启动PIL执行,请单击运行生成的代码

    GPU Coder应用:

    • 生成一个独立库,例如,codegen \ lib \ mandelbrot_count

    • 生成PIL接口代码,例如,codegen \ lib \ mandelbrot_count \公益诉讼

    • 运行测试文件,用对库中生成的代码的调用替换对MATLAB函数的调用。

    • 控件中显示来自PIL执行的消息测试输出选项卡。

    请注意

    在微软电脑上®窗户®系统,Windows防火墙可能会阻止一个PIL的执行。更改Windows防火墙设置以允许访问。

  10. 验证PIL执行的结果是否与原始MATLAB函数的结果相匹配。

  11. 要终止PIL执行过程,请单击停止PIL验证.或者,在测试输出选项卡,单击后面的链接终止执行

另请参阅

功能

对象

相关的例子

更多关于

Baidu
map