为生成的代码生成GPU代码度量报告MATLAB代码
GPU静态代码度量报告包含了生成CUDA的静态分析结果®代码,包括生成的CUDA内核、线程和块尺寸、内存使用情况和其他统计信息。要生成静态代码度量报告,必须使用GPU Coder™生成独立的CUDA代码,并生成代码生成报告。看到代码生成报告。
默认情况下,静态代码指标分析不会在代码生成时运行。相反,如果您想运行分析并查看结果,请单击GPU代码度量在总结代码生成报告的TAB。
示例GPU代码度量报告
这个例子运行GPU静态代码度量分析,并检查静态代码度量报告。
创建一个MATLAB®函数mandelbrot_count.m
用以下代码行。这段代码是Mandelbrot集的向量化MATLAB实现。对每一个点(xGrid yGrid)
在the网格中,它计算迭代索引数
在这个点,由方程定义的轨迹达到的距离2
从原点。然后返回的自然对数数
,用于生成Mandelbrot集的彩色编码图。
函数数= mandelbrot_count (maxIterations xGrid yGrid)%添加kernelfun pragma触发内核创建coder.gpu.kernelfun;曼德布洛特百分比计算z0 = xGrid + 1i*yGrid;数= 1(大小(z0));z = z0;为n = 0:maxIterations z = z.*z + z0;在= abs (z) < = 2;Count = Count + inside;结束数=日志(数);
用以下代码行创建示例数据。代码生成一个1000 x 1000网格的实部件(x)和虚部(y)规定的数量之间xlim
和ylim
。
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);
通过使用独立代码生成(静态库、动态链接库或可执行程序)的配置对象,实现代码生成报告的生成。
cfg = coder.gpuConfig (“dll”);cfg。GenerateReport = true;cfg。MATLABSourceComments = true;cfg.GpuConfig.CompilerFlags =“——fmad = false”;
请注意
的——fmad = false
标志传递给学校网站
,指示编译器禁用浮点乘法(FMAD)优化。设置此选项是为了防止由于CPU和GPU的架构差异而导致生成代码中的数值不匹配。欲了解更多信息,请参见CPU和GPU之间的数值差异。
另外,使用codegen
报告
选择。
通过使用codegen
。参数提供示例输入,指定输入参数的类型arg游戏
选择。参数指定配置对象配置
选择。
codegen配置cfgarg游戏{maxIterations, xGrid, yGrid}mandelbrot_count
打开代码生成报告,点击查看报告。
运行静态代码度量分析并查看代码度量报告,在总结代码生成报告的TAB,单击GPU代码度量。
探索代码度量报告
要查看生成CUDA内核的信息,请单击CUDA内核。
内核的名字包含生成的CUDA内核的列表。默认情况下,GPU Coder以入口点函数的名称作为内核名称的前缀。
螺纹尺寸是数组的形式吗
(Tx,泰,Tz)
它标识了块中线程的数量x
,y
,z
。块尺寸是数组的形式吗
(Bx, 1)
是否是沿维度定义网格中块数的数组x
和y
(z
不习惯)。共享内存的大小和不变的记忆列提供了生成代码中共享和恒定内存空间使用情况的指标。
最低BlocksPerSM是每个流多处理器的最小块数,并指示用于启动内核的块数。
要从报告导航到生成的内核代码,请单击内核名称。
要查看在GPU设备上分配了内存的变量,请转到CUDA Malloc部分。
的信息
cudaMemCpy
在生成的代码中调用,单击CUDA Memcpy。
限制
如果你有嵌入式编码器®产品,代码配置对象包含
GenerateCodeMetricsReport
属性,以启用在编译时生成静态度量报告。GPU Coder不支持此设置,在代码生成过程中不起作用。
另请参阅
codegen
|coder.gpuConfig
|编码器。代码Config
|编码器。EmbeddedCodeConfig