Skip to content

j-c-w/APSim

 
 

Repository files navigation

APSim

APSim is an automata processing simulator, implemented in python. It supports many essential automata compiling features such as automata minimization, automata transformation, fan in/out constraint, connected components extraction, static and run-time analysis, etc. APSim uses NetworkX as its underlying data straucture to maintain the automataon as a graph and run automaton processing algorithms to reshape the underlying graph.

Requirements

External dependencies: g++, swig, python OS: Linux, mac OS

  1. Clone a fresh copy of the git APSim repository (git clone -b ASPLOS_AE https://github.com/gr-rahimi/APSim.git).

  2. Download and Install Anaconda (python 2.7)

  3. Install the following python packages using all available in Anaconda repositories:

    sortedcontainers, numpy, matplotlib, pathos, networkx, deap, tqdm, Jinja2, pygraphviz

    conda install -c conda-forge sortedcontainers matplotlib pathos deap tqdm

    conda install -c anaconda jinja2 pygraphviz networkx pygraphviz numpy

Install

  1. Go to the CPP folder and run the compile script with python include directoy path. For example:

    ./compile ~/anaconda2/include/python2.7/

  2. Add APSim to your PYTHONPATH

    export PYTHONPATH=$PYTHONPATH:/home/foo/APSim

  3. Clone a fresh copy of ANMLZoo

    git clone https://github.com/gr-rahimi/ANMLZoo.git

  4. Update the variable ANMLZoo's address path in APSim's module automata/AnmalZoo/anml_zoo.py variable _base_address

Usage

There are some scripts available in the "Example" folder replicating main experiments in the paper. Run each of them using the following command python <script name>

References

Please reference the following papers if you use the tool:

  1. Elaheh Sadredini, Reza Rahimi, Marzieh Lenjani, Mircea Stan, and Kevin Skadron. "FlexAmata: A Universal and Efficient Adaption of Applications to Spatial Automata Processing Accelerators." The 25th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2020.

  2. Elaheh Sadredini, Reza Rahimi, Marzieh Lenjani, Mircea Stan, and Kevin Skadron. "Impala: Algorithm/Architecture Co-Design for In-Memory Multi-Stride Pattern Matching", The 26th IEEE International Symposium on High-Performance Computer Architecture (HPCA), 2020.

  3. Reza Rahimi, Elaheh Sadredini, Mircea Stan, and Kevin Skadron. "Grapefruit: An Open-Source, Full-Stack, and Customizable Automata Processing on FPGAs", The 28th IEEE International Symposium on Field-Programmable Custom Computing Machines (FCCM), 2020.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 96.2%
  • Shell 2.0%
  • C++ 1.5%
  • Other 0.3%