亲和分析命令行
亲和分析工具属于鲲鹏DevKit的扩展工具之一,支持鲲鹏920平台软件代码质量检查,提升代码质量、优化访存性能,提供VS Code插件、Web、命令行等多种使用形态,其中命令行工具支持以下功能:
- 64位运行模式检查:使用命令通过终端工具进行运行模式检查。
- 字节对齐检查:检查源码中结构体变量的字节对齐情况。
- BC文件生成:通过扫描源码文件生成对应的BC文件。
- 内存一致性检查:检查源码中存在的内存一致性问题。
- 向量化检查:对可向量化片段进行检查。
- 矩阵化检查:对可矩阵化片段进行检查。
- 构建亲和:对构建亲和进行检查。
- 缓存行对齐检查:对C/C++源码中结构体变量进行128字节对齐检查。
- 计算精度分析:用于定位x86和鲲鹏指令引起的Fortran、C/C++语言精度差异问题。
用户可在CI/CD流水线中集成亲和分析工具命令行,实现鲲鹏亲和代码的优化建议。
亲和分析命令行详细操作步骤请参见《Kunpeng DevKit 用户指南(命令行)》中的亲和分析。
64位运行模式检查
64位运行模式检查就是将GCC4.8.5~GCC10.3.0版本原32位的应用迁移到64位平台上,进行迁移检查并给出修改建议。
命令格式:
devkit advisor run-mode [-h | --help] {-i INPUT_PATH | --input INPUT_PATH} {-c COMMAND | --command COMMAND} [-o OUTPUT_PATH | --output OUTPUT_PATH] [-l {0,1,2,3} | --log-level {0,1,2,3}] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [--set-timeout TIMEOUT]
字节对齐检查
字节对齐检查就是在需要考虑字节对齐时,检查源码中结构体类型变量的字节对齐情况,提升内存访问效率。
命令格式:
devkit advisor addr-align [-h | --help] {-i INPUT_PATH | --input INPUT_PATH} {-c COMMAND | --cmd COMMAND} [-o OUTPUT_PATH | --output OUTPUT_PATH] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT]
BC文件生成
BC文件用于内存一致性检查和向量化检查,BC文件生成,简化了BC文件生成过程。
命令功能:
devkit advisor bc-gen [-h | --help] {-c COMMAND | --command COMMAND} [-o OUTPUT_PATH | --output OUTPUT_PATH] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT] [-t THREADS | --thread THREADS]
内存一致性检查
内存一致性检查就是检查源码迁移在鲲鹏平台运行时可能存在的内存一致性问题,并提供插入内存屏障的建议。
命令功能:
devkit advisor mm-check [-h | --help] {-i INPUT_PATH | --input INPUT_PATH}{-f BC_PATH | --bc-file BC_PATH} [--autofix {true,false}] [--autofix-dir AUTOFIX_OUTPUT_PATH] [-o OUTPUT_PATH | --output OUTPUT_PATH] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT]
向量化检查
向量化检查功能用于对可向量化片段进行检查,并提供向量化修改建议,更好地发挥芯片性能。
命令格式:
devkit advisor vec-check [-h | --help] {-i INPUT_PATH | --input INPUT_PATH} {-f BC_PATH| --bc-file BC_PATH} {-c COMMAND | --cmd COMMAND} [-p {clang,gcc} | --compiler {clang,gcc}][-o OUTPUT_PATH | --output OUTPUT_PATH] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}][--set-timeout TIMEOUT][--sve-enable {true,false}]
矩阵化检查
矩阵化检查功能用于对可矩阵化片段进行检查,并提供矩阵化修改建议,更好地发挥芯片性能。
命令功能:
devkit advisor matrix-check [-h | --help] {-i INPUT_PATH | --input INPUT_PATH} [-s scan_file_path | --scan-dir scan_file_path] [(-b {make,cmake} | --build-tool {make,cmake}) & (-c COMMAND | --cmd COMMAND)] | [-j COMPILE_JSON_PATH | --compile-command-json COMPILE_JSON_PATH] [-o OUTPUT_PATH | --output OUTPUT_PATH] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}] {-p {sme,domain} | --optimization {sme,domain}} [-m {compute,memory_access,communication} | --module {compute,memory_access,communication}] [--set-timeout TIMEOUT]
构建亲和
构建亲和功能用于分析makefile、CMakeLists.txt中可以替换鲲鹏加速库的内容,并提供替换建议和功能修复。
命令功能:
devkit advisor affi-check [-h | --help] {-i INPUT_PATH | --input INPUT_PATH} {-c COMMAND | --cmd COMMAND} [-o OUTPUT_PATH | --output OUTPUT_PATH] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT]
缓存行对齐检查
缓存行对齐检查是对C/C++源码中结构体变量进行128字节对齐检查,提升访存性能。
命令功能:
devkit advisor cacheline [-h | --help] {-i INPUT_PATH | --input INPUT_PATH} [-o OUTPUT_PATH | --output OUTPUT_PATH] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT]
计算精度分析
计算精度分析用于定位x86和鲲鹏指令引起的Fortran、C/C++语言精度差异问题。
编译插桩命令功能:
1 | devkit advisor precision [-h | --help] {-instrument | --instrument} {-c COMMAND COMMANDS | --commands COMMANDS} {-p PROJECT | --project PROJECT} {-e ENTRY | --entry ENTRY} [-v VARIABLE | --variable VARIABLE] [-d DEPTH | --depth DEPTH] [-L | --loops] [-D DATABASE| --database DATABASE] [-b BLACK_LIST | --black-list BLACK_LIST] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT] |
日志差异分析命令功能:
1 | devkit advisor precision [-h | --help] {-analysis | --analysis} {-i INPUT_LOG | --input INPUT_LOG} [-o OUTPUT_PATH | --output OUTPUT_PATH] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT] |
父主题: 门禁检查