Coder Social home page Coder Social logo

avinashmehtadelhi / map Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sparcians/map

0.0 0.0 0.0 13.01 MB

Modeling Architectural Platform

License: Apache License 2.0

Shell 0.32% JavaScript 3.87% C++ 80.72% Python 12.53% Perl 0.25% CSS 0.22% Makefile 0.01% HTML 0.30% CMake 1.10% Batchfile 0.07% Cython 0.61%

map's Introduction

MAP - Modeling Architectural Platform

This is a framework designed and built by expert modeling/simulation engineers in the industry. Its purpose is to provide a set of classes, tools, and flows to aid in modeling/simulation of complex hardware for the purpose of performance analysis and better hardware designs.

These classes and tools are also designed to work with existing platforms like Gem5 and SystemC while providing more abstract and flexible methodologies for quick analysis and study.

MAP is broken into two parts:

  1. Sparta -- A set of C++ classes (C++17) used to construct, bind, and run full simulation designs and produce performance analysis data in text form, database form, or HDF5. It's a modeling framework.
  2. Helios -- A set of python tools used to visualize, analyze, and deep dive data generated for a Sparta-built simulator. It's a visualization toolset.

Current Regression Status

CircleCI MacOS Build Status Documentation

Building MAP

Building MAP is done in two parts

  1. Sparta, the modeling framework: build sparta only in the sparta folder
  2. Argos, the transaction viewer in Helios in the helios folder. Note that to build and use helios, you will need sparta built and installed somwehere on your system.

The MAP repository has numerous dependencies, which are listed in a conda recipe, and the versions of these libraries continuously change.

However, with the use of the conda recipe, users can set up a conda environment that will build and run the tools found in this repository.

This guide assumes the user is not familiar with conda nor has it installed and would like to build everything (not just sparta).

  1. If conda is not installed, install it
  2. Activate conda conda activate
  3. Go to the root of MAP
    • cd map
  4. Install JSON and YAML parsers
    • conda install -c conda-forge jq
    • conda install -c conda-forge yq
  5. Create a sparta conda development environment
    • ./scripts/create_conda_env.sh sparta dev
  6. Activate the environment
    • conda activate sparta
  7. To build Sparta framework components:
    • conda activate sparta
    • cd map/sparta; mkdir release; cd release
    • cmake -DCMAKE_BUILD_TYPE=Release ..
    • make
    • cmake --install . --prefix $CONDA_PREFIX
  8. To build Helios/Argos transaction viewer:
    • conda activate sparta
    • cd map/helios; mkdir release; cd release
    • cmake -DCMAKE_BUILD_TYPE=Release ..
    • make
    • cmake --install . --prefix $CONDA_PREFIX

A few interesting cmake options to help resolve dependencies are:

For both Sparta and Helios:

  • -DBOOST_ROOT=<BOOST_LOCATION>: Custom Boost location
  • -DCMAKE_INSTALL_PREFIX=: Install prefix, defaults to a system wide location normally so you can use this for a local install in a home folder for example.

Helios only:

  • -DSPARTA_SEARCH_DIR=<SPARTA_INSTALLED_LOCATION>: Use this to ensure helios finds Sparta, when you installed it in a non-default location Not providing this will try and find sparta in the map source tree, but this might fail, if you did not build in a folder named release
  • -DPython3_ROOT_DIR=<PYTHON_LOCATION>: Not often needed but useful to point to the right python if you are not in a conda env)

Updating Regression/Build Environments for CI

CI files are generated when the command conda smithy rerender is run inside a MAP clone. That command uses the following files to control the generation of the CI-specific control files:

  • conda-forge.yml - defines which platforms you want to support and some other higher-level things
  • conda.recipe/conda_build_config.yaml - defines lists of values for variables that are used in meta.yaml
  • conda.recipe/meta.yaml - uses variables (stuff inside {{ varname }} double curlies)

To update versions of OSes, edit the following file: https://github.com/sparcians/map/blob/master/conda.recipe/conda_build_config.yaml and then run conda smithy rerender.

Install conda smithy instructions:

conda install -n root -c conda-forge conda-smithy
conda install -n root -c conda-forge conda-package-handling

map's People

Contributors

klingaard avatar timsnyder avatar bdutro avatar avinabadasgupta avatar vikramkapoor avatar furuame avatar topchangwatchaisifive avatar kathlenehurt-sifive avatar david-murrell avatar eabsi5 avatar alefelbsc avatar dbmurrell avatar michaelschoenfelder-siv avatar benoy-sifive avatar davidsifive avatar bdutro-sv avatar billy4195 avatar jackjchen avatar shuzhih avatar sgundoji avatar robbellphd avatar avinashmehtadelhi avatar dingiso avatar lihsinyi avatar peter-d avatar h0lyalg0rithm avatar tvandera avatar jerinjoy avatar criusx avatar timsnyder-siv 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.