Skip to content
Retreet framework.
Branch: master
Clone or download
Latest commit 6e32942 Nov 10, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Sync repo. Oct 24, 2019
src Sync repo. Oct 24, 2019
test Sync repo. Oct 24, 2019
.gitignore Sync repo. Oct 24, 2019
Makefile Sync repo. Oct 24, 2019
README.md Updated readme. Nov 10, 2019
Retreet.g4 Sync repo. Oct 24, 2019
exec.sh Sync repo. Oct 24, 2019
runtest.sh Updated readme. Nov 10, 2019

README.md

Retreet

Retreet is a framework in which one can describe general recursive tree traversals, precisely represent iterations, schedules and dependences, and automatically check data-race-freeness and transformation correctness. (Details can be found in the paper.)

Installation

Dependencies

  • MONA with version >= 1.4

Compilation

  1. Install MONA on your system.
  • Here is the link to download the source package of MONA. Follow the instructions inside the package.
  • You can also get the git version by running git clone https://github.com/cs-au-dk/MONA
  1. Compile the program
  • cd to the project directory and run make

Running

Checking fusibility

./exec.sh fuse <path to unfused traversals file> <path to fused traversal file> <path to file of relationship between unfused and fused traversals>
mona <path to generated mona file>

Checking data-race-freeness

./exec.sh parallel <path to traversals file>
mona <path to generated mona file>

Some running examples

The running examples are tested on a server with a 40-core, 2.2GHz CPU and 128GB memory running Fedora 26.

  • Checking fusibility of a pair of size-counting traversals. (indeed fusible)
./runtest.sh fuse size_counting_fusible
  • Checking fusibility of a pair of size-counting traversals. (indeed infusible)
./runtest.sh fuse size_counting_infusible
  • Checking fusibility of a pair of tree mutaion traversals. (indeed fusible)
./runtest.sh fuse tree_mutation
  • Checking fusibility of three CSS minification traversals. (indeed fusible)
./runtest.sh fuse css
  • Checking fusibility of a cycletree routing algorithm. (indeed fusible)
./runtest.sh fuse cycletree
  • Checking fusibility of a pair of size-counting traversals. (No data-race)
./runtest.sh parallel size_counting
  • Checking fusibility of a cycletree routing algorithm. (Do have data-race)
./runtest.sh parallel cycletree
You can’t perform that action at this time.