Skip to content

Configuration file (JSON)

Karel Kubicek edited this page Feb 13, 2017 · 9 revisions

root element: EACIRC

Project-specific settings are added separate subtrees linked to the root element. Their structure is described in project documentation.

Back-end specific settings are added as separate subtrees linked to the root element (GATE_CIRCUIT, POLYNOMIAL_CIRCUIT). Their structure is described in back-end documentation.

  • NOTES developer notes (descriptive only)
  • MAIN
    • CIRCUIT_REPRESENTATION
      determines which back-end will be used
      1: using gate circuits
      2: using polynomially represented circuit
    • PROJECT
      determines which project will be used to generate test vectors
      Note: Particular project constatns can be found in project documentation.
    • EVALUATOR
      determines the algorithm to use when evaluating circuits
      Note: Evaluator constants and description can be found in evaluator description.
    • EVALUATOR_PRECISION
      value used by evaluator (typically a precision value, e.g. number of categories)
    • RECOMMENCE_COMPUTATION
      1: program recommences computation from saved state (=> implies load_initial_population)
      0: program starts from clean initial state
    • LOAD_INITIAL_POPULATION
      1: program load initial population from file
      0: program randomly creates initial population
    • NUM_GENERATIONS
      number of generation to compute in evolution
    • SAVE_STATE_FREQ
      how often to save state of the computaion (immediately after saving the state, GAlib is reseeded to retain determinism and repeatability)
    • CIRCUIT_SIZE_INPUT
      number of circuit input bytes (for all backend representations)
    • CIRCUIT_SIZE_OUTPUT
      number of circuit output bytes (for all backend representations)
  • OUTPUTS
    • VERBOSITY
      0-4: How detailed should the debugging info be (logs, output files, ...). Detailed information about verbosity levels in outputs specification
    • INTERMEDIATE_CIRCUITS
      1: save best circuits from intermediate generations
      0: do not save intermediate circuits
    • ALLOW_PRUNNING
      1: when saving circuits, save also prunned version of each (version without useless functions and connectors)
      0: only save full circuits, do not prune
    • SAVE_TEST_VECTORS
      1: save all the generated test vectors to a binary file for further processing
      0: do not save test vectors to file
  • RANDOM
    • USE_FIXED_SEED
      1: fixed seed loaded from these settings should be used
      0: initial system should be system-generated at the beginning of the computation
    • SEED
      numerical value of seed to use equal or less then ULONG_MAX (~4 294 967 295)
      seed value is ignored if 0 (even if USE_FIXED_SEED = 1)
    • BIAS_RNDGEN_FACTOR
      probability of generating 1 over 0 in bias RNG (number 0%-100%)
    • USE_NET_SHARE
      1: tries to invoke external commands mapping network share with random data (used on Metacentrum machines)
      0: do not try to map network share
    • QRNG_PATH
      path to files with random data, relative from the executed binary or absolute
      Note: Path must end with a directory separator.
      only first 10 MB of each file are used (or less if file is smaller)
      file names follow pattern Random.bin where 0 <= <= maxIndex and has left zeroes up to width of maxIndex
      more than one path can be entered, separated by semicolon (in this case, they are considered as alternatives)
    • QRNG_MAX_INDEX
      maximal index of random data file (not total number of files!)
  • CUDA
    • ENABLED
      1: CUDA support enabled
      0: CUDA support disabled
    • TBD
  • GA
    • EVOLUTION_OFF
      1: evolution is off, test vector generation and evolution is done every generation (=> implies load_initial_population)
      0: evolution on
    • POPULATION_SIZE
      number of genomes in a population
    • REPLACEMENT_SIZE
      number of individuals to replace each generation (use ~2/3 POPULATION_SIZE)
    • PROB_MUTATION
      probability of genome mutation (number between 0.0 and 1.0)
    • PROB_CROSSING
      probability of genome crossing (number between 0.0 and 1.0)
    • MUTATE_FUNCTIONS
      1: allow changing functions when performing mutation
      0: forbid changing functions
    • MUTATE_CONNECTORS
      1: allow changing connectors when performing mutation
      0: forbid changing connectors
  • TEST_VECTORS
    • INPUT_LENGTH
      length of the test vectors in bytes
    • OUTPUT_LENGTH
      length of the expected outputs in bytes
      Note: This may be different than circuit output size.
    • SET_SIZE
      number of test vectors in a test set
    • SET_CHANGE_FREQ
      number of generations to wait to regenerate test vectors
    • SET_CHANGE_PROGRESSIVE
      1: change test vectors progressively, more often in the beginning and less often in the end
      0: change test vectors periodically as set by TEST_VECTOR_CHANGE_FREQ
      Note: Progressive test vector changing does not support state saving.
    • EVALUATE_BEFORE_TEST_VECTOR_CHANGE
      1: fitness data is written to file just before test vector change
      0: fitness data is written to file after changing test vectors
    • EVALUATE_EVERY_STEP
      evaluate population after every evolution step
      Note: By default, population is evaluated only when test vectors are regenerated.
Clone this wiki locally