
=========
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     

