|
|
1
18
我稍微更改了值:
我现在没有Broadwell,但是我在我的咖啡湖上试用了你的代码,性能下降了,不是2KB,而是4.5KB左右。此外,我还发现吞吐量在略高于2KB时表现出不稳定的行为。
这里的红线是
研究更详细的
有关跌落前不稳定行为的更多信息,请参见下面@PeterCordes的评论。
展开2、3、4、6或8次迭代将得到以下结果。请注意,我没有更正向量末尾的块,这些块由于展开而被忽略。因此,应忽略蓝线中的周期性峰值,周期图案的下限基线是实际带宽。
正如您所看到的,分支预测失误的比例并没有真正改变,但由于分支总数因展开迭代次数的因素而减少,因此它们对性能的贡献将不再很大。 如果循环展开,处理器可以更自由地按顺序进行计算,这还有另外一个好处。 如果这是有实际应用的话,我建议尝试给热循环一个编译时固定的迭代次数或一些整除性的保证,这样(可能有一些额外的提示)编译器就可以决定展开的最佳迭代次数。 |
|
|
2
2
可能与此无关,但您的Linux机器可能会使用CPU频率。我知道Ubuntu18有一个gouverner,它在功能和性能之间保持平衡。您还需要处理流程关联,以确保它在运行时不会迁移到不同的核心。 |
|
|
wubw · Skybox渲染的VkRenderPass加载操作问题 8 年前 |
|
|
motam79 · 英特尔TBB流程图开销 8 年前 |
|
|
sjso · 使用影子分页在ubuntu中运行vm? 8 年前 |
|
|
BeeOnRope · 在x86中是否允许访问跨越零边界的内存? 8 年前 |