Fortran+openMP 的简单分析?
Simple profiling for Fortran+openMP?
我一直在使用 gprof
来对代码进行基准测试,但自从我开始并行化代码后,我意识到 gprof
并没有提供有用的输出。
我如何分析或做一些有助于找到瓶颈的事情?
我听说过 Scalasca
和 TAU
,但它们似乎有点矫枉过正。
最简单易用的工具是 perf
. It can easily be installed 在任何 Linux 系统上,并且与 OpenMP 或其他线程应用程序配合得很好。
您只需在命令行中运行 sudo perf top
即可查看现场表演。这将告诉您当前消耗最多 CPU 资源的函数和源代码行,就像 top
对整个进程所做的那样。
为您的应用程序添加前缀:
perf record ./your-program your-parameter
perf report
将在功能和源代码行的基础上呈现配置文件。有很多参数需要调整 perf
,例如通过使用 -g
.
启用调用图跟踪
但是,虽然支持线程,但您无法轻易区分它们。所以你不会知道哪个线程表现出什么样的性能特征。为此,您应该求助于更专业的 HPC 工具,即使它们 看起来有点矫枉过正 。您必须考虑到分析并行性能并不简单。不管你用什么工具。
免费工具为:
- HPCToolkit:使用最简单,因为它只使用采样,所以不需要重新编译你的应用程序
- Score-P for recording and Cube 用于分析配置文件(站点似乎暂时关闭)
- Tau
如果您可以访问英特尔商业软件,则有一些非常有用的工具。随着 Intel Vtune amplifier you can examine the hotspots for a serial run as well as the effective usage of your cores (in the image a summary graph for a 24 cores openMP run)
我一直在使用 gprof
来对代码进行基准测试,但自从我开始并行化代码后,我意识到 gprof
并没有提供有用的输出。
我如何分析或做一些有助于找到瓶颈的事情?
我听说过 Scalasca
和 TAU
,但它们似乎有点矫枉过正。
最简单易用的工具是 perf
. It can easily be installed 在任何 Linux 系统上,并且与 OpenMP 或其他线程应用程序配合得很好。
您只需在命令行中运行 sudo perf top
即可查看现场表演。这将告诉您当前消耗最多 CPU 资源的函数和源代码行,就像 top
对整个进程所做的那样。
为您的应用程序添加前缀:
perf record ./your-program your-parameter
perf report
将在功能和源代码行的基础上呈现配置文件。有很多参数需要调整 perf
,例如通过使用 -g
.
但是,虽然支持线程,但您无法轻易区分它们。所以你不会知道哪个线程表现出什么样的性能特征。为此,您应该求助于更专业的 HPC 工具,即使它们 看起来有点矫枉过正 。您必须考虑到分析并行性能并不简单。不管你用什么工具。
免费工具为:
- HPCToolkit:使用最简单,因为它只使用采样,所以不需要重新编译你的应用程序
- Score-P for recording and Cube 用于分析配置文件(站点似乎暂时关闭)
- Tau
如果您可以访问英特尔商业软件,则有一些非常有用的工具。随着 Intel Vtune amplifier you can examine the hotspots for a serial run as well as the effective usage of your cores (in the image a summary graph for a 24 cores openMP run)