‹ BackHN Continuity

Thread

Platform-independent SIMD in Go

414 points · 152 comments · yurivish

  1. physicsguy · · focus · HN ↗
    Oh this is great, it was one of my biggest bugbears about Go since you almost always have to link C/C++ code to get the appropriate performance.

    The one negative I'd say is that often autovectorisation is 'good enough' and this doesn't really tackle that gap.

    1. tgv · · focus · HN ↗
      As a first step, it might be possible to write a linter rule that rewrites suitable numeric loops to SIMD. There are already rules to rewrite several loop types, so that should be doable.
    2. pjmlp · · focus · HN ↗
      The poor Assembler and the unsafe package forgotten in the corner.

      While reaching out to CGO is the easier way, it doesn't mean it is the only tool available in Go.

    3. typical182 · · focus · HN ↗
      FWIW, there is some pretty substantial autovectorization work that is already in-flight for the Go compiler.

      There's a CL stack here:

      <a href="https:&#x2F;&#x2F;go.dev&#x2F;cl&#x2F;791740" rel="nofollow">https:&#x2F;&#x2F;go.dev&#x2F;cl&#x2F;791740

      It&#x27;s hard to make predictions with an open source project, but my personal guess is some flavor of it will land (including it is already demonstrating good results without an enormous level of code complexity in the compiler and without overly slowing down compile speeds), but I guess we&#x27;ll see.

      It&#x27;s being driven by an external contributor who has landed some good changes in the past to the Go compiler. (I think the autovectorization work might be part of their PhD or other academic research, but not sure.)

Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.