C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化funcA funcB funcC 内存信息查看工具: dmidecode • 可以看到小彭老师电脑上插了 2 块内存,频率都是 2667 MHz ,数据的宽度是 64 位( 8 字节)。 • 理论极限带宽 = 频率 * 宽度 * 数量 2667*16*2=42672 MB/s • 那么,频率相同的情况下,可以考虑插两块 8GB 的内存, 比插一块 16GB 的内存更快,不过价格可能还是翻倍的。 循环展开 • 注意到 offset 循环只有 4 的大小,所以加 一下 unroll 指令让编译器自动循环展开吧 。 • 微软编译器可能是用 #pragma unroll 4 AVX 指令:宽度为 8 的浮点矢量 • __m128 一次处理四个 float ,改成 __m256 一次处理八个 float ,应该会更快吧?的确变 快了。 • 不过因为 res 有四个寄存器, 4*4*8=1280 码力 | 147 页 | 18.88 MB | 1 年前3
共 1 条
- 1













