Skip to content

Runtime benchmarks for testing, profiling, estimation, and scheduling experiments

License

Notifications You must be signed in to change notification settings

SilverLineFramework/benchmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Benchmarks

The following benchmark suites are included, some of which required modifications to work with WASM/WASI:

  • polybench: Polybench; 90 benchmarks (30 benchmarks x 3 sizes)
  • mibench: Mibench; 35 benchmarks (18 benchmarks having small and large sizes except one)
  • cortex: UCSD CortexSuite, excluding the San Diego Vision Benchmark suite; 24 benchmarks (8 benchmarks x 3 sizes)
  • vision: San Diego Vision Benchmark Suite; 27 benchmarks (9 benchmarks x 3 sizes)
  • libsodium: Libsodium Benchmarks, available pre-compiled here; 70 benchmarks (15 benchmark types, various configurations per type)
  • apps: benchmarks made from common real-world applications:
    • python: the CPython interpreter compiled to WASM running 12 python scripts taken from the Codon benchmark suite. Note that WASM/WASI-compiled python currently does not support pip-installed modules; complicated imports are also somewhat flaky.
    • ffmpeg: FFmpeg standalone executable compiled to WASM, supporting zlib and x264 with 6 different operations.
    • lua: Lua interpreter, running 5 different scripts; requires WALI instead of only WASI to run.
    • sqlite3: SQLite running 5 different queries; requires WALI.

Setup

  1. Install the WASI SDK:

    wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz
    tar xvf wasi-sdk-20.0-linux.tar.gz
    sudo cp -r wasi-sdk-20.0 /opt/wasi-sdk
  2. Build benchmarks:

    • make: build all benchmarks; saved to ./wasm. Any necessary data files are saved to ./data. Since paths are hard-coded into benchmarks, benchmarks must be executed with ./benchmarks as a WASI pre-opened directory (or equivalently, wasm and data in WASI working directory).
    • MODE=native make: build all benchmarks natively using gcc for comparison; saved to ./native.
    • make {benchmark}: make benchmark suites individually.
    • make clean: remove ./wasm and ./data.