矩阵化检查
矩阵化检查用于对可矩阵化片段进行检查,并提供矩阵化修改建议。
简介
矩阵化检查工具包含Stencil、GEMV和FFT三个技术点的检查与优化。工具支持C/C++/Fortran源码的检查与优化,检查流程在AST(抽象语法树Abstract Syntax Tree的缩写)上进行。其中,C/C++源码使用Clang进行AST的生成,Fortran源码使用Fparser进行AST的生成,优化流程则与各计算模式强相关。三个技术点简介如下:
- Stencil计算是科学应用中的一类重要计算,被广泛应用于偏微分方程求解、高斯赛德尔方法、流体力学计算以及地球系统模拟等方面。Stencil计算描述了一种在大量时间步迭代下遍历结构化网格并按固定模式更新网格点的算法。结构化网格中的每个点根据其邻居子集进行更新的固定模式称为Stencil。
- GEMV是矩阵向量乘法(General Matrix-Vector multiplication)的缩写,是一种常用的线性代数运算,它可以被高度优化以利用现代计算机体系结构的并行性和向量化指令。在计算机科学中,GEMV通常用于矩阵乘法的一部分,即将一个矩阵与一个向量相乘。
- 快速傅里叶变换(Fast Fourier Transform),即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。这种方法的优点是计算效率非常高,可以在O(nlogn)的时间复杂度内完成计算,其中n是序列的长度。同时,它还具有良好的灵活性,可以根据需要选择不同的分解方式和计算算法。
前提条件
已成功登录鲲鹏DevKit。

- “/opt/DevKit”为工具默认安装目录,下文以此默认路径为例,请根据实际情况替换。
- 当前特性在Web界面中需要手动上传文件或压缩包,在插件工具中支持扫描本地工程。
操作步骤
- 在页面左侧,“亲和分析”下拉选项中选择“矩阵化检查”,单击
创建任务,如图1所示。
表1 矩阵化检查参数说明 参数
说明
任务名称
矩阵化检查任务名称,工具默认会自动生成任务名称,也可根据实际情况进行自定义修改。
源码文件存放路径
支持以下两种方式:
- 选择“已上传的源码”:单击填写框选择下拉框中的源码路径即可,也可以手动填写源码路径。
- 选择“上传源码”:单击“上传”按钮上传压缩包(上传过程中自动解压)或文件夹。
说明:- 支持上传tar,tar.bz,tar.bz2,tar.gz,tar.xz,tbz,tbz2,tgz,txz,zip格式的压缩包,只允许同时上传一个压缩包。源码文件压缩包小于或等于1GB,解压后小于或等于剩余磁盘空间的一半。
- 只允许同时上传一个文件夹,文件夹小于或等于剩余磁盘空间的一半。
- 手动上传软件包时,需先检查是否存在上传目录,若不存在,则需创建工具指定路径,并给devkit用户开通读写和执行权限。
编译选项
选择编译方式。可选择:
- 填写编译命令
- 上传compile_commands.json。关于如何上传JSON文件请参见生成JSON文件。
构建工具
选择构建工具。可选择:
- make
- cmake
- 单击“开始检查”,开始矩阵化检查。检查完成后,自动跳转至检查报告界面。如图2所示。单击顶部的“任务信息”进入任务信息页面可查看任务的详细信息。
- 若检查结果中存在需要修改的源码文件,则可单击“查看建议源码”进入源码修改建议页面,如图3所示。
- 支持多个用户同时创建矩阵化检查任务。
- 用户可在任务进行过程中单击关闭,取消任务。
- 用户可以单击原始源代码模块右上角的上下键,进行上下切换。
- 检查失败或检查结果为无需修改时,会产生空白报告。
父主题: 亲和分析工具