Federated Learning Frugality and Efficiency via Simulation (FaLaFEℓS 🧆).
├── beagle Analysis tool making use of the fryer and the simulator
├── diagrams
├── fryer Tool and library to manage Simgrid platforms and FaLaFEℓS config files
├── simulator The simulator based on Simgrid
│ ├── cmake Contains cmake utils to find the libraries
│ ├── doc Simulator documentation
│ └── src Simulator source code
└── xml
├── fried
├── platform
└── raw
The beagle and the fryer are built with Cargo which is Rust's package manager.
The simulator is developed in C++ and we use CMake to build it.
You can either use docker and docker-compose to build everything, or build it from source.
Using docker-compose:
cd falafels
docker-compose buildTwo images will be built: falafels-simulator that only contains the simulator itself, and falafels-beagle that packages the simulator, the fryer and the beagle.
Download Simgrid directly from their repository and checkout this specific commit:
git clone https://framagit.org/simgrid/simgrid.git
git checkout 534ecd55c0558492fff7560baa516b78f971f20aSimgrid release 3.35 is not working because of some bugs and features that are only implemented into recent developments.
Take a look at this page to download Simgrid dependencies. Here we only use mandatory ones.
Then compile and install:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr \
-Denable_compile_optimizations=ON \
-Denable_lto=OFF \
-Denable_smpi=OFF \
-Denable_documentation=OFF \
-Denable_python=OFF
make -j $(nproc)
make install
# You may have to re-link libraries
sudo ldconfigBuild the simulator:
cd simulator
mkdir build
cd build
cmake ..
make
make installTest a run:
make && ./main ../xml/simgrid-platform.xml ../xml/fried-falafels.xmlSee Rust installation to install Rust and Cargo.
The following dependencies are required to build the beagle: pkg-config libssl-dev
cd beagle
cargo install --path .Some experiments can be found in the folder experiments and you can run them yourself.
cd experiments/evolution/simulation_time_criteria/
./exec-w-docker.sh
# or without docker
./exec.sh