fibon: A reworking of the classic nofib benchmark suite

[ benchmarking, bsd3, program ] [ Propose Tags ]

Fibon is a set of tools for running and analyzing benchmark programs. The fibon package contains the tools for benchmarking, but not the benchmarks themselves. The package will build, but will not have any benchmarks to run. A set of benchmarks can be found at http:/github.comdmpots/fibon-benchmarks Installing the cabal package will get you the following tools * fibon - runs the benchmarks * fibon-analyse - analyses the results of a benchmark run * fibon-init - generate a benchmark description from a cabal file See http://github.com/dmpots/fibon/wiki for more details


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
analyse

Build the fibon-analyse program

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0, 0.2.0
Dependencies base (>=4 && <5), bytestring (>=0.9 && <0.10), Cabal (>=1.8 && <1.9), containers, directory (>=1.0 && <1.1), filepath (>=1.1 && <1.2), hslogger (>=1.0 && <1.1), mtl (>=1.1 && <1.2), old-locale (>=1.0 && <1.1), process (>=1.0 && <1.1), statistics (>=0.6 && <0.7), tabular (>=0.2 && <0.3), text (>=0.8 && <0.9), time (>=1.1 && <1.2), vector (>=0.6 && <0.7) [details]
License BSD-3-Clause
Author David M Peixotto
Maintainer dmp@rice.edu
Category Benchmarking
Home page http://github.com/dmpots/fibon/wiki
Bug tracker http://github.com/dmpots/fibon/issues
Source repo head: git clone git://github.com/dmpots/fibon.git
this: git clone git://github.com/dmpots/fibon.git(tag v0.1.0)
Uploaded by DavidPeixotto at 2010-10-08T15:11:51Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables fibon-analyse, fibon-init, fibon-run
Downloads 2069 total (7 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-28 [all 6 reports]

Readme for fibon-0.1.0

[back to package description]
Fibon in a Flash
===================================================================
    $ git clone git://github.com/dmpots/fibon.git
    $ cd fibon
    $ git submodule update --init benchmarks
    $ cabal configure && cabal build
    $ ./dist/build/fibon-run/fibon-run

Introduction
===================================================================
Fibon is a set of tools for running and analysing benchmarks in
Haskell. Most importantly, it includes a set of default benchmarks
taken from the [Hackage][1] open source repository.

Benchmarks
------------------
Fibon makes it easy to use either the fibon benchmarks or your own
set of benchmarks. Benchmarks are stored in the
`benchmarks/Fibon/Benchmarks` directory. This directory is setup as
a [git submodule][2] which means you can easily grab the standard
suite or use a suite kept under your own source control.

Benchmark Groups
------------------
Benchamarks named and organized into groups based on the filesystem
organization. For example, a benchmark in the directory
`benchmarks/Fibon/Benchmarks/Hackage/Agum` will have the name `Agum`
an be in the benchmark group `Hackage`.

Executables
------------------
The fibon package builds three tools
  1. `fibon-run` - runs the benchmarks
  2. `fibon-analyze` - analyzes the results of a run
  2. `fibon-init` - utilty used when adding new benchmarks

Size and Tune
------------------
Fibon benchmarks can be run with two different input sizes: `Test` and
`Ref`. The `Test` size is useful to make sure that a benchmark can
run successsfully, but will not give meaningful timings.

Fibon benchmarks can be run under two different tune settings (e.g.
compiler optimization settings). The `Base` and `Peak` settings can
be configured anyway you want to make the desired comparison.

Directory Structure
--------------------
Source directories
    ./benchmarks -- benchmark code
    ./config     -- config files
    ./lib        -- common files used by several executables
    ./tools      -- source code for executables

Working directories
    ./log        -- logging output from benchmark runs
    ./run        -- working directory for benchmark runs

Getting the Benchmarks
===================================================================
The benchmarks are kept in a separate repository as a [git
submodule][2]. You can get the fibon benchmarks by updating the
submodule from within your fibon working directory

    $ git submodule update --init benchmarks

This will checkout the benchmarks from the fibon-benchmarks
repository and place them in your working copy.

Running Benchmarks
===================================================================
The available benchmarks and configurations are discovered when the
fibon package is configured. Benchmarks are searched for in the
`benchmarks/Fibon/Benchmarks` directory and configuration files are
searched for in the `config` directory. If a configuration file or
benchmark is added, you will need to re-run `cabal configure` to
make them available to the fibon-run tool.

Configuration
---------------
Fibon comes with a default configuration. The default configuration
will run all benchmarks with the `Base` setting of `-O0` and a
`Peak` setting of `-O2` on the `Ref` size. A configuration file can
be used to specify more complicated configurations.

You can get some example configuration by doing
    $ git submodule update --init config

This will checkout a repository of config files. Note that currently
these files contain some user and machine-specific configurations,
but should be a useful starting point.

You can also selectively run benchmarks, groups, sizes, and tune
settings as described below.

Running
---------------
Benchamarks are run with the `fibon-run` tool. Running `fibon-run`
with no arguments will use the default config file. An alternate
config file can be specified with the `-c` flag. Also, you can give
a list of benchmarks or groups to run on the command line. Use
`--help` to see a full list of options.

Running the benchmarks will produce some logging to standard out and
create four output files in the `log` directory.

  1. `*.LOG` - the full log of the run
  1. `*.SUMMARY` - the mean runtimes of each benchmark
  1. `*.RESULTS` - the full results (passed to `fibon-analyse`)

Analyzing Benchmark Results
===================================================================
Benchmarks can be analyzed by the `fibon-analyse` tool.

    $ fibon-analyse log/000.default.RESULTS

Adding New Benchmarks
===================================================================
TODO

Benchmark Notes
===================================================================
Ghc610
  ChameneosRedux
    Does not work with -O0. Gets "thread blocked indefinitely"
    exception

  Mandelbrot
    The Test size gives different result, but the Ref size is ok.
    Think it is just some kind of floating point wibbles.

[1]: http://hackage.haskell.org
[2]: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#submodules