1

我有一个用 C 编写的 openmp 代码。我在 Stampede 上的 Intel MIC 上执行了代码。我想分析代码以找到代码中的热点,以便对我进一步优化代码有所帮助。我尝试使用分析器 gprof,但我在某处读到 gprof 不能直接在 MIC 上使用。我尝试通过教程来使用 perf。我可以走到某个步骤,然后当 perf annotate 步骤到来并执行代码时,它给了我意外的错误“)”。所以我不知道如何继续分析我的代码。有人可以帮忙吗??这是我参考 perf 教程的站点:sandsoftwaresound.net/perf/perf-tutorial-hot-spots/。

4

2 回答 2

1

Xeon Phi 80% 的优化与主机 (Xeon) 相同。使用 gprof、printf、编译器选项和工具包的其余部分,并尽可能仅在主机上执行代码进行优化。在您无能为力之后,再专注于特定的至强融核优化。

当您在 Stampede 上时,我假设您使用的是 Intel 编译器。编译器有很多诊断功能来分析你的代码,甚至提供建议。我会为您提供更具体的 URL,但我正在度假,带宽有限。

虽然这不是特定于您的问题,但这里有一些其他建议。如果你不是,你很可能会在使用它时获得巨大的提升。英特尔编译器擅长优化,尤其是在英特尔架构上。此外,您应该尽可能使用英特尔 MKL。MKL 的所有例程都针对不同的 IA 架构进行了优化,而与 HPC 最相关的程序则专门针对 MIC 进行了优化。

于 2014-07-16T13:20:41.477 回答
0

你有几个选择。

重量级的方法是使用 Intel Vtune。首先将 -g 添加到您的编译器标志中。我经常从主机命令行使用 Vtune,这是我用来在 MIC 上分析应用程序的命令。(这是在主机上执行的,主机上的 Vtune 使用 ssh 在 MIC 上启动应用程序。)

amplxe-cl -collect knc-hotspots -source-search-dir=/mysrc/dir -search-dir=/mybin/dir -- ssh mic0 /home/me/myapp 

假设 MIC 上的应用程序位于 /home/me/myapp,并且主机上的源目录和源搜索目录。(至少使用 Vtune 更新 15,我需要分别指定这两个,以便让 Vtune GUI 向我显示符号信息)

应用程序完成后,使用 amplxe-gui 在主机上运行 Vtune GUI 并打开结果集。

英特尔还开发了一些简化的开源分析工具,支持 MIC、Speedometer 和 Overhead,您可以在此处找到有关它们的信息

希望这是足够的信息让你开始。

于 2014-07-15T19:58:42.073 回答