A work generator generates values to use as a start value of a table. Normally it sets the start and end value of the chain to the same value before feeding the chains into the device, but it is also intended as a means to load completed/half-completed chains.

These are currently implemented:

  • random
  • increment
  • file
  • lookup
  • sort
  • a51
  • limit
  • buckets

random

Uses a PRNG to generate start values

options are:

prefix=size,value
the size and value of a number of bits that shall be constant
spread
fill the work buffers with invalid made-up chains that appear to be partially complete, so that the startup time to get complete chains is zero and benchmarking is possible without waiting for an equilibrium to settle.
seed=integer
use a parameter to seed the prng and generate the same start values on each invocation
limit=bignum
only generate the amount of chains given in the argument. valid prefixes are K, M, G, k, m, g. big letters are in multiples of 1024, small letters in multiples of 1000.

increment

Each value is the successor of the previous start value.

startbits=integer
use the given amount of bits for the counter. the rest of the bits in the start value are determined by the used randomizer.

file

Read the start and end values from the disk.

options are:

startbits
bit width of the start values
endbits
bit width of the end values
truncstart=lsb|msb
truncate the start value at the least or most significant bit position
truncend=lsb|msb
truncate the end value at the least or most significant bit position
select
select a subset of the chains
prefix
the file base name of a split table file the name of the file
limit=bignum
limit the number of chains to the value in the argument. valid suffixes are K (1024), M, G, k (1000), m, g
skip=bignum
seek to a position in the source file before reading chains. valid suffixes as above.
remove_after_read
delete the file after all chains have been read
quiet
do not output the standard messages

lookup

Generate start values for chains that get generated during the lookup process

source=generator
the generator that provides the data points that should be looked up in the table. remember to add one more colon between its options

a51

Read a file and generate lookup chains at each bit position using a 64 bit segment. The number of chains generated is file_size_in_bytes * 8 - 64

input=filename
the input filename ascii the input is in hexadecimal text form.

sort

Sort the chains obtained from the sub generator.

ram=integer
the maximum of memory to allocate, in megabytes. if more data is waiting to be sorted, stxxl will be invoked which should be avoided,as it takes significantly longer.
source=generator
the subgenerator that provides the chain. do not forget extra colons.

limit

Reads only a subset of the chains provided by the subgenerator.

limit=bignum
the number of chains to read at most.
source=generator
the subgenerator from which to obtain the chains

buckets

Reads data from an ordered set of corresponding input files

ram=megabytes
the maximum amount of ram to use for in core sorting
sort
sort each bucket
prefix=filename
the files to read from. actual files then have the prefix prefix_0, prefix_1, prefix_2, ...
parts=integer
the number of buckets