主要内容

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

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

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

请注意

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

先决条件

目标板要求

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

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

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

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

开发主机要求

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

  • 主机上的NVIDIA CUDA工具包。

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

示例:Mandelbrot集合

描述

要完成本教程,您不必熟悉示例中的算法。

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

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

保持在k→∞.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;Inside = abs(z)<=2;计数=计数+内部;结束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编码器应用程序,请在MATLAB工具条上的应用程序选项卡,在代码生成,单击GPU Coder应用程序图标。你也可以通过打字打开应用程序gpucoder(GPU编码器)在MATLAB命令窗口中。

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

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

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

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

  5. 硬件面板中,输入单板的设备地址、用户名、密码和build文件夹。

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

  7. 点击验证代码

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

  9. 单击,开始PIL执行运行生成的代码

    GPU编码器应用程序:

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

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

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

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

    请注意

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

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

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

另请参阅

功能

对象

相关的例子

更多关于