---
title: 计算精度分析功能说明
description: "计算精度分析 用于定位x86和鲲鹏指令引起的Fortran、C/C++语言精度差异问题。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/development/affinityanalyzer/KunpengDevKitCli_0099.html
sourcePath: /source/zh/kunpengdevps/development/affinityanalyzer/KunpengDevKitCli_0099.html
indexId: bfba20cd122c3484da2f9e0d82824c0ac337f2b57bc09f4480fcbc96e446c81d79
---
# 计算精度分析功能说明

计算精度分析 用于定位x86和鲲鹏指令引起的Fortran、C/C++语言精度差异问题。

#### 命令功能

定位x86和鲲鹏指令引起的Fortran、C/C++语言精度差异问题。

计算精度分析可识别应用中使用的基础运算数学库函数。如果应用中使用基础运算数学库函数但未链接到鲲鹏基础运算数学库，将会给出建议使用鲲鹏基础运算数学库，支持的基础运算数学库函数可参见鲲鹏基础运算数学库(https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0011.html)。


#### 命令格式

编译 插桩 ：

```
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]
```


日志差异分析：

```
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]
```


使用计算精度分析工具，需先在不同平台（鲲鹏、x86）上执行编译插桩操作，执行完成后再进行日志差异分析操作。


#### 参数说明


**表1 编译插桩模式参数说明**

| 参数 | 参数选项 | 参数说明 |
| --- | --- | --- |
| \-h/\-\-help | \- | 可选参数，获取帮助信息。 |
| \-instrument/\-\-instrument | \- | 必选参数，指定编译插桩模式。 |
| \-c/\-\-commands | \- | 必选参数，源码的构建命令，若存在多个构建命令需使用英文分号分隔并用英文单引号或双引号包裹，命令中如有空格，也需要用英文单引号或双引号包裹。 例如："make all"或"cd /home/test;make"。 说明： 不支持直接执行cmake命令，需预先执行。 命令行工具源码构建命令不支持设置变量和export环境变量。 例如："CFLAGS='\-O0 \-g';make"或"export CFLAGS='\-O0 \-g';make"。 |
| \-p/\-\-project | \- | 必选参数，项目源码的绝对路径。 例如：/home/test/project1/或/home/project2/。 |
| \-e/\-\-entry | \- | 必选参数，指定插桩入口文件和对应的函数。入口文件需输入其在项目路径下的相对路径（\-p/\-\-project指定），文件实际参与编译，不能为预处理前的源文件。函数为指定Fortran文件中存在的Main Program、Function或Subroutine。 说明： 每个文件和对应的函数需要用英文冒号“:”分隔。 指定单个文件的单个函数。 “\-e” 文件名:函数名（例如：\-e demo.f90:main） 指定单个文件的多个函数，多个函数需要用英文逗号“,”分隔。 “\-e” 文件名:函数名1,函数名2（例如：\-e demo.f90:main,func） 指定多个文件。 用多个“\-e”参数分别指定每个文件和函数名（例如：\-e demo.f90:main \-e test.f90:func） |
| \-v/\-\-variable | \- | 可选参数，指定参数插桩模式，用于指定特定的变量。在指定该参数时插桩深度会强制设置为0。 |
| \-d/\-\-depth | \- | 可选参数，从入口函数向下连续插桩的深度，默认为0，取值范围为0至99。 |
| \-L/\-\-loops | \- | 可选参数，指定进行循环内插桩。在此选项下，插桩后运行可执行文件生成的精度日志文件大小会增加，请合理安排插桩入口（入口文件、入口函数）和深度。 |
| \-D/\-\-database | \- | 可选参数，编译数据库的路径，指定后会进行增量编译。编译数据库文件dev\_compile\_commands.json是首次使用计算精度分析工具插桩生成的。 |
| \-b/\-\-black\-list | \- | 可选参数，指定不参与插桩的文件，需为文件的绝对路径。不能包含\-e参数所指定的文件。 例如："/home/test/demo1.f90;/home/test/demo2.f90" |
| \-l/\-\-log\-level | 0/1/2/3 | 可选参数，设置日志级别，默认为1。 0：日志级别为DEBUG。 1：日志级别为INFO。 2：日志级别为WARNING。 3：日志级别为ERROR。 |
| \-\-set\-timeout | \- | 可选参数，任务超时时间，单位为分钟，若执行时间超过超时时间则退出执行。默认无超时时间，任务将持续执行直到结束。 |


**表2 日志差异分析模式参数说明**

| 参数 | 参数选项 | 参数说明 |
| --- | --- | --- |
| \-h/\-\-help | \- | 可选参数，获取帮助信息。 |
| \-analysis/\-\-analysis | \- | 必选参数，指定日志差异分析模式。 |
| \-i/\-\-input | \- | 必选参数，指定日志文件或日志文件目录所在路径，输入顺序为鲲鹏日志、x86日志。 例如：输入文件"/home/kunpeng.log;/home/x86.log"或路径"/home/kunpeng/;/home/x86/"。 |
| \-o/\-\-output | \- | 可选参数，指定分析结果文件存放的目录，默认为当前目录。 |
| \-l/\-\-log\-level | 0/1/2/3 | 可选参数，设置日志级别，默认为1。 0：日志级别为DEBUG。 1：日志级别为INFO。 2：日志级别为WARNING。 3：日志级别为ERROR。 |
| \-\-set\-timeout | \- | 可选参数，任务超时时间，单位为分钟，若执行时间超过超时时间则退出执行。默认无超时时间，任务将持续执行直到结束。 |
