Ubuntu下Fortran性能测试工具推荐

一 基础计时与微基准
program mainimplicit nonereal :: t0, t1call cpu_time(t0)! ... 被测代码 ...call cpu_time(t1)print '("Elapsed: ", F0.4, " s")', t1 - t0end program编译运行:gfortran -O3 -o bench main.f90./bench二 编译器与数值库优化
三 常用性能分析工具对比与用法
| 工具 | 作用与适用 | 关键用法 | 备注 |
|---|---|---|---|
| gprof | 函数级 CPU 时间剖析(采样/插桩) | 编译加 -pg;运行生成 gmon.out;用 gprof 查看 | 对 I/O 与系统调用不敏感,适合粗粒度热点定位 |
| perf | Linux 内核级采样剖析 | 安装 linux-tools-common linux-tools-generic;perf record -g ./a.out;perf report | 开销低、调用栈清晰,适合热点与调用路径分析 |
| Valgrind/Callgrind | 指令级模拟与缓存/分支剖析 | valgrind --tool=callgrind ./a.out;用 callgrind_annotate 或 kcachegrind 查看 | 精度高、开销大,适合小数据集或算法级瓶颈 |
| Valgrind/Massif | 堆内存分配剖析 | valgrind --tool=massif ./a.out;ms_print massif.out.* | 定位内存分配热点与峰值占用 |
| htop | 交互式进程/线程监控 | sudo apt install htop;htop | 快速查看 CPU/内存占用与线程数 |
| Omnitrace | 并行/异构应用的全栈剖析与追踪 | 支持 Fortran/C/C++/HIP/OpenCL/Python;提供 Web 可视化 | 适合 MPI/Kokkos 等并行程序,功能强但配置相对复杂 |
| eBPF/bpftrace/bcc | 系统级动态追踪(内核/用户态事件) | 编写脚本监控系统调用、调度、I/O 等 | 轻量、低开销,适合定位系统层面瓶颈 |
四 快速上手流程
五 实践建议