Git Product home page Git Product logo

benchmarks's Introduction

Benchmarks for Keystone Enclave

Includes benchmarks for SHA256, AVL Tree, Base64 encoding, matrix mulitplication and finding the max element in an array.

For the newer benchmarks (not working at the moment due to limitations of Keystone) - Clone into the SDK directory. Run make and copy binaries into the bin folder.

In addition to benchmarks, we have analysis (see the Jupyter Notebook) on multiple runs of Keystone with an error bound on each benchmark. Using the plotly API, profiling the charts is possible.

Setup

Run Benchmarks

Set up your firesim manager for running Keystone with the instructions here if you haven't yet.

Replace the tracerv_cc.c file with the one in this repo, located in firesim/sim/src/main/cc/endpoints.

Currently, our trace parsing scripts lie in here, so you'll want to checkout your firesim repo by doing:

git remote add upstream [email protected]:keystone-enclave/keystone-firesim.git

Or for HTTPs users:

git remote add upstream https://github.com/keystone-enclave/keystone-firesim.git
git fetch
git checkout cs294-keystone

For now, you must run your programs in Firesim one-by-one. After running one program, you'll need to transfer the TRACEFILE and extract the symbols from it for usage in the Jupyter Notebook.

scp <firesim-f1-instance>:~/sim_slot_0/TRACEFILE ~/firesim/trace
cd ~/firesim/trace
./list_symbols.sh
./parse_symbols.sh
python filterSymbols.py symbols.txt symbol.list symbols.filtered.txt
python ./analyze.py TRACEFILE symbols.filtered.txt output.txt

Note that there might be an IndexError after running the analyze.py script, which should be fine.

Now you can run through the Jupyter Notebook and get fancy charts.

Failed to Load

Install python dependencies on Firesim manager (or locally)

pip install pandas matplotlib jupyter
pip install plotly cufflinks --user

Launch juypter server on Firesim manager

jupyter notebook --no-browser --port=8080

SSH tunnel into jupyter server

ssh -i firesim.pem -N -L 8080:localhost:8080 <manager host>@<manager ip>

Commands

make
make clean

benchmarks's People

Contributors

khoslaventures avatar dayeol avatar

Stargazers

Joseph Chiocchi avatar  avatar

Watchers

James Cloos avatar  avatar Ian F. avatar

Forkers

oasisunofficial

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.