mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2024-11-26 15:32:05 +00:00
8d88471c46
LLVM PGO (Profile-Guided Optimization) allows the compiler to better optimize code for how it actually runs. This PR implements the AOT static PGO, and is tested on Linux x86-64 and x86-32. The basic steps are: 1. Use `wamrc --enable-llvm-pgo -o <aot_file_of_pgo> <wasm_file>` to generate an instrumented aot file. 2. Compile iwasm with `cmake -DWAMR_BUILD_STATIC_PGO=1` and run `iwasm --gen-prof-file=<raw_profile_file> <aot_file_of_pgo>` to generate the raw profile file. 3. Run `llvm-profdata merge -output=<profile_file> <raw_profile_file>` to merge the raw profile file into the profile file. 4. Run `wamrc --use-prof-file=<profile_file> -o <aot_file> <wasm_file>` to generate the optimized aot file. 5. Run the optimized aot_file: `iwasm <aot_file>`. The test scripts are also added for each benchmark, run `test_pgo.sh` under each benchmark's folder to test the AOT static pgo. |
||
---|---|---|
.. | ||
build.sh | ||
README.md | ||
run_aot.sh | ||
test_pgo.sh |
Introduction
libsodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.
Source: https://github.com/jedisct1/libsodium
Building
Please build iwasm and wamrc, refer to:
And install zig toolchain, refer to Install Zig from a Package Manager for how to install it.
And then run ./build.sh
to build the source code, the libsodium source code will be cloned, and test benchmarks of native version, wasm files and AOT files will be generated under libsodium/zig-out/bin
.
Running
Run ./run_aot.sh
to test the benchmark, the native mode and iwasm aot mode will be tested respectively.
Others
Refer to Performance of WebAssembly runtimes in 2023 for more about the performance comparison of wasm runtimes on running the libsodium benchmarks.