-
Notifications
You must be signed in to change notification settings - Fork 8
Framework components_eac3
This page gives a brief description of EACirc's internal structure.
After running EACirc the Main source parses the command line arguments and runs alternative flows if necessary (self-testing). Then Main creates one instance of EACirc object, makes it load configration, initialize and then run. The 'run-loop' in EACirc object interleaves evolution, test vector generation, population evaluation and state saving as needed (detailed accounts here).
Evolution and basic population statistics are handled by GAlib.
Test vector generation is managed by the system of Projects. Each project represents a research topic. All projects implement the base IProject interface, but they can have many source files and separate confifuration subtrees in configuration file. For project-specific information, see the Projects section in wiki Home.
When circuits are to be evaluated, they are interpreted from their numeric form (in CircuitGenome) and then their fitness is measured using an evaluator specified in configuration file. All evaluators inherit from IEvaluator. Description of evaluator units can be found here.
Note: Evaluators are independent from projects.
To ease the programming, certain data (settings, logger, random generators, ...) and common library functions are widely available. State of these resources is managed (saved/loaded) by the framework.
After including EACglobals.h, you have access to following resources:
-
constants
Assortment of general constants (filenames, projects, evaluators, functions, ...) included from EACconstants.h. -
status words
Constants for error status with function ErrorToString(int) included from Status.h. -
random generators
-
mainGenerator
Unbiased generator intended primarily for seeding other generators and objects. It should NOT be used for basic random operations. Initialized at state initialization of EACirc according to external seed or system time. Internally impleneted as MD5-based generator. -
rndGen
All-purpose UNBIASED random generator. Initialized at state initialization of EACirc. -
biasRndGen
All-purpose BIASED random generator. Initialized at state initialization of EACirc. -
lutRndGen
All-purpose BIASED/UNBIASED random generator. Initialized at state initialization of EACirc. Randomness controled by number of ones (LUT_HW: 0 -worst, 262144 - best).
-
mainGenerator
-
mainLogger
Main EACirc logging service. Logging stream can be accessed via mainLogger.out() (use output operator <<). Flushing the stream causes written data to be prefixed by current time and then flushed. In EACirc, four main types of logs are distinguished by parameter for the out() method:- LOGGER_INFO (operation successfull, just informing the user)
- LOGGER_WARNING (operation error, recoverable - possibly something, that may just imply some error somewhere)
- LOGGER_ERROR (execution error, unrecoverable - program should end without finishing computation)
- other (no prefix in logger output, accessed by using the out() method without any parameters)
-
pGlobals
Pointer to global memory with settings, test vectors and statistics.-
settings
Data structure with EACirc and project settings (arrangement corresponding to [configuration file](Configuration-file-(XML)_eac3) with some additional extra information (see code header for further details).
Important: The consistency of extra information is maintained manually by the programmer. -
stats
Statistics of current generation. For more details, see documentation in code. -
testVectors
Arrays of unsigned chars containing current test vector set - inputs, expected outputs, circuit outputs and a boolean indicating new set has been generated. Also includes pointers to arrays used in circuit execution (located here to prevent multiple reallocations). -
evaluator
Evaluator allocated according to settings in configuration file. May point to project-specific evaluator, if such configuration is used. -
precompPow
Precomputed powers of two to make computations faster.
-
settings
Common functions used in the project are implemented in CommonFnc. For detailed description, see documentation in code.
If you only need XML datatypes (TiXMLElement, etc.) include tinyxml.h. If you need functions to load/save XML structures or functions manipulating XML structures, include utility source XMLProcessor.h (detailed documentation of these function is in the header itself).
--
You are on EACirc 3 wiki!
--
Building notes
Running notes
Recommencing computation
--
Framework components
Circuit back-ends
Main computation loop
Projects
Evaluators
CUDA support
Testing
Known bugs
Third party libraries
I/O-Files structure
Java bytecode simulator
--
Project eStream
Project SHA-3
Project CAESAR
Project Files
--