Skip to content

Commit

Permalink
Release 1.11 -- see changelog
Browse files Browse the repository at this point in the history
	new file:   ANMLZoo
	new file:   Donut/donut.anml
	new file:   Donut/donut.input
	modified:   Makefile
	modified:   VASim
	modified:   VASimVis
	deleted:    demo.png
	modified:   include/SigmaJSONWriter.h
	modified:   js/sigma_script.js
  • Loading branch information
Daniel Brian Kramp committed Jul 12, 2017
1 parent a6e26e2 commit 8d626a2
Show file tree
Hide file tree
Showing 22 changed files with 1,119 additions and 3,041 deletions.
1 change: 1 addition & 0 deletions ANMLZoo
Submodule ANMLZoo added at 86dac3
29 changes: 29 additions & 0 deletions Donut/donut.anml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<anml version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<automata-network id="donut">
<state-transition-element id="__0__" symbol-set="[Dd]" start="all-input">
<activate-on-match element="__1__"/>
</state-transition-element>
<state-transition-element id="__1__" symbol-set="[o]">
<activate-on-match element="__2__"/>
<activate-on-match element="__5__"/>
</state-transition-element>
<state-transition-element id="__2__" symbol-set="[n]">
<activate-on-match element="__3__"/>
</state-transition-element>
<state-transition-element id="__3__" symbol-set="[u]">
<activate-on-match element="__4__"/>
</state-transition-element>
<state-transition-element id="__4__" symbol-set="[t]">
<report-on-match reportcode="400"/>
</state-transition-element>
<state-transition-element id="__5__" symbol-set="[u]">
<activate-on-match element="__6__"/>
</state-transition-element>
<state-transition-element id="__6__" symbol-set="[g]">
<activate-on-match element="__7__"/>
</state-transition-element>
<state-transition-element id="__7__" symbol-set="[h]">
<activate-on-match element="__2__"/>
</state-transition-element>
</automata-network>
</anml>
1 change: 1 addition & 0 deletions Donut/donut.input
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Donut dognutdoughynut nmkdoughnutdont do nut
6 changes: 1 addition & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,5 @@ CXXFLAGS= -O3 -Iinclude -I$(LIBS)/include -L$(LIBS)/lib $(WT) -I$(MNRL)/include
CC=g++-5




OBJ=VASimVis.cc $(LIBVASIM) $(JSON11_HPP)

all: $(OBJ)
all:
$(CC) -o $(TARGET) VASimVis.cc $(LIBVASIM) $(LIBMNRL) $(CXXFLAGS)
28 changes: 0 additions & 28 deletions Makefile~

This file was deleted.

55 changes: 55 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# ANMLZoo Automata Processing Benchmark Suite

IMPORTANT: if using ANMLZoo for experiments, please see ERRATA below...

## Description
High-performance automata-processing engines are traditionally evaluated using a limited set of regular expressionrulesets. While regular expression rulesets are valid real-world examples of use cases for automata processing, they represent a small proportion of all use cases for automata-based computing. With the recent availability of architectures and software frameworks for automata processing, many new applications have been found to benefit from automata processing. These show a wide variety of characteristics that differ from prior, popular regular-expression benchmarks, and these should be considered when designing new systems for automata processing.
This paper presents ANMLZoo, a benchmark repository for automata-based applications as well as automata engines for both von-Neumann and reconfigurable dataflow architectures.

## Errata
Since the publication of ANMLZoo, we have found a few issues with the construction of the benchmarks. We've listed the main issues below that may impact your experimentation with suggested ways to get around this. We will be updated the benchmark suite with a Version 1.1 Summer 2017 that addresses most of these issues.

1. **The prefix merging algorithm in VASim had a bug that missed some minimization opportunities:** We have since fixed this bug and are now able to properly minimize applications like SPM. SPM even in the ANMLZoo paper had a node count of over 100,000! We originally included the application because the Micron compiler was able to identify these optimization opportunities.

2. **RandomForest was incorrectly generated:** RandomForest was originally incorrectly generated for the ANMLZoo paper. We recognized this very early on and we have already generated a new application that fits within a single chip. I have noted this in the README for that application. The new application is rf.1chip.anml, while the old application used for the paper remains in the repo. This is discussed in the RandomForest README.

3. **Some ANMLZoo benchmarks were improperly labeled as compiling to 1 chip:** To generate ANMLZoo "standard candle" automata, we increased the widget count until the number of "rectangular blocks" used by the Micron compiler violated the number of available rectangular blocks on the Micron D480 chip. Unfortunately, this was not the correct way to identify if an automata used more than 1 chip's worth of resources. Consequently, we now know that applications such as Levenshtein, EntityResolution, Snort, and ClamAV actually require 1.5 chips (or 3 half cores). We are looking to remedy this in Version 1.1.

## TODO
The benchmark suite has known mistakes outlined int the Errata. However, there are features that many users have requested that we plan to add in future versions. They are outlined below. If you would like a feature or application added to ANMLZoo, please create an issue ticket with a full description and use case of your feature.

- Fix Erratum #3.
- Add code for ANML emission.
- Support [MNRL](https://github.com/kevinaangstadt/mnrl) file format.
- Add more inputs for training and testing of automata optimization algorithms and automata processing engines and architecture development.
- Add more automata within each "benchmark" label. Applications like Hamming and Levenshtein have huge amount of play in how they are generated. They were originally generated with semi-arbitrary parameters and so other applications with other dimensions could be added.

## Benchmark Contributors

Jack Wadden<br>
Vinh Dang<br>
Deyuan Guo<br>
Elaheh Sadredini<br>
Ke Wang<br>
Chunkun Bo<br>
Nathan Brunelle<br>
Tom Tracy II<br>
Matt Grimm<br>

This suite was originally compiled by Jack Wadden ([email protected]).

If you use this benchmark suite in a publication, please use the following citation:

Wadden, J., Dang, V., Brunelle, N., Tracy II, T., Guo, D., Sadredini, E., Wang, K., Bo, C., Robins, G., Stan, M., and Skadron, S. "ANMLZoo: A Benchmark Suite for Exploring Bottlenecks in Automata Processing Engines and Architectures." 2016 IEEE International Symposium on Workload Characterization (IISWC'16). IEEE, 2016.

```
@inproceedings{ANMLZoo,
title={{ANMLZoo: A Benchmark Suite for Exploring Bottlenecks in Automata Processing Engines and Architectures}},
author={Wadden, Jack and Dang, Vinh and Brunelle, Nathan and Tracy II, Tom and Guo, Deyuan and Sadredini, Elaheh and Wang, Ke and Bo, Chunkun and Robins, Gabriel and Stan, Mircea and Skadron, Kevin},
booktitle={Proceedings of the IEEE International Symposium on Workload Characterization (IISWC)},
year={2017},
}
```

## License
Each benchmark and automata processing engine in ANMLZoo is individually licensed. Please refer to the benchmark directories for individual license files.
2 changes: 1 addition & 1 deletion VASim
Submodule VASim updated 2 files
+10 −0 include/automata.h
+129 −62 src/automata.cpp
Binary file modified VASimVis
Binary file not shown.
Loading

0 comments on commit 8d626a2

Please sign in to comment.