Ubuntu下Fortran性能测试工具推荐
一 基础计时与微基准
program main
implicit none
real :: t0, t1
call cpu_time(t0)
! ... 被测代码 ...
call cpu_time(t1)
print '("Elapsed: ", F0.4, " s")', t1 - t0
end 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 等 | 轻量、低开销,适合定位系统层面瓶颈 |
四 快速上手流程
五 实践建议