Hacker News new | past | comments | ask | show | jobs | submit login

Yeah thts the fun of it, you create your kernel/function so that the simd level is a template parameter, and then you can use simple branching like:

if(supports<avx512>){ myAlgo<avx512>(); } else{ myAlgo<avx>(); }

Ive also used it for benchmarking to see if my code scales to different simd widths well and its a huge help






FYI: You don't want to do this. `supports<avx512>` is an expensive check. You really want to put this check in a static.

I guess this was just pseudo-code. Of course you don't want to do a runtime feature check over and over again.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: