SIMD 很重要

主要观点:在游戏开发中常提及 SIMD,但难以实现真正收益,构建围绕 SIMD 的数学库不一定有好处,有时还会阻碍开发,如游戏玩法和物理中的一些计算难以聚集为 SIMD 指令。但对于 Box2D 3.0,决定尝试用 SIMD 解决接触问题,关键是图着色,可将接触对分组同时求解,且可用简单贪心算法,还需处理身体睡眠和醒来等情况,求解后要进行聚集和分散操作。测试表明 SSE2 比标量快约 2 倍,AVX2 比 SSE2 快约 14%,苹果 M2 性能较好,同时提到编译器自动矢量化效果不如手动 SSE2,还列举了相关参考资料。
关键信息

  • SIMD 是 CPU 性能的圣杯但难实现收益。
  • 游戏中很多计算难以用 SIMD 处理,如游戏玩法和物理。
  • Box2D 用图着色将接触对分组同时求解,用简单贪心算法,处理身体睡眠和醒来。
  • 求解后要进行聚集和分散操作。
  • 测试结果表明不同指令集性能差异,苹果 M2 性能较好,编译器自动矢量化效果不如手动 SSE2。
    重要细节
  • 大型金字塔有 5050 个身体和 14950 个接触对,每个接触点有两个力。
  • 图着色用不同颜色给接触约束分组,确保同一颜色中一个身体只出现一次或不出现。
  • 代码示例展示如何添加和删除接触到图着色,以及如何处理身体睡眠和醒来。
  • 测试在 AMD 7950X 和苹果 M2 上进行,包括不同指令集的性能对比。
  • 提到 Bepu Physics 用图着色和 SIMD,以及最早提及用图着色加速刚体物理计算的文献。
  • 图着色在布料模拟等领域也有应用,且其预计算较方便。
阅读 13
0 条评论