处理器在循环中执行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它的轨迹由
受限于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命令窗口中。
应用程序打开选择源文件页面。选择
mandelbrot_count.m
作为入口点函数。点击下一个.在定义输入类型窗口中,输入
mandelbrot_count (500 0 (1000), 0 (1000))
并点击自动定义输入类型,然后按下一个.您可以启动检查运行时问题处理或单击下一个去生成代码的一步。
设置构建类型来
静态库
和硬件板来英伟达杰森
.下硬件面板中,输入设备地址、用户名、密码,并为单板构建文件夹。
关闭设置窗口,单击生成.该软件生成CUDA代码
mandelbrot_count
入口点函数。点击验证代码.
在命令字段中,指定调用原始MATLAB函数的测试文件。例如,
mandelbrot_test
.要启动PIL执行,请单击运行生成的代码.
GPU Coder应用:
生成一个独立库,例如,
codegen \ lib \ mandelbrot_count
.生成PIL接口代码,例如,
codegen \ lib \ mandelbrot_count \公益诉讼
.运行测试文件,用对库中生成的代码的调用替换对MATLAB函数的调用。
控件中显示来自PIL执行的消息测试输出选项卡。
请注意
在微软电脑上®窗户®系统,Windows防火墙可能会阻止一个PIL的执行。更改Windows防火墙设置以允许访问。
验证PIL执行的结果是否与原始MATLAB函数的结果相匹配。
要终止PIL执行过程,请单击停止PIL验证.或者,在测试输出选项卡,单击后面的链接终止执行.