【问题标题】:Profiling multi-threaded and multi-processor program分析多线程和多处理器程序
【发布时间】: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


【解决方案1】:

对于多线程程序,没有必要带出大 MPI 配置文件枪。我使用英特尔的 VTune,它在分析多个线程方面做得非常出色。您可以获得 30 天的试用期。

【讨论】:

    【解决方案2】:

    我为此建议Allinea MAP,由我的雇主开发。它分析 MPI 应用程序并向您显示源代码中的哪些地方花费了您的应用程序时间。有一些关于内存使用、MPI 通信和计算成本的非常有用的图表 - 它允许您轻松放大问题区域以提高性能。

    您无需重新编译应用程序即可开始使用它:它会在运行时自动添加分析。

    它是商业软件 - 但有 30 天试用期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多