| ▲ | Asmod4n 7 hours ago | |||||||
The issue with libraries which offer you portable simd is that the auto vectorizer of the compiler will likely generate faster code. | ||||||||
| ▲ | vlovich123 6 hours ago | parent | next [-] | |||||||
The autovectorizer afaik rarely emits optimizations for the different vector units to support + efficiently caches the CPUid check to happen once on program start. It’s a good baseline but the continuum (today) is scalar -> auto vectorized -> portable SIMD -> hand rolled explicit. That portable SIMD lets you bridge into hand rolled explicit ergonomically is a power auto-vectorization doesn’t have. Either the compiler does it or doesn’t but you have no way to even have a check that says “fail to build the program if this function isn’t vectorized”. This is important if you’re relying on that property and someone accidentally adds a data dependency and breaks the optimization without you realizing. Portable and explicit SIMD don’t have this problem by definition. | ||||||||
| ||||||||
| ▲ | horseloverthin 5 hours ago | parent | prev [-] | |||||||
[dead] | ||||||||