以下示例从实验生成一个类似 gprof 的列表。输出是一个名为 er_print.out 的文件,该文件列出前 100 个函数,后跟调用者-被调用者数据(按每个函数的归属用户时间排序)。
er_print -outfile er_print.out -metrics e.%user \ -sort e.user -limit 100 -functions -cmetrics a.user \ -csort a.user -callers-callees test.1.er |
也可以将此示例简化为以下独立的命令。但是请记住,在大型实验或应用程序中对 er_print 的每次调用可能需要花费很长时间:
er_print -metrics e.%user -sort e.user \ -limit 100 -functions test.1.er |
er_print -cmetrics a.%user -csort a.user \ -callers-callees test.1.er |
此示例总结了在函数中是如何使用时间的。
er_print -functions test.*.er |
此示例显示调用者-被调用者关系。
er_print -callers-callees test.*.er |
此示例显示哪些源代码行是常用的。源代码行信息假设代码已使用 -g 进行编译和链接。将尾随下划线附加到 Fortran 函数和例程的函数名称。函数名称后的 1 用于区分 myfunction 的多个实例。
er_print -source myfunction 1 test.*.er |
此示例仅显示编译器注释。无需运行程序即可使用此命令。
er_src -myfile.o |
这些示例使用挂钟分析来列出函数和调用者-被调用者。
er_print -metrics ei.%wall -functions test.*.er |
er_print -cmetrics aei.%wall -callers-callees test.*.er |
此示例显示如何运行包含 er_print 命令的脚本。
er_print -script myscriptfile test.1.er |
myscriptfile 脚本包含 er_print 命令。脚本文件内容的样例如下:
## myscriptfile ## Send script output to standard output outfile - ## Display descriptive information about the experiments header ## Write out the sample data for all experiments overview ## Write out execution statistics, aggregated over ## the current sample set for all experiments statistics ## List functions functions ## Display status and names of available load objects object_list ## Write out annotated disassembly code for systime, ## to file disasm.out outfile disasm.out disasm systime ## Write out annotated source code for synprog.c ## to file source.out outfile source.out source synprog.c ## Terminate processing of the script quit |
此示例显示高级 MPI 函数。MPI 具有许多内部软件层,但是此示例显示一种只查看入口点的方法。可能存在一些重复符号,可以忽略它们。
er_print -functions test.*.er | grep PMPI_ |