Ask HN: What's a good resource to get comfortable with SIMD?

6 points by sanjeetsuhag 1 year ago | 2 comments
I would like to be proficient at identifying places for and applying SIMD in my C/C++ programs. The domain is primarily centered around graphics, but I am open to resources from other domains too.

Ideally what I would like is some sort of progression for problems that may benefit from application of SIMD. From reading case studies online, it seems like there's lots of little tricks and stuff, almost like there's a different way of thinking about types, values and operations on them that you have to know.

  • nivertech 1 year ago
    I would first learn a couple of Array Programming Languages, first a mainstream one, e.g. Julia/R/Matlab/Octave, and then one from the APL-family (APL/J/K/Q/etc.)

    Lear how to write algorithms using vectorization only (without if-s and for-s).

    Look into OpenCL / CUDA programming models.

    Then it will be much easier to learn native SIMD programming for specific ISAs.

    ---

    https://en.wikipedia.org/wiki/Array_programming

    https://en.wikipedia.org/wiki/Category:Array_programming_lan...

    • b20000 1 year ago
      get a profiler, pick an algorithm, and parallellize it using simd

      then compare before / after using the profiler

      learn about the intrinsics as you work on it