You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用gprof分析Fortran代码仅生成flat profile无调用图是什么原因

可能导致gprof无调用图数据的原因
  • 编译器选项冲突:AOCC的mpifort封装默认可能开启了会破坏调用栈帧的优化选项,比如-fomit-frame-pointer、高优化等级-O3及以上,部分优化会抹除函数调用栈的回溯信息,导致gprof无法采集调用关系。建议在保留-pg的前提下,将优化等级降到-O2或-O0,同时显式添加-fno-omit-frame-pointer选项重新编译链接。
  • 编译阶段-pg覆盖不完整:如果项目包含第三方依赖库、静态链接的外部模块,或者有部分源文件编译时漏加-pg,仅主程序和部分文件加了选项,缺失-pg的模块的调用关系无法被gprof采集,会导致调用图不完整甚至完全缺失。需要确认所有参与编译、链接的源文件和依赖库编译时都添加了-pg参数。
  • AOCC编译器与gprof的兼容性问题:AOCC是基于LLVM的编译器,部分版本的LLVM对gprof调用图采集的支持存在缺陷,仅实现了flat profile的采样逻辑,未兼容调用图所需的mcount调用插桩逻辑。可以尝试替换为GNU的gfortran+mpifort编译链验证,如果使用GNU编译链后能正常生成调用图,即可判定是AOCC的兼容性问题,这种情况建议换用AOCC配套的性能分析工具amdprof或者通用的perf工具做调用图分析。
  • 程序运行采样不足:如果程序运行时间过短,或者大部分执行逻辑都在没有插桩的系统调用、MPI底层通信函数中,采样次数不足也可能导致调用图数据为空。可以延长程序运行时间,或者确认程序业务逻辑部分的CPU占比不低于10%再重新运行采集数据。
  • 链接阶段-pg被过滤:部分MPI封装器会覆盖传入的链接参数,可以添加-v参数打印编译链接的完整日志,确认-pg选项在最终的链接命令中确实存在,没有被封装器过滤掉。

内容的提问来源于stack exchange,提问作者ssm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:36:05