Hawkeye鹰眼
工具介绍
在精度调优过程中有着大量的重复插桩动作,hawkeye的推出提高了分析效率。hawkeye是基于GDB(GNU Debugger,汇编语言调试工具)的调试功能开发的,能够自动对函数插桩,递归遍历函数调用,自动记录存在计算差异函数的分析工具。鹰眼下载地址:https://gitee.com/openeuler/hpcrunner/tree/master/software/utils/hawkeye
图1 hawkeye工具流程


约束条件
本工具用到GDB调试功能,且依赖二进制中的符号表。需将分析应用编译选项的优化等级改至-O0,并且增加-g选项。
本工具只支持单线程调试,不支持openMP。
使用指导
下面以wrf-3.4.1应用为例:
- 修改编译选项,将优化等级更改为-O0,增加-g,删除-fopenmp、-qopenmp。
- 将wrf应用链接到print_md5.o静态库。该静态库包含读写输入值和计算输出MD5的功能。建议将该静态库和wrf.exe放在同目录,也可以自行指定目录。
修改main/Makefile文件,
修改前: $(LD) -o wrf.exe $(LDFLAGS) -fopenmp wrf.o ../main/module_wrf_top.o $(LIBWRFLIB) $(LIB)
修改后: $(LD) -o wrf.exe $(LDFLAGS) -lcrypto print_md5.o wrf.o ../main/module_wrf_top.o $ (LIBWRFLIB) $(LIB)
- 将wrf二进制文件算例和hawkeye工具放在同一目录。指定应用名称和主函数文件路径运行hawkeye工具。
./hawkeye.sh wrf.exe wrf-3.4.1/dyn_em/solve_em.f90
图2 hawkeye工具分析结果
分析结果会显示出鲲鹏和x86平台存在计算差异的函数及其路径,为方便开发人员定位,还显示出函数的调用堆栈。图3所示的是保存各个函数具体的MD5值文件的树状图。在图中,开发人员可以查看具体的MD5打印文件,从而进一步分析引起差异的原因。
父主题: 精度调优工具