points by throwaway17_17 4 days ago | 0 comments
My imagination is failing me, can you give me an example of the type of work being done where SIMD is ‘deeply probing and manipulating arbitrarily complex data structures in parallel that involve collections of unrelated types’? I don’t doubt you know what you mean, but I can’t wrap my head around it.
For me I can only think of the simplest example of SIMD being used to ‘parallelize loops’ as what SIMD is for. If it turns out I’m missing a large problem or application space for SIMD I will be excited to research it. Any pointers to topics would be appreciated.
[–] jandrewrogers 4 days ago
[–] throwaway17_17 4 days ago
Thanks for the response, I’ll have some reading to do in this area.
[–] AlotOfReading 4 days ago
One example is OLAP databases, which often heavily exploit SIMD for query processing. You can also turn parsing into a SIMD problem, which is applicable to things like handling XML, JSON, and CSV. Simdjson comes to mind, or parabix for XML.
[–] throwaway17_17 4 days ago
The parsing stuff I am aware of, but the query processing is a big blank for me to dig into.
[–] bajard 3 days ago
I wrote an example answer, but it was shadowbanned
The idea that SIMD is only good for parallelizing operations over arrays of the same type is empirically false and seriously understates the capabilities of good SIMD implementations. Some SQL-ish implementations work this way on row-structured data.
Most devs seriously underestimate what good SIMD is capable of.