使用 Intel VTune Amplifier 进行 OpenMP 程序分析:啥是“kmp print storage map gtip”
Posted
技术标签:
【中文标题】使用 Intel VTune Amplifier 进行 OpenMP 程序分析:啥是“kmp print storage map gtip”【英文标题】:OpenMP progam analysis with Intel VTune Amplifier: What is "kmp print storage map gtip"使用 Intel VTune Amplifier 进行 OpenMP 程序分析:什么是“kmp print storage map gtip” 【发布时间】:2014-11-17 12:50:36 【问题描述】:我尝试分析与英特尔 OpenMP 和英特尔 Composer XE 2014 并行化的 C++ 程序的缩放行为。当我运行“高级热点分析”时,我得到一个名为的库函数“kmp print storage map gtip”消耗了总运行时间中第二长的部分。我用谷歌搜索了这个例程的含义,但没有得到结果。这个例程是否与我在这部分算法中使用的 std::map 数据结构相关? 提前致谢!
编辑 现在我消除了一个障碍,可以加速一切。但现在一个新的热点开始发挥作用。突然,当我进行 Locks & Wait 分析时,我在第一个位置“OMP Join Barrier mkl_blas_daxpy_omp:115”和“OMP Join Barrier mkl_blas_dcopy:155”。但我没有明确调用任何 mkl 例程。我该如何调查这个更进一步?
【问题讨论】:
我忘了说它包含在 OpenMP 库中。 你的考试需要多长时间,是不是很短? 这是一个需要 3.5 秒的测试用例。通过使用更大的数据,我在位置 2 和 3 处得到 _kmp_barrier 和 _kmp_x86_pause。这看起来“更好”,即更现实。谢谢,我认为 3.5 秒的测试用例已经足够了。 【参考方案1】:只要环境变量KMP_STORAGE_MAP
设置为true
或verbose
,就会调用__kmp_print_storage_map_gtid
。它将 OpenMP 运行时库使用的各种对象的位置打印到标准错误流。由于 I/O 操作通常很慢,因此花费大量程序执行时间也就不足为奇了,尤其是在涉及较短的测试用例时。
由于KMP_STORAGE_MAP
未记录,其默认值为false
,因此可以安全地假设它仅在特殊情况下由其他工具使用,例如通过 VTune 进行热点分析。当你的程序正常运行时,函数根本不会被调用。
【讨论】:
【参考方案2】:当在自下而上选择“mkl_blas_dcopy”热点时,您可以通过查看右侧堆栈面板在代码中跟踪 MKL 调用 - 您应该能够看到一直到 main() 的调用链。也许从您的代码中调用的其他一些库使用 MKL。
【讨论】:
以上是关于使用 Intel VTune Amplifier 进行 OpenMP 程序分析:啥是“kmp print storage map gtip”的主要内容,如果未能解决你的问题,请参考以下文章