Size: a a a

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

2020 December 22

К

Константин in WebAssembly — русскоговорящее сообщество
MaxGraey
Это C++ библиотека. Такая большая разница между вектороной и скалярной версиями объясняется тем, что оригинальный код изначально использовал SIMD интринсики, которые эмулировались в скалярной версии. Тут показательно то, что wasm с SIMD и native с SIMD не сильно так и отличаются. Ну и прекрастно виден потенциал WebAssembly. Собственно JS никогда не будет автовекторизироваться или даже просто векторизироваться. Поэтому с приходом SIMD тезис о том, что wasm не всегда быстрее JS отпадет сам собой, по крайней мере для приложений где возможна векторизация
Интересно, а и имеет смысл тесселятор на симд отправлять?
О, я твою либу нашел.
Хехе.

А в emcc надо руками чекать поддержку, или он сам отрубит если что на сафари?

https://github.com/MaxGraey/wasm-check/tree/master/lib
источник

К

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

ee

elias eliatto in WebAssembly — русскоговорящее сообщество
привет! Браузер в логе пишет при попытке делать запросы от wasm приложения:  "Попытка установки запрещённого заголовка была пресечена: Content-Length".  Заголовок, пересылаемый сервером на любой запрос "Access-Control-Allow-Headers:*" не помог.
источник

DM

Dmitry M in WebAssembly — русскоговорящее сообщество
Content-Length отправляет браузер, не пытайся его задавать
источник

ee

elias eliatto in WebAssembly — русскоговорящее сообщество
Dmitry M
Content-Length отправляет браузер, не пытайся его задавать
его задает REST client (т.е. задаю не я, а 3rd party компонент)
источник

DM

Dmitry M in WebAssembly — русскоговорящее сообщество
нужно патчить REST client. Или найти место, где дергается XMLHttpRequest/fetch и закостылить
источник

ee

elias eliatto in WebAssembly — русскоговорящее сообщество
Dmitry M
нужно патчить REST client. Или найти место, где дергается XMLHttpRequest/fetch и закостылить
спасибо, учту
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Фак, как обойти import.meta.url для es6 emcc?
источник

К

Константин in WebAssembly — русскоговорящее сообщество
UMD ролик упорно забивает грузить, орет на default, тут на import.meta.url
USE_ES6_IMPORT_META

там народ тоже долго орал.
Причем нигде кроме GH я не нашел
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Расскажи как симд готовить.
Я вот собрал с флагом, а только хуже стало.
Почему так?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Константин
Расскажи как симд готовить.
Я вот собрал с флагом, а только хуже стало.
Почему так?
с каким флагом?
источник

К

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

でゲソ in WebAssembly — русскоговорящее сообщество
elias eliatto
привет! Браузер в логе пишет при попытке делать запросы от wasm приложения:  "Попытка установки запрещённого заголовка была пресечена: Content-Length".  Заголовок, пересылаемый сервером на любой запрос "Access-Control-Allow-Headers:*" не помог.
ты в запрос из js не указывай размер ручками же
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
А компилируешь с -O3 хоть? Попробуй еще polly включить
источник

К

Константин in WebAssembly — русскоговорящее сообщество
MaxGraey
А компилируешь с -O3 хоть? Попробуй еще polly включить
Ну ясьпень. Ща.
источник

К

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

К

Константин in WebAssembly — русскоговорящее сообщество
Так, чет сломалось и вообще у меня теперь SIMD и регулялка одинаковые
Я походу сильно криво сконфигурировал что что-то сломалось
источник

К

Константин in WebAssembly — русскоговорящее сообщество
MaxGraey
А компилируешь с -O3 хоть? Попробуй еще polly включить
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Я чекал, оно все валится в em++ или emcc

и emsdk самый последний.

Я сделал проще, взял:

#include <emscripten/bind.h>
using namespace emscripten;

int roll(int from, int to) {
   int res = from;
   for(int i = from; i < 1024*1024 && i < to; i ++) {
       res *= i;
   }
   return res;
}

EMSCRIPTEN_BINDINGS(my_module) {
   function("roll", &roll);
}

и собрал:
emcc test.cpp --bind -s WASM=1 -o test.ns.js -O3
emcc test.cpp --bind -s WASM=1 -o test.s.js -O3 -msimd128 -fno-vectorize

Получил 2 идентичных бинаря

Инструкции тупые и нихрена не работае
https://v8.dev/features/simd
источник

К

Константин in WebAssembly — русскоговорящее сообщество
@maxgraey с polly  clang++ начинает орать кстати.
источник