2013-02-17 93 views
1

我最近開發的應用程序使用通過消息傳遞接口標準進行通信的多個處理器,而某些部分涉及多個異步運行的線程(std::async)。剖析多線程和多處理器程序

我正在運行Ubuntu 12.04 x86與g ++ - 4.6.3結合使用openMPI。

-p -g -pg添加到編譯器標誌並運行gprof不會產生任何有用的輸出,它基本上說,一切都很快完成。

如何分析這些程序?

+0

混合程序最好使用英特爾跟蹤分析器和收集器或VampirTrace/Vampir等性能工具進行配置。既然這兩個都是商業工具,你也可以試試Scalasca,雖然它提供了更高層次的分析數據。 – 2013-02-17 21:46:17

+0

還有一些工具可用於收集可能非常有用的MPI調用痕跡。例如MPE:http://www.mcs.anl.gov/research/projects/perfvis/software/MPE/index.htm – 2013-02-18 20:28:21

回答

1

我建議Allinea MAP爲此,由我的僱主開發。它介紹了MPI應用程序,並向您顯示源代碼中的哪些內容會耗費您的應用程序時間。有一些非常有用的內存使用情況圖,MPI通信和計算成本 - 並且它允許您輕鬆放大問題區域以獲得性能。

您不必重新編譯應用程序就可以開始使用它:它會在運行時自動添加分析。

它是商業軟件 - 但有30天的試用期。

0

對於多線程程序,不需要帶出大MPI配置文件槍。我使用英特爾的VTune,並且在分析多個線程方面做得非常出色。您可以獲得30天的試用期。