编辑 3:图像是全尺寸版本的链接。对不起,文字图片,但图表很难复制/粘贴到文本表中。
对于使用以下代码编译的程序,我有以下 VTune 配置文件icc --std=c++14 -qopenmp -axS -O3 -fPIC
:
在该配置文件中,装配视图中突出显示了两组指令。尽管指令相同且顺序相同,但上层集群花费的时间明显少于下层集群。两个集群都位于同一个函数内,并且显然都被称为n
时间。每次我在我现在使用的 Westmere Xeon 和 Haswell 笔记本电脑上运行分析器时都会发生这种情况(使用 SSE 编译,因为这是我现在的目标和学习内容)。
我错过了什么?
忽略较差的并发性,这很可能是由于笔记本电脑节流,因为它不会发生在桌面 Xeon 机器上。
我相信这不是微优化的例子,因为这三个加起来占总时间的相当大的百分比,我对这种行为的可能原因非常感兴趣。
编辑: OMP_NUM_THREADS=1 taskset -c 1 /opt/intel/vtune...
相同的配置文件,尽管这次的 CPI 略低。