中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

DBI玄武

工具介绍

DBI玄武是一款动态精度分析工具,可以针对应用的运行进行汇编指令层面的插桩,用于自动化定位HPC精度问题。其关键特性如下:

  • 毕昇编译器支持生成函数参数列表,并由人工删改部分参数后,获得最终的函数参数列表。
  • DBI工具自动读取函数参数列表,并在应用运行时对函数的入口和出口进行自动插桩,无需重新编译即可定位精度差异的来源。

约束条件

源代码可以在x86平台和鲲鹏平台编译并成功运行。

使用指导:

  1. 利用编译器生成函数参数列表,或者人工编写函数参数列表
  2. 人工调整函数参数列表
    • 删除需要被排除的函数参数(例如随机数,时间等参数)
    • 部分编译器无法建立映射关系的指针长度,需要人工指定
  3. 分别在x86与ARM的机器上通过精度调优工具运行程序,获取输出
  4. 对比两种平台的输出,发现某个函数存在异常点
  5. 修改函数参数列表,仅保留异常函数,并将异常函数的所有函数参数wrap属性设置为false。
  6. 这样会将该函数所有的参数的原始值打印出来,可以比较具体是哪个值出现问题

配置文件关键字汇总:

关键字

含义

是否可选

默认值

arg_idx

参数索引

必选

arg_name

参数名

可选

默认为arg#arg_idx

ele_size

元素大小(bits)

可选

默认为8bits,即只检查1byte

is_ptr

是否指针

可选

默认为true

ele_nums

元素个数

可选

默认为1,即只检查一个元素

has_ret

是否有返回值

可选

默认为false,即不检查返回值

ptr_level

指针级别

可选

默认为1,即只做一级访存

md5_level

参数输出形式

可选

0:所有参数全部输出原始值

1:每个参数生成一个MD5值并输出

2:每个函数的所有参数共同生成一个MD5值并输出

默认为false,即不打印,只作为生成MD5的一个值

is_struct

是否结构体

可选

默认为false,即不是结构体

struct_type

结构体类型

可选

默认为""

check_at_ret

是否在函数返回时检查该参数(必须是指针)

可选

默认为true,即在函数返回时检查该参数

  • 对于一级指针,只检查数据是否一样,不检查数据的地址是否一样。同样地,对于高级指针,只检查最终的数据是否一样,不检查各级地址是否一样。
  • Fortran语言中,所有的函数参数实际上都是以地址方式传入的,所以务必设置“is_ptr”= true
  • 如果需要忽略某个函数,可采用以下两种方式:
    • 直接不填写该参数的相关信息
    • 设置该参数的“ele_size”= 0
  • 结构体形式的参数将在下一个版本中支持。
  • 即使由于一些因素导致某函数的所有参数都无需检查,仍建议保留该函数名,以便于构建完整函数调用栈,从而定位精度差异点。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词