主要内容

代码生成报告

GPU编码器™生成一个代码生成报告,帮助您:

  • 调试和验证您的MATLAB代码生成的问题®适用于代码生成代码。

  • 视图生成CUDA®代码。

  • 跟踪MATLAB源代码和生成的CUDA代码之间。

  • 看看代码生成器决定和传播类型信息在MATLAB代码中变量和表达式。

  • 在生成的代码中识别潜在的问题。

  • 访问额外可用的报告与嵌入式编码器®

报告生成

当你启用报告生成或当出现错误,代码生成器生成的代码生成报告。控制生产和开放的代码生成报告,使用应用程序设置,codegen选项,或者配置对象的属性。

GPU编码器应用:

  • 生成一个报告,集总是创建一个报告是的

  • 如果您希望应用程序打开报告,集如果生成一个自动发布的一份报告是的

在命令行中,使用codegen选项:

  • 要生成报告,可以使用报告选择。

  • 生成并打开一个报告,使用-launchreport选择。

另外,使用配置对象的属性(coder.CodeConfig):

  • 生成一个报告,集GenerateReport真正的

  • 如果你想要codegen为你打开报告,集LaunchReport真正的

报告位置

代码生成报告命名report.mldatx。它位于html代码生成输出文件夹的子文件夹。如果你有MATLAB R2018a或以后,你可以打开report.mldatx文件通过双击它。

错误和警告

视图代码生成错误、警告和信息上的消息所有消息选项卡。突出的源代码一个错误或警告,点击消息。这是一个最佳实践来解决第一个消息,因为后续的错误和警告可以与第一个消息。

查看编译和链接的错误和警告建立日志选项卡。

文件和函数

报告列出了MATLAB源码功能和生成的文件。在MATLAB源窗格中,函数列表根据包含文件视图组织功能。根据调用结构可视化功能,使用调用树视图。

查看代码中的函数报告的窗格中,点击列表中的功能。点击打开文件,其中包含一个函数的函数。编辑所选文件在MATLAB编辑器中,单击编辑在MATLAB或在代码窗格中单击行号。

如果你启用了可追溯性的嵌入式编码和生成报告,查看源代码和生成的代码在代码中相邻窗格中,单击跟踪代码。您可以交互式地跟踪源代码和生成的代码。看到之间的交互跟踪MATLAB代码和生成的C / c++代码(嵌入式编码)

如果你想移动为独立的代码生成的文件(库或可执行文件)到另一个开发环境中,您可以把它们放进一个zip文件,点击包代码

专门的函数或类

当一个函数被调用,不同类型的输入或一个类使用不同类型的属性,代码生成器产生的专门化。在MATLAB源窗格中,编号的功能(或类)表明专门化。例如:

MATLAB

查看一个MATLAB函数代码中的窗格中,单击功能MATLAB源窗格。看到的信息类型的一个变量或表达式,暂停在变量或表达式。

在代码中窗格中,语法高亮的MATLAB源代码有助于识别MATLAB语法元素。语法高亮还有助于识别特定的代码生成的属性,如一个函数是否外在还是一个论点是恒定的。

CUDA内核

绿色的GPU旁边的标记mandelbrot_count函数表明,生成的代码有两个CPU和GPU部分。绿色的竖线表示映射到GPU的代码行。看到信息的类型变量或表达式和相应的名称GPU核函数、暂停/变量或表达式。点击它,当您选择突出显示的代码的代码变成了蓝色,你甚至可以看到的信息当你移动你的指针的选择。代码仍然选择,直到您按下Esc或选择不同的代码。

入口点函数的映射到GPU内核代码窗格中突出显示的代码部分

非本征函数

在MATLAB代码中,紫色的报告确定了一个外部函数的文本。表明函数是外在的信息窗口。

入口点函数代码中的窗格强调外在功能

常数参数

在MATLAB代码中,橙色文字表示编译时常量参数一个入口点函数或一个专门的函数。窗口的信息包括常数的值。

了解常数参数的值则可以帮助你理解生成的函数签名。它还可以帮助你看到当创建代码生成功能专门化不同常数参数值。

出口在工作区中一个变量的值,点击

生成的代码

查看生成的CUDA源或头文件代码中窗格中,单击文件文件选项卡上的生成的代码窗格。的GPU内核选项卡上的生成的代码窗格中包含的CUDA内核列表生成的代码。直接点击内核名字导航的定义相应的内核在生成的代码中。

MATLAB变量

变量选项卡提供的信息变量选择的MATLAB函数。选择一个函数,点击功能MATLAB源窗格。

表显示的变量:

  • 类、大小和复杂性

  • 定点的属性类型

这些信息可以帮助您调试错误,比如类型不匹配错误,理解代码生成器传播类型和表示数据在生成的代码。

视觉指标变量选项卡

此表描述符号,徽章,其他指标表的变量。

列在表的变量 指示器 描述
的名字 扩张器 变量元素或属性,你可以看到通过单击扩展器。
的名字 {:} 异构单元阵列(所有元素具有相同的属性)
的名字 {n} 异构单元阵列的n个元素
v > n v与一个不同的类重用、大小和复杂性。数量n识别每一个独特的重用(重用了一组独特的属性)。暂停/重命名变量时,报告强调了只有这个变量的实例共享类,大小和复杂性。
大小 :n 适应维度与n的一个上界
大小 :哦? 适应没有上限
大小 斜体 在执行期间适应可变数组的尺寸不改变大小
稀疏的前缀 稀疏阵列
复杂的前缀 复数

阵列布局指标变量选项卡

此表描述了徽章表明数组变量表中的布局。

徽章 描述

行存储阵列布局。

列为主的阵列布局。

行和列为主的布局。

看到行存储和列存储阵列布局

跟踪代码

之间你可以跟踪MATLAB源代码和生成的CUDA代码通过使用这些方法之一:

  • 交互式可视化之间的映射MATLAB代码和生成的代码。访问互动跟踪,在报告中,点击跟踪代码。的跟踪代码启用按钮只有如果你有嵌入式编码器和你启用代码生成的代码时可追溯性。看到之间的交互跟踪MATLAB代码和生成的C / c++代码(嵌入式编码)

  • 包括源代码生成的CUDA代码的注释。在注释,代码生成器生成一个标签,帮助你找到相应的MATLAB源代码。如果你有嵌入式编码器,标签是一个链接到源代码。看到跟踪CUDA代码生成与MATLAB源代码

代码的见解

代码生成器可以检测和报告问题可能发生在生成的代码。视图上的消息代码的见解选项卡。这些问题包括:

  • 潜在的差异生成的代码的行为和MATLAB代码的行为。该报告只包括潜在差异信息如果你启用潜在差异报告。看到潜在的差异报告

  • GPU代码生成诊断报告,该报告将在代码生成问题,提出可能的解决方案,从而最大限度地提高性能。金宝搏官方网站

  • 潜在的存储问题。看到代码行阵列布局设计

额外的报告

总结选项卡可以链接到这些额外的报告:

报告的局限性

  • 这份报告并没有对于展开循环显示全部信息。它显示任意数据类型的一个迭代。

  • 这份报告并没有显示死代码的信息。

相关的话题