Bedarf für ein neues portierbares Modul besteht offenbar, da die Compiler bislang den Code noch nicht "auto-vektorisieren" können.
Da hat sich wohl ein kleiner Übersetzungsfehler aus dem Englischen eingeschlichen. Aus dem verlinkten Blog:
You can also not write vectorized operations and hope that LLVM's optimizations will "auto-vectorize" your code.
Viel mehr zu Lesen als: Man kann auch nicht manuell vektorisieren, und dann hoffen das LLVM es schon irgendwie hinkriegt.
Der Compiler autovectorized mit LLVM als backend (fast) genau so wie z. B. clang. Also eigentlich immer ganz ok, und wenn man weiß was man tut, erst recht.
Das Problem ist viel mehr die Garantie einer Vektorisierung, die ja für performancekritische Routinen durchaus gegeben sein muss. In C++ darf ich dafür normalerweise intrinsics nutzen, _mm256_cvtepu8_epi64 lässt grüßen.
Der Stand der Dinge in Rust ist das packed_simd crate.
Das Posting wurde vom Benutzer editiert (01.10.2020 18:31).