Re:C++26 Disapproved
by AlotOfReading on Wednesday November 04, 2026 @01:48AM
(#50362203)
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.
Re:C++26 Disapproved
by throwaway17_17 on Wednesday November 04, 2026 @02:18AM
(#50362375)
The parsing stuff I am aware of, but the query processing is a big blank for me to dig into.
Re:C++26 Disapproved
by jandrewrogers on Wednesday November 04, 2026 @01:51AM
(#50362218)
SIMD is often used to evaluate complex data structures in parallel. A common case is given a row with an arbitrary mix of data types and a query with an arbitrary mix of independent constraints on those data types, to evaluate all of the constraints in parallel in the same SIMD instruction(s).
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.
Re:C++26 Disapproved
by throwaway17_17 on Wednesday November 04, 2026 @02:17AM
(#50362369)
Thanks for the response, I’ll have some reading to do in this area.
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.