Size: a a a

WebAssembly — русскоговорящее сообщество

2020 December 23

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
В исходной библиотеке векторизация как сделана - интринзиками или автоматически?
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Автоматически.
Демка должна работать автоматически.
Даже она не собирается  же.

Вот эта хренья:
https://v8.dev/features/simd
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
В бинаре должны быть инструкции типа f32x4.mul и тип v128. А, до меня дошло, скорей всего надо попробовать

emcc test.cpp --bind -s WASM=1 -o test.s.js -O3 -msimd128 -fvectorize
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Или просто убрать -fno-vectorize
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Иначе не будет векторизации
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Я постараюсь на это завтра глянуть, сегодня (у меня) поздно уже
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Я и так и так тыкал.
В спеке написано что если стоит симд и O3 - векторизация форсится, но так как бинари побайтно одинаковые - значит ничего не работает.
Попробую руками интриксы запихать
источник

ee

elias eliatto in WebAssembly — русскоговорящее сообщество
привет! как узнать, какие приемлемые размеры  TOTAL_STACK и TOTAL_MEMORY надо задавать для wasm приложения?
источник

К

Константин in WebAssembly — русскоговорящее сообщество
elias eliatto
привет! как узнать, какие приемлемые размеры  TOTAL_STACK и TOTAL_MEMORY надо задавать для wasm приложения?
Достаточно по дефолту + гроу для мелочи.
Если ты имеешь на старте сразу аллок в 100мб - так ставь 128мб сразу
источник

DM

Dmitry M in WebAssembly — русскоговорящее сообщество
Эмпирически. Смотришь падает приложение на целевой системе и подкручиваешь.
источник

К

Константин in WebAssembly — русскоговорящее сообщество
там я вижу что он один фиг пихает в гланк
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
щас перепишу, проблемы скопировать :)
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
$ cat roll.cpp
int roll(int from, int to) {
   int res = from;
   for(int i = from; i < 1024*1024 && i < to; i ++) {
       res *= i;
   }
   return res;
}
$ clang -O3 --target=wasm32-unknown-unknown -msimd128 roll.cpp -S -o - | grep i32x4
   i32x4.replace_lane    0
   i32x4.splat
   i32x4.add
   i32x4.mul
   i32x4.add
   i32x4.mul
   i32x4.mul
   i32x4.extract_lane    0
$
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Вот что получилось
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
т.е. шланг собирает как в инструкции
источник

К

Константин in WebAssembly — русскоговорящее сообщество
(я ленивый, я под виндой, ща чекну что собирает он и не он)
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
$ clang --version                                                               clang version 12.0.0 (https://github.com/llvm/llvm-project.git f7d033f4d80f476246a70f165e7455639818f907)
Target: x86_64-unknown-freebsd12.1
Thread model: posix
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
_относительно_ свежий
источник

К

Константин in WebAssembly — русскоговорящее сообщество
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Да я уже показывал.
Тот же самый
источник