SIMD for Collision

(box2d.org)

36 points | by birdculture 3 days ago

3 comments

  • grg0 1 hour ago
    As a SIMD noob, one thing that wasn't obvious to me is that SIMD can also speed you up if your mem throughput is underutilized by having the CPU load more data per instruction. It isn't just about compute speedups, which is typically what it's advertised for. Using perf on Linux has been very educational for me to get an intuition for modern CPU performance.
    • Cloudef 1 hour ago
      The way simd speeds up "compute" is indeed mainly the reason that you operate on multiple pieces of data at once.
      • grg0 1 hour ago
        Yeah, and in the blog post he mentions that he had to transform the data to SoA. If he had done that alone, he might already have seen a speedup from better cache utilization.

        Also, I see no mention of alignment in the post. I understand x86/AVX2 likes your load/stores to be aligned, even if it technically allows unaligned access.

        • dzaima 47 minutes ago
          Unaligned loads/stores aren't super bad; if still within a cacheline, there's zero penalty, and on crossing cachelines it's alike two ops (except page crossing, which is more bad).

          So, for 32B loads/stores and 64B cachelines, it's 1.5x more L1 cache ops (as half of the ops will cross a cacheline); perhaps bad if you're L1-cache-throughput-bound, but less so if you're at L2+ as the extra work sits in L1.

  • brcmthrowaway 2 hours ago
    No support for any ARM vector instructions.. thats horrible
  • NotGMan 24 minutes ago
    [dead]