Note: This github project is a fork from https://code.google.com/p/fadse/. I, Stefan Feilmeier, migrated the project to Maven, restructured the source code into ro.ulbsibiu.fadse namespace, did some housekeeping and am developing a simulator to optimize prediction accuracy for FEMS. All credits for FADSE go to the original authors.
From the original project description:
FADSE - Framework for Automatic Design Space Exploration. This framework is trying to include as much ADSE algorithms as possible, to offer connectors to existing computer simulators (M5, GEMS, Multi2sim, NS3, etc.) and to run in parallel the design space exploration process.
If you are using FADSE in your research please cite my PhD thesis: Horia Calborean - "Multi-Objective Optimization of Advanced Computer Architectures using Domain-Knowledge" PhD Thesis, “L. Blaga” University of Sibiu, November 25th 2011 (PhD supervisor: prof. univ. dr. ing. Lucian Vintan) Thesis BibTex
FADSE is currently able to:
- perform automatic design space exploration using well known algorithms (tested with NSGA-II, SPEA2, SMPSO, OMOPSO; other available are: AbYSS, PESA2, FastPGA and many others from the jMetal library)
- run the simulation in a distributed manner on multiple computers
- fully integrated with the GAP simulator and GAPtimize code optimization tool, M-SIM3, M-SIM2 and UniMap simulators
- partial integration (not all the parameters are supported) with: M5, Multi2Sim
- included metrics: hypervolume (and hypervolume two set difference), 7 point average distance, coverage, hypervolume comparison between multiple runs, number of unique individuals generated by the algorithm, etc (see Compute Metrics with FADSE).
- included monitoring application that enables the user to observe the progress of the algorithm
- uses MySQL for database support (results reuse of already simulated configurations)
- tested on: commodity networks (LAN), Windows based supercomputers, Linux based HPC
- reliable against faulty networks, faulty clients, faulty simulators
- supported parameters: arithmetic/geometric progression, list of strings, boolean
- relations between parameters are also permitted (if p0==false THEN p1 and p2 are invalid)
- fuzzy relations can be imposed between parameters (if p0 is small AND p2 is medium THEN p1 is large) - these rules might help the algorithm obtain a faster convergence
- constraints can be imposed (dl1_nsetsdl1_bsizedl1_assoc>=4096B, dl2_size>dl1_size, etc.)
Some papers using/describing FADSE (the full list available here):
- Ralf Jahr, Theo Ungerer, Horia Calborean and Lucian Vintan - Automatic Multi-Objective Optimization of Parameters for Hardware and Code Optimizations, The 2011 International Conference on High Performance Computing & Simulation(HPCS 2011), 4 – 8 July, 2011, Istanbul, Turkey. Paper selected for Outstanding paper award
- Horia Calborean, Ralf Jahr, Theo Ungerer and Lucian Vintan - Optimizing a Superscalar System using Multi-objective Design Space Exploration, 18th International Conference on Control Systems and Computer Science (CSCS 18), 24 - 27 May, 2011, Bucharest, Romania. Paper
- Horia Calborean and Lucian Vintan - Toward an efficient automatic design space exploration frame for multicore optimization, Sixth International Summer School on Advanced Computer Architecture and Compilation for Embedded Systems (ACACES), July 2010, Terrassa (Barcelona), Spain. Paper, Poster
- Horia Calborean and Lucian Vintan - An automatic design space exploration framework for multicore architecture optimizations, In Proceedings of the 9-th IEEE RoEduNet International Conference, Sibiu, Romania, June 2010. IEEE Computer Society. Paper Talk Best paper award
FADSE was presented at HiPEAC Computing Systems Week, Chamonix, April 2011 by Ralf Jahr in a presentation called FADSE and GAP Design Space Exploration for the Grid Alu Processor (GAP) with the Framework for Automatic Design Space Exploration (FADSE)
FADSE has a steep learning curve, but once you know how it works, you have a powerful tool for all kinds of optimization and design space exploration problems. The above mentioned PhD thesis by Horia Calborean is a well written and important introduction into the system.
To setup a first simulation, please follow these steps:
CREATE DATABASE fems_energy_production;
USE fems_energy_production;
CREATE TABLE tbl_simulation (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
simulator_name VARCHAR(255) NOT NULL,
parameter_string TEXT NULL,
parameter_string_hash varchar(32) DEFAULT NULL,
output_file BLOB,
updated_at TIMESTAMP NOT NULL,
feasible INT(10) UNSIGNED NOT NULL DEFAULT '1',
PRIMARY KEY(id)
);
CREATE TABLE tbl_result (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
simulation_id INTEGER UNSIGNED NOT NULL,
name VARCHAR(255) NULL,
value DOUBLE NULL,
updated_at TIMESTAMP NOT NULL,
PRIMARY KEY(id),
INDEX TBL_RESULT_FKIndex1(simulation_id),
FOREIGN KEY(simulation_id) REFERENCES TBL_SIMULATION(id) ON DELETE CASCADE ON UPDATE CASCADE
FADSE runs as a server and one or many clients. While the server is handling the overall optimization process and creation of individuals, the clients are doing the actual work. To configure your infrastructure, adjust the following files in config-directory:
- fadseConfig.ini
- neighborConfig.xml
- Create a configuration file in configs. In this example: "fems_energy_production.xml"
- nsgaii.properties
- Run the Boot-class with parameter "client"
- Run the Boot-class with parameter "fems_energy_production.xml"