Vlákno názorů k článku Pohled pod kapotu formátu WebAssembly: instrukce pro řízení toku dat od Marek - Na SIMD ve WASM jsem zvědavý. Někde v...

  • Článek je starý, nové názory již nelze přidávat.
  • 27. 11. 2025 22:24

    Marek

    Na SIMD ve WASM jsem zvědavý. Někde v dokumentaci jsem četl, že v Céčku je možné používat x86 intrinsics (asi jenom SSE2) a compiler (clang) to v pohodě přeloží do WASM. To má WASM 1:1 ekvivalentní instrukce jako x86? Nebo fungují pouze některé? Nebo fungují všechny ale výsledný bajtkód bude vypadat hrozně (protože to bude neefektivně emulovat)? Co když potom ta binárka poběží na ARM/NEON, nebude to pomalé? Mám zkušenosti pouze s integer SIMD (SSE2 až AVX512) a tam ten lineární nárůst výkonu lze snadno vidět.

  • 28. 11. 2025 9:49

    Pavel Tišnovský
    Zlatý podporovatel

    Ano v céčku je možné používat intrinsics, ale i klidně se do SIMD přeloží i vektorové operace, tedy operace nad (například):


    typedef float v16f __attribute__((vec­tor_size(16)));

    Omezeno je to většinou právě na 128bitové vektory s floaty, takže žádná ekvivalence s AVX nebo dokonce AVX 512 tam není, ale pořád lepší než nic. A právě kvůli tomu omezeni to dobře běží i s NEONy.