-
Notifications
You must be signed in to change notification settings - Fork 0
Surveytools
This wiki page documents the script suite inside the surveytools folder.
-
surveyis the main entrance script, able to invoke the functionality of the various sub-modules, as decided by issuing command line switches, the most notable being:from
--usage:
Collects and plots all survey data
Invoke with one or more of the following flags:
--clean Clean up the various build files
--setup Setup necessary GHC installations and build benchmarks
--benchmark Runs benchmarks and generates graphs
--plot Plot the lastest benchmark execution
--revdeps Count reverse dependencies
--thebigbutton Alias for '--setup --benchmark --plot'
--nightly Alias for '-- clean --setup --benchmark --plot'
--usage
-
The
setupfolder hosts the setup scriptinstall-hsenv, that prepares execution environments,hsenvs, to compile the benchmarks inside. To do this it uses a small haskell utility calledshaketool(residing insetup/shaketool), which is capable of cloning/pulling git repositories and installing cabal packages. -
the
benchmarkrunnerfolder hosts the benchmark execution code, consisting of two parts: an executablebenchmarkrunner, and the scriptrun.sh. Thebenchmarkrunnerprogram is a thin wrapper aroundCriterion, that runs our benchmarks. Any program that adheres to our simpleout:OK - (in:<input> - out:RESULT <output>)* - in:EXIT - out:OKprotocol onstdinandstdoutare benchmarkable by thebenchmarkrunner.The
run.shscript is invoked asrun.sh <benchmark> <platform> <logtag>, eg.run.sh binomial-gpu Accelerate manualtestto run theAccelerateimplementation of thebinomial-gpubenchmark. It works by sourcing the filesbenchmarks/<benchmark>/<platform>/{setup,run}.sh(with obvious purposes). This file is provided a shell environment with functions defined that facilitate building cabal files inside hsenvs, and running the resulting executables with consistent benchmark parameters.Thus, every benchmark must have local
run.shandsetup.shscripts to be executable by the surveytools infrastructure.