I'm using MPI and I want to measure the communication costs, so that I can then compare them to the 'processing' costs, e.g., how much time do I need to scatter a list through n processes and then compare it to how much time I need to sort it.
我正在使用MPI,我想测量通信成本,以便我可以将它们与“处理”成本进行比较,例如,我需要多长时间通过n个流程分散列表然后将其与多少时间进行比较我需要对它进行排序。
Does anyone know any tools to measure this communication costs? (the scatter for example)
有没有人知道任何衡量这种通信成本的工具? (分散例如)
Is there anything to make measurements on MPI communication costs like there is, for example, PAPI to analyse code performance?
有没有什么可以测量MPI通信成本,例如PAPI来分析代码性能?
Thanks in advance!
提前致谢!
1 个解决方案
#1
25
Yes, there's lots of such tools. MPI defines a tools interface that allows other libraries to interject themselves at your MPI function calls, and do counts, timing, etc.
是的,有很多这样的工具。 MPI定义了一个工具接口,允许其他库在您的MPI函数调用中插入自己,并进行计数,计时等。
A very small MPI profiling tool is mpiP - it gives a very short summary of MPI activity in your code.
一个非常小的MPI分析工具是mpiP - 它提供了代码中MPI活动的简短摘要。
The IPM library is fairly easy to build and gives you lots of MPI counts and times, and gives a nice HTML file as a result. You mention PAPI; IPM will also integrate PAPI counters if available. We use this regularly at our centre, and I think this would do what you like. If you've built your program with dynamic libraries for MPI, you don't even need to recompile to use this (mpiP has the same property).
IPM库相当容易构建,并为您提供大量的MPI计数和时间,并因此提供了一个很好的HTML文件。你提到PAPI;如果可用,IPM还将集成PAPI计数器。我们经常在我们的中心使用这个,我认为这会做你喜欢的。如果您使用MPI的动态库构建程序,则甚至不需要重新编译即可使用它(mpiP具有相同的属性)。
Jumpshot, which comes with MPICH2 but can be built with any MPI, actually shows on a timeline how long each MPI operation took.
Jumpshot,MPICH2附带但可以使用任何MPI构建,实际上在时间线上显示每个MPI操作需要多长时间。
OpenSpeedshop gives very detailed performance measurements of your code, highlighting especially "expensive" lines; it also has an MPI-tracing mode which will identify MPI times by line of code. It can be tricky to install.
OpenSpeedshop为您的代码提供非常详细的性能测量,突出显示“昂贵”的线条;它还具有MPI跟踪模式,可以按代码行识别MPI时间。安装起来可能很棘手。
On the commercial part of the spectrum there are Vampir from TU Dresden and Intel Trace Analyzer and Collector (ITAC). Vampir collects source-level, MPI and OpenMP traces using the open source VampirTrace library that also integrates with PAPI to provide detailed event and counter tracing. VampirTrace's traces are in Open Trace Format that could be read by various other tools besides Vampir.
在频谱的商业部分,有来自TU Dresden的Vampir和Intel Trace Analyzer and Collector(ITAC)。 Vampir使用开源VampirTrace库收集源级,MPI和OpenMP跟踪,该库还与PAPI集成以提供详细的事件和计数器跟踪。 VampirTrace的痕迹采用开放式跟踪格式,除了Vampir之外,还可以通过各种其他工具读取。
ITAC is part of Intel Cluster Studio XE. It is mostly designed to work with Intel MPI and sharing the same ancestral code with Vampir, provides more or less the same functionality. One of its nice features is the included automatic run-time MPI correctness checker.
ITAC是Intel Cluster Studio XE的一部分。它主要用于与英特尔MPI配合使用,与Vampir共享相同的祖先代码,提供或多或少相同的功能。它的一个很好的功能是包含自动运行时MPI正确性检查器。
Allinea MAP is an MPI profiler from Allinea that provides performance analysis with an integrated source browser that displays the communication/computation cost alongside individual lines of the source code. It also shows high-level graphs of performance information, including memory, CPU instructions and communication.
Allinea MAP是Allinea的MPI分析器,它通过集成的源浏览器提供性能分析,该浏览器显示通信/计算成本以及源代码的各个行。它还显示了性能信息的高级图,包括内存,CPU指令和通信。
But there are other higher level tools which not only give reports, but actually offer advice. TACC's perfexpert is a command-line based tool which takes a number of measurements and offers some performance tuning advice. Scalasca out of Jülich, recompiles your code with a lot of source-level instrumentation and can point out load imbalances, particularly expensive MPI collectives, etc. It can also integrate with Vampir for detailed trace analysis.
但是还有其他更高级别的工具不仅可以提供报告,还可以提供建议。 TACC的perfexpert是一个基于命令行的工具,它需要进行大量测量并提供一些性能调整建议。来自Jülich的Scalasca,使用大量源代码级别的仪器重新编译代码,可以指出负载不平衡,特别是昂贵的MPI集合等。它还可以与Vampir集成以进行详细的跟踪分析。
#1
25
Yes, there's lots of such tools. MPI defines a tools interface that allows other libraries to interject themselves at your MPI function calls, and do counts, timing, etc.
是的,有很多这样的工具。 MPI定义了一个工具接口,允许其他库在您的MPI函数调用中插入自己,并进行计数,计时等。
A very small MPI profiling tool is mpiP - it gives a very short summary of MPI activity in your code.
一个非常小的MPI分析工具是mpiP - 它提供了代码中MPI活动的简短摘要。
The IPM library is fairly easy to build and gives you lots of MPI counts and times, and gives a nice HTML file as a result. You mention PAPI; IPM will also integrate PAPI counters if available. We use this regularly at our centre, and I think this would do what you like. If you've built your program with dynamic libraries for MPI, you don't even need to recompile to use this (mpiP has the same property).
IPM库相当容易构建,并为您提供大量的MPI计数和时间,并因此提供了一个很好的HTML文件。你提到PAPI;如果可用,IPM还将集成PAPI计数器。我们经常在我们的中心使用这个,我认为这会做你喜欢的。如果您使用MPI的动态库构建程序,则甚至不需要重新编译即可使用它(mpiP具有相同的属性)。
Jumpshot, which comes with MPICH2 but can be built with any MPI, actually shows on a timeline how long each MPI operation took.
Jumpshot,MPICH2附带但可以使用任何MPI构建,实际上在时间线上显示每个MPI操作需要多长时间。
OpenSpeedshop gives very detailed performance measurements of your code, highlighting especially "expensive" lines; it also has an MPI-tracing mode which will identify MPI times by line of code. It can be tricky to install.
OpenSpeedshop为您的代码提供非常详细的性能测量,突出显示“昂贵”的线条;它还具有MPI跟踪模式,可以按代码行识别MPI时间。安装起来可能很棘手。
On the commercial part of the spectrum there are Vampir from TU Dresden and Intel Trace Analyzer and Collector (ITAC). Vampir collects source-level, MPI and OpenMP traces using the open source VampirTrace library that also integrates with PAPI to provide detailed event and counter tracing. VampirTrace's traces are in Open Trace Format that could be read by various other tools besides Vampir.
在频谱的商业部分,有来自TU Dresden的Vampir和Intel Trace Analyzer and Collector(ITAC)。 Vampir使用开源VampirTrace库收集源级,MPI和OpenMP跟踪,该库还与PAPI集成以提供详细的事件和计数器跟踪。 VampirTrace的痕迹采用开放式跟踪格式,除了Vampir之外,还可以通过各种其他工具读取。
ITAC is part of Intel Cluster Studio XE. It is mostly designed to work with Intel MPI and sharing the same ancestral code with Vampir, provides more or less the same functionality. One of its nice features is the included automatic run-time MPI correctness checker.
ITAC是Intel Cluster Studio XE的一部分。它主要用于与英特尔MPI配合使用,与Vampir共享相同的祖先代码,提供或多或少相同的功能。它的一个很好的功能是包含自动运行时MPI正确性检查器。
Allinea MAP is an MPI profiler from Allinea that provides performance analysis with an integrated source browser that displays the communication/computation cost alongside individual lines of the source code. It also shows high-level graphs of performance information, including memory, CPU instructions and communication.
Allinea MAP是Allinea的MPI分析器,它通过集成的源浏览器提供性能分析,该浏览器显示通信/计算成本以及源代码的各个行。它还显示了性能信息的高级图,包括内存,CPU指令和通信。
But there are other higher level tools which not only give reports, but actually offer advice. TACC's perfexpert is a command-line based tool which takes a number of measurements and offers some performance tuning advice. Scalasca out of Jülich, recompiles your code with a lot of source-level instrumentation and can point out load imbalances, particularly expensive MPI collectives, etc. It can also integrate with Vampir for detailed trace analysis.
但是还有其他更高级别的工具不仅可以提供报告,还可以提供建议。 TACC的perfexpert是一个基于命令行的工具,它需要进行大量测量并提供一些性能调整建议。来自Jülich的Scalasca,使用大量源代码级别的仪器重新编译代码,可以指出负载不平衡,特别是昂贵的MPI集合等。它还可以与Vampir集成以进行详细的跟踪分析。