
=========
Unicon 12 Benchmark Suite

Requirements for Windows: At least sh.exe and make.exe on the
path. You may need the MinGW / MSYS packages.

Linux systems should be fine.

Some of these benchmarks and their output requires that Unicon has
concurrency enabled.

To check if Unicon has concurrency enabled, type "unicon -features" on
the command line and check for "concurrent threads" listed as a
feature.

If you've built Unicon from sources, concurrency may be enabled by
un-commenting the line "#define Concurrent 1" in the file define.h
located in /src/h/ in your Unicon directory.

In this directory, four automated Unicon versions of the Computer Language
Benchmark Game's programs may be run using the Unicon scripts
"run-test," "run-benchmark," "run-med" and "run-shootout." The intricacies
of these scripts are detailed below.

Instructions for building and running the benchmarks included in this
zip file:

1. In your Unicon directory under /tests/bench, run the make command
   to build independent executables, .u files for the automated
   scripts, and the .dat files required for k-nucleotide, regex-dna
   and reverse-complement.

2. Once built, the script executables run-test and run-shootout may be
   run in two ways:

        [A] One option is to run a script with no arguments
            (e.g., ./run-test or ./run-benchmark ), in order
            to run each benchmark in succession with output suppressed.

        [B] The second option is to run the script with the name of
             the benchmark you'd like to run (listed below) as the script's
             argument (e.g., ./run-test binary-trees or ./run-shootout meteor-contest),
             in order to run that specific benchmark with output suppressed.

3. Aside from the scripts, ideally the make command will build
   independent executables that may be run on their own in order to
   see output or to set your own input values. These executables do not
   have timing mechanisms built into them.

4. The included makefile has rules for each benchmark and script so
   you should be able to make each independently if desired.

**Note: When executed without arguments, the run-benchmark script
   processes the results of three sucessive runs for each benchmark
   and outputs the average of the three execution times. This results
   in longer run times than reported in the output table.

Generating Input Files
=========================

A file fasta.c was included in order to quickly generate the input
.dat files. If there is no C compiler present you may opt to generate
all input files with a Unicon program when prompted after running make
or you may generate them incrementally. Using Unicon to generate input
files can take some time so if you'd like to generate input
incrementally, you may specify which version or versions of the
benchmarks to generate input files for using the generate program
included in this package.

Examples would be:
./generate test
or
./generate benchmark
or
./generate test benchmark med
to generate a few at a time


Running the benchmarks
=========================

The data at below represents input values required for varying Unicon
benchmark runs. These include a test version, a standard, extended and
a full "benchmark shootout game website approved" run.

Approximate time takes to run each version of this benchmark suite:

run-test: 20 seconds
run-benchmark: 20 minutes
run-shootout: 24+ hours
run-med: 1 hour


Testing Purposes: run-test
-------------------------------------------------------
concord concord.test
deal 500
ipxref ipxref.test
queens 9
rsg rsg.test
binary-trees: 10
chameneos-redux: 600
fannkuch: 7
fasta: 1000
k-nucleotide: fasta output 25,000
mandelbrot: 200
meteor-contest: 1
n-body: 1000
pidigits: 500
regex-dna: fasta output 10,000
reverse-complement: fasta output 150000
spectral-norm: 100
thread-ring: 1000


Standard Unicon 12 Benchmark Run: run-benchmark
-------------------------------------------------------
concord concord.dat
deal 50000
ipxref ipxref.dat
queens 12
rsg rsg.dat
binary-trees: 14
chameneos-redux: 65,000
fannkuch: 9
fasta: 250000
k-nucleotide: fasta output 150,000
mandelbrot: 750
meteor-contest: 600
n-body: 10,0000
pidigits: 7,000
regex-dna: fasta output 700,000
reverse-complement: fasta output 15,000,000
spectral-norm: 300
thread-ring: 700,000


Full Benchmark Shootout Game Run: run-shootout
-------------------------------------------------------
binary-trees: 20
chameneos-redux: 6,000,000
fannkuch: 12
fasta: 25,000,000
k-nucleotide: fasta output 25,000,000
mandelbrot: 16,000
meteor-contest: 2098
n-body: 50,000,000
pidigits: 10,000
regex-dna: fasta output 5,000,000
reverse-complement: fasta output 25,000,000
spectral-norm: 5,500
thread-ring: 50,000,000


Alternate "n" Benchmark Shootout Game Run: run-med
-------------------------------------------------------
binary-trees: 17
chameneos-redux: 1,500,000
fannkuch: 10
fasta: 7,000,000
k-nucleotide: fasta output 3,000,000
mandelbrot: 3,500
meteor-contest: 2,098
n-body: 1,500,000
pidigits: 10,000
regex-dna: fasta output 5,000,000
reverse-complement: fasta output 25,000,000
spectral-norm: 1,300
thread-ring: 15,000,000

