【发布时间】:2013-02-02 01:47:58
【问题描述】:
我最近开发的应用程序使用多个处理器,它们通过消息传递接口标准进行通信,而某些部分涉及异步运行的多个线程 (std::async)。
我正在运行带有 g++-4.6.3 和 openMPI 的 Ubuntu 12.04 x86。
将-p -g -pg 添加到编译器标志并运行 gprof 不会产生任何有用的输出,它基本上表示一切都很快完成了。
如何分析此类程序?
【问题讨论】:
-
混合程序最好使用英特尔跟踪分析器和收集器或 VampirTrace/Vampir 等性能工具进行分析。由于两者都是商业工具,您也可以尝试 Scalasca,尽管它提供了更高级别的分析数据。
-
还有一些用于收集 MPI 调用痕迹的工具非常有用。例如 MPE:mcs.anl.gov/research/projects/perfvis/software/MPE/index.htm
标签: multithreading g++ profiling mpi