C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化
p 课程 PPT 和代码: https://github.com/parallel101/course 为什么往 int 数组里赋值 1 比赋值 0 慢一倍? 第 1 章:内存带宽 cpu-bound 与 memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 。 • 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并 行没有加速效果。称为内存瓶颈( • 因为局部数组的大小远远小于一级缓存,这样迭代时 读写的带宽就是一级缓存的速度,几乎没有影响。 • 这里一次循环体直接相当于 16 次迭代,两次就完了。 但是可能加的有点过头变成 cpu-bound 了,所以只快 了 10 倍左右,大家掌握里面的思想就好。 进一步优化 • 用了一些常量作为参数,调整一下局部数组的大小。 • 加速比: 16 倍,大概已经到极限了? 进亿步优化 •0 码力 | 147 页 | 18.88 MB | 1 年前3
共 1 条
- 1