-
Notifications
You must be signed in to change notification settings - Fork 8
Home_eac3
You are on EACirc 3 wiki, for current version, go to home site.
EACirc is a framework for automatic problem solving. It uses supervised learning techniques based on evolutionary algorithms to construct and optimize software circuits in order to solve the given problem.
Problems are solved by the means of hardware-like circuits - small, software-emulated circuits consisting of gates and interconnecting wires transforming input data into desired output data. The layout of these circuits is designed randomly at first. They are subsequently optimized in the process of supervised learning (inputs are provided alongside with correct outputs) until the the desired success rate is achieved.
The learning stage incorporates genetic programming principles:
- a handful of these circuits (circuit 'population') is considered simultaneously;
- each individual circuit is evaluated on the data and its 'fitness' is determined by comparison of its outputs with the expected outputs;
- individuals with low 'fitness' are deleted (survival of the fittest);
- individuals with high 'fitness' are altered ('sexiual crossover' and a small chance of 'mutation');
- the process starts over with this new 'generation' of circuits.
The EACirc framework consists of main application and several supporting tools and scripts. The modular design allows for easy addition of new problem modules ('projects') and output interpretation modules ('evaluators'). Currently, the project has following main parts:
- EACirc - the main application, constructs circuits using evolutionary principles.
- utils - set of scripts and small programs used for results processing.
-
Building instructions
Step-by-step instructions for building EACirc in MS Visual Studio, Qt Creator or GNU Make. -
Running instructions
Basic run requirements, command line arguments. -
Recommencing computation
It is possible to continue the computation wron the save state without the loss of determinism and reproducibility.
-
Framework components
Components of EACirc, globally accessible resources. -
Circuit back-end
Basic principles of circuits and their representation. -
Main computation loop
Description of main program loop, order of actions. -
Projects
Interface and requirements for project modules. -
Evaluators
Evaluator interface and description of standard evaluators. -
CUDA support
Details of CUDA support for evaluating circuits. -
Testing EACirc
Build-in self-tests using Catch testing framework. -
Known bugs
Bugs we know about but will not fix in foreseeable future. -
Third party libraries
Description, licence and credits of used third-party libraries. -
Input/Output files structure
EACirc produces number of output files containing circuits, statistics and saved state.
-
Project eStream
Security of eStream ciphers. -
Project SHA-3
Security of SHA-3 hash candidates. -
Project CAESAR
Security of authenticated encryption candidates. -
Project Files
Creating test vectors from external files.
-
Scripts
Supporting script: downloading and processing results. -
Automation tools
Oneclick documentation easing running multiple computations on CRoCS BOINC server. -
Published work
Published papers and presentations about EACirc.
The framework is developed at the Centre for Research on Cryptography and Security, Masaryk University, Brno, Czech Republic. It's licensed under MIT licence, see the file in the repository root. The project uses some third party code, licence details for these parts can be found in the LicenceReadMe file in the repository root.
-
Michal Hajas
2015-now (Java bytecode simulator) -
Karel Kubíček
2014-now (TEA) -
Jiří Novotný
2014-now (build system, CUDA core implementation) -
Ľubomír Obrátil
2014-now (automation tools) -
Zdenek Říha
2013-now (Java bytecode emulator) -
Marek Sýs
2013-now (project concept, results interpretation) -
Petr Švenda
2008-now (project lead, initial implementation) -
Martin Ukrop
2012-now (framework, CAESAR, polynomial backend)
Former:
-
Milan Čermák
2012-now (initial CUDA implementation) -
Ondrej Dubovec
2011-2012 (SHA-3 candidates testing) -
Dušan Klinec
2014-2014 (polynomial backend) -
Matěj Prišťák
2011-2012 (object model and refactoring, batch mode for BOINC via XML, eStream candidates testing) -
Tobiáš Smolka
2011-2012 (BOINC related support)
--
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
--