Update build scripts and documents of workload samples for wasi-sdk-12.0 (#484)
Update the build scripts of sample workloads (meshoptimizer/bwa/wasm-av1) to use the wasi-sdk-12.0 firstly to build the workload and discard clang-11, as wasi-sdk-12 supports wasi, simd and pthread better. And update the related documents. Also modify wasm mini loader to sync up with the change of wasm normal loader. Signed-off-by: Wenyong Huang <wenyong.huang@intel.com>
This commit is contained in:
@ -5,6 +5,38 @@ cmake_minimum_required (VERSION 3.0)
|
||||
|
||||
project(av1_wasm)
|
||||
|
||||
################ WASI-SDK ################
|
||||
find_path(WASI_SDK_HOME
|
||||
NAMES wasi-sdk
|
||||
PATHS /opt/
|
||||
REQUIRED
|
||||
)
|
||||
|
||||
if (NOT WASI_SDK_HOME)
|
||||
message(FATAL_ERROR
|
||||
"can not find wasi-sdk. "
|
||||
"please download it from "
|
||||
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz "
|
||||
"and install it under /opt/wasi-sdk"
|
||||
)
|
||||
endif()
|
||||
|
||||
#
|
||||
# check clang version
|
||||
execute_process(COMMAND
|
||||
${WASI_SDK_HOME}/wasi-sdk/bin/clang --version
|
||||
OUTPUT_VARIABLE clang_full_version_string
|
||||
)
|
||||
string(REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1"
|
||||
CLANG_VERSION_STRING ${clang_full_version_string}
|
||||
)
|
||||
message("cur clang version is ${CLANG_VERSION_STRING}")
|
||||
if(CLANG_VERSION_STRING VERSION_LESS 11.0)
|
||||
message(FATAL_ERROR
|
||||
"please install latest wai-sdk to get a clang-11 at least"
|
||||
)
|
||||
endif()
|
||||
|
||||
################ BINARYEN ################
|
||||
find_program(WASM_OPT
|
||||
NAMES wasm-opt
|
||||
@ -55,7 +87,10 @@ ExternalProject_Add(av1
|
||||
&& ${CMAKE_COMMAND} -E echo "Copying pre-installed CMakeLists.txt"
|
||||
&& ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.avx_wasm.txt CMakeLists.txt
|
||||
&& git apply ../av1-clang.patch
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_CURRENT_SOURCE_DIR}/../cmake/toolchain.cmake ${CMAKE_CURRENT_SOURCE_DIR}/av1
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND}
|
||||
-DWASI_SDK_PREFIX=${WASI_SDK_HOME}/wasi-sdk
|
||||
-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_HOME}/wasi-sdk/share/cmake/wasi-sdk.cmake
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/av1
|
||||
BUILD_COMMAND make testavx_opt
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy testavx.opt.wasm ${CMAKE_CURRENT_BINARY_DIR}/testavx.wasm
|
||||
)
|
||||
|
||||
@ -8,21 +8,7 @@ WebAssembly with simd support and run it with iwasm.
|
||||
|
||||
please refer to [installation instructions](../README.md).
|
||||
|
||||
## Build with EMSDK
|
||||
|
||||
just run the convenience script:
|
||||
|
||||
```bash
|
||||
./build.sh
|
||||
```
|
||||
|
||||
it is going to build wasm-av1 and run it with iwasm, which basically contains the following steps:
|
||||
- hack emcc to delete some objects in libc.a
|
||||
- patch wasm-av1 and build it with emcc compiler
|
||||
- build iwasm with simd and libc-emcc support
|
||||
- run testav1.aot with iwasm
|
||||
|
||||
## Or build with clang-11 and wasi-sdk
|
||||
## Build with wasi-sdk
|
||||
|
||||
``` shell
|
||||
$ mkdir build && cd build
|
||||
@ -32,6 +18,20 @@ $ make
|
||||
$ ls testavx.wasm
|
||||
```
|
||||
|
||||
## Or build with EMSDK
|
||||
|
||||
just run the convenience script:
|
||||
|
||||
```bash
|
||||
./build.sh
|
||||
```
|
||||
|
||||
the script builds wasm-av1 and runs it with iwasm, which basically contains the following steps:
|
||||
- hack emcc to delete some objects in libc.a
|
||||
- patch wasm-av1 and build it with emcc compiler
|
||||
- build iwasm with simd and libc-emcc support
|
||||
- run testav1.aot with iwasm
|
||||
|
||||
### Run workload
|
||||
|
||||
Firstly please build iwasm with simd support:
|
||||
@ -46,11 +46,9 @@ $ make
|
||||
Then compile wasm file to aot file and run:
|
||||
|
||||
``` shell
|
||||
$ cd <wamr dir>/wamr-compiler/build
|
||||
$ ./wamrc --enable-simd -o testavx.aot testavx.wasm
|
||||
$ cd <wamr dir>/product-mini/platforms/linux/
|
||||
$ # copy sample data like <wamr dir>/samples/workload/wasm-av1/av1/third_party/samples/elephants_dream_480p24.ivf
|
||||
$ # copy testavx.aot
|
||||
$ # make sure you declare the access priority of the directory in which the sample data is
|
||||
$ ./iwasm --dir=. ./testavx.aot ./elephants_dream_480p24.ivf
|
||||
```
|
||||
$ cd <dir of testavx.wasm>
|
||||
$ <wamr dir>/wamr-compiler/build/wamrc --enable-simd -o testavx.aot testavx.wasm
|
||||
# copy sample data like <wamr dir>/samples/workload/wasm-av1/av1/third_party/samples/elephants_dream_480p24.ivf
|
||||
# make sure you declare the access priority of the directory in which the sample data is
|
||||
$ <wamr dir>/product-mini/platforms/linux/build/iwasm --dir=. testavx.aot elephants_dream_480p24.ivf
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user