Giter Site home page Giter Site logo

hongyunnchen / gem5-aladdin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from harvard-acc/gem5-aladdin

0.0 2.0 0.0 134.75 MB

End-to-end SoC simulation: integrating the gem5 system simulator with the Aladdin accelerator simulator.

License: BSD 3-Clause "New" or "Revised" License

Python 19.47% Shell 0.24% C 4.87% C++ 72.92% Makefile 0.13% CMake 0.01% M4 0.24% HTML 0.66% Visual Basic 0.01% Protocol Buffer 0.03% Assembly 1.16% Perl 0.16% Emacs Lisp 0.01% Java 0.02% Roff 0.04%

gem5-aladdin's Introduction

gem5-Aladdin SoC Simulator

build status

Welcome to the gem5-Aladdin SoC simulator!

This is a tool for end-to-end simulation of SoC workloads, including workloads with accelerated functions handled by fixed-function hardware blocks. With gem5-Aladdin, users can study the complex behaviors and interactions between general-purpose CPUs and hardware accelerators, including but not limited to cache coherency and memory consistency in heterogeneous platforms, data movement and communication, and shared resource contention, and how all these system-level effects impact overall application performance and speedup.

If you use gem5-Aladdin in your research, we would appreciate a citation to:

Co-Designing Accelerators and SoC Interfaces using gem5-Aladdin.
Yakun Sophia Shao, Sam (Likun) Xi, Vijayalakashmi Srinvisan, Gu-Yeon Wei, and David Brooks.
International Symposium on Microarchitecture (MICRO), June 2016. PDF

Notices

March 7th, 2017

This branch of gem5-Aladdin is based upon gem5's stable branch, which has been deprecated. All future gem5 development is taking place on its development branch instead, and there will be no new commits to gem5-stable. Therefore, gem5-Aladdin has now been merged with that development branch. This branch will remain but will no longer be actively maintained, apart from critical bug fixes.

To remain up to date with gem5-Aladdin, please see the devel branch here.

Requirements:

To build gem5-Aladdin, you will need to satisfy the dependencies of three projects: gem5, Aladdin, and Xenon.

gem5 dependencies

The main website can be found at http://www.gem5.org

A good starting point is http://www.gem5.org/Introduction, and for more information about building the simulator and getting started please see http://www.gem5.org/Documentation and http://www.gem5.org/Tutorials.

To build gem5, you will need the following software: g++ or clang, Python (gem5 links in the Python interpreter), SCons, SWIG, zlib, m4, and lastly protobuf if you want trace capture and playback support. Please see http://www.gem5.org/Dependencies for more details concerning the minimum versions of the aforementioned tools.

If you want gem5 to dump stats in SQLite databases for easy access, you will also need the sqlalchemy Python module.

Aladdin dependencies

The main Aladdin repository is here. Users are recommended to see Aladdin's README for detailed instructions on installing dependencies.

In short, Aladdin's dependencies are:

  1. Boost Graph Library 1.55.0+
  2. GCC 4.8.1 or newer (we use C++11 features).
  3. LLVM 3.4 and Clang 3.4, 64-bit
  4. LLVM-Tracer (link).

Xenon dependencies

Xenon, the system we use for generating design sweep configurations, can be found here.

Xenon requires:

  1. Python 2.7.6+
  2. The pyparsing module

Installation

Setting up the source code

  1. Clone gem5-Aladdin.
git clone https://github.com/harvard-acc/gem5-aladdin
  1. Setup the Aladdin and Xenon submodules.
git submodule update --init --recursive

Building gem5-Aladdin

gem5 supports multiple architectures, but gem5-Aladdin currently only supports x86. ARM support is planned for a future release.

Type the following command to build the simulator:

scons build/X86/gem5.opt

This will build an optimized version of the gem5 binary (gem5.opt) for the specified architecture. You do not need to build Aladdin separately, unless you want to run Aladdin on its own. You can also replace gem5.opt with gem5.debug to build a binary suitable for use with a debugger. See http://www.gem5.org/Build_System for more details and options.

The basic source release includes these subdirectories:

  • configs: example simulation configuration scripts
  • ext: less-common external packages needed to build gem5
  • src: source code of the gem5 simulator
  • system: source for some optional system software for simulated systems
  • tests: regression tests
  • util: useful utility programs and files

Running gem5-Aladdin

gem5-Aladdin can be run in two ways: standalone and CPU.

In the standalone mode, there is no CPU in the system. gem5-Aladdin will simply invoke Aladdin, but now you get access to the complete gem5 memory system (where Aladdin alone supports private scratchpad memory only). In CPU mode, gem5-Aladdin will execute a user-level binary, which may invoke an accelerator after setting the necessary input data. gem5-Aladdin uses the num-cpus command-line parameter to distinguish between these two modes.

We have multiple integration tests that users can use as a starting point for running the simulator. They are located in gem5-aladdin/src/aladdin/integration-test, with both standalone and with-cpu options. To run any integration test, simply change into the appropriate directory and execute the following command:

sh run.sh

If successful, the output of the simulator will be placed under the outputs subdirectory, while the stdout dump will be preserved in stdout.gz.

Writing an accelerated program

For an example of how to write a program that invokes an Aladdin accelerator, we recommend starting with the integration tests test_load_store (which uses caches only) and test_dma_load_store (which uses DMA only). Both of these tests prepare data on the CPU, transfer the data into the accelerator, and expect the accelerator to modify the data in a particular way and write it into the memory system.

gem5-Aladdin does not currently support full-system simulation.


Contact

Sam Xi: [email protected]

Sophia Shao: [email protected]

gem5-aladdin's People

Contributors

ahansson-arm avatar alexdutu avatar andysan avatar beckmabd avatar benash avatar binkert avatar bkp avatar bukinr avatar cdunham avatar deater avatar ennobler avatar gabemblack avatar jthestness avatar lukefahr avatar marc-orr avatar matt2909 avatar melver avatar michael-adler avatar musleh123 avatar nilayvaish avatar pdudnik avatar powerjg avatar rdreslin avatar relokin avatar steve-reinhardt avatar sticklyman1936 avatar welsasser avatar wilwan01 avatar xyzsam avatar yasuko-eckert avatar

Watchers

 avatar  avatar

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.