我正在使用 Intel Vtune Amplifier XE 2013 来分析在多核 CPU 上运行的并行程序,特别是它是用 OpenCL 编写并在 Xeon Phi 中执行的。我想知道Vtune带来的结果应该如何准确解释,即
- 是单线程还是整个核心收集的性能计数器的值?(假设一个 CPU 中有许多内核,并且许多线程可以在一个内核上同时执行,例如 Xeon Phi)。
- Vtune 如何在多核 CPU 上采样?它是在单个核心上采样并报告它,还是在多个核心上采样并取平均值?
我正在使用 Intel Vtune Amplifier XE 2013 来分析在多核 CPU 上运行的并行程序,特别是它是用 OpenCL 编写并在 Xeon Phi 中执行的。我想知道Vtune带来的结果应该如何准确解释,即
VTune 默认对 Xeon Phi 上的所有内核进行采样,结果可以通过以下任一方式查看:聚合或每个内核。使用 GUI 中 BottomUp 选项卡中的 Grouping 下拉框来规范数据聚合的方式,使用“change Viewpoint”在热点、事件计数和其他可用视图之间切换。
有关 VTune 在 Xeon Phi 上进行 OpenCl 分析的更多信息,请参阅以下文章:
答案是视情况而定。一些计数器(如循环或 L1 未命中)是每个线程的。但是还有其他一些是每个核心的。因此,这取决于您要捕获的计数器。