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.
External dependencies: g++, swig, python
OS: Linux, mac OS
-
Clone a fresh copy of the git APSim repository (
git clone -b ASPLOS_AE https://github.com/gr-rahimi/APSim.git
). -
Download and Install Anaconda (python 2.7)
-
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
-
Go to the CPP folder and run the compile script with python include directoy path. For example:
./compile ~/anaconda2/include/python2.7/
-
Add APSim to your PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/foo/APSim
-
Clone a fresh copy of ANMLZoo
git clone https://github.com/gr-rahimi/ANMLZoo.git
-
Update the variable ANMLZoo's address path in APSim's module
automata/AnmalZoo/anml_zoo.py
variable_base_address
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>
Please reference the following papers if you use the tool:
-
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.
-
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.
-
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.