concept-collection / libflame2wasm
libflame2wasm / web / build-web.sh
36 lines · 1.2 KBBlameHistoryRaw
1#!/bin/bash
2# Build the browser benchmark modules (single-threaded and pthreads variants)
3# into web/dist/. Requires the libraries built by ../build-wasm.sh (+ PTHREAD=1)
4# and ../build-blis-wasm.sh (+ THREADING=pthreads).
5set -euo pipefail
7cd "$(dirname "$0")"
8ROOT=$(cd .. && pwd)
10if ! command -v emcc >/dev/null 2>&1; then
11 source ~/emsdk/emsdk_env.sh
12fi
14mkdir -p dist
16COMMON="-O2 -sMODULARIZE -sENVIRONMENT=web,worker,node \
17 -sEXPORTED_FUNCTIONS=_run_bench -sEXPORTED_RUNTIME_METHODS=cwrap"
19# Single-threaded: BLIS(st) first so its BLAS symbols win over libflame's f2c BLAS.
20emcc $COMMON bench_web.c \
21 -sEXPORT_NAME=createBenchST \
22 -sALLOW_MEMORY_GROWTH \
23 "$ROOT/install/lib/libblis-st.a" \
24 "$ROOT/install/lib/libflame.a" \
25 -o dist/bench_st.js
27# Threaded: everything compiled with -pthread; fixed shared memory (growth is
28# costly with shared memory); worker pool must cover max threads + margin.
29emcc $COMMON -pthread -DBLIS_MT bench_web.c \
30 -sEXPORT_NAME=createBenchMT \
31 -sPTHREAD_POOL_SIZE=14 -sINITIAL_MEMORY=1024MB \
32 "$ROOT/blis/lib/generic/libblis.a" \
33 "$ROOT/install/lib/libflame-mt.a" \
34 -o dist/bench_mt.js
36echo "Done: web/dist/bench_st.{js,wasm} and web/dist/bench_mt.{js,wasm}"