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