- Owen Stephens - [email protected]
- Pawel Sobocinski - [email protected]
- Requires recent GHC and cabal to be installed.
- Developed with GHC 7.6.3 and cabal 1.18.1.12
- Tested with GHC 7.8.4 and cabal 1.22.0.0
- Tested with GHC 7.10.3 and cabal 1.22.4.0
- run
cd PATH_TO_PENROSE_REPOSITORY
- run
cabal sandbox init
- run
cabal sandbox add-source mtbdd
- run
cabal install --only-dependencies --enable-tests --enable-benchmarks
- run
cabal configure && cabal build
Penrose then exists as ./dist/build/Penrose/Penrose
Penrose accepts net decompositions in the .netdecomp format. Several examples are provided in the examples folder.
Usage:
./dist/build/Penrose/Penrose OUTPUT_TYPE PATH_TO_EXAMPLE
where the accepted values of OUTPUT_TYPE are shown by passing --help
to Penrose
In-built benchmarking against punf/clp1, cunf/cna3, LOLA4, MARCIE5 and TAPAAL6 are
enabled by passing the --enable-benchmarks
flag to cabal configure in step 6. above.
A yet-to-be-diagnosed stack overflow occurs when running the benchmarks, so the Haskell run time system must be instructed to allow larger stacks. This is done when running the benchmarks as follows:
./dist/build/Benchmark/Benchmark TYPE [Benchmark] +RTS -K200M
which instructs the Haskell RTS to use 200M of stack, which is sufficient. Pass --help to Benchmark to see the flags for TYPE. An optional sequence of benchmark names can be passed, to restrict which benchmarks are run. E.g. to run LOLA on the buffer and philo examples, run:
./dist/build/Benchmark/Benchmark LOLA buffer philo +RTS -K200M
Or to run Penrose (available without installing other tools):
./dist/build/Benchmark/Benchmark PENROSE buffer philo