/****************************************************************************** * Copyright 2021-2023, Barcelona Supercomputing Center (BSC), Spain * * This software was partially supported by the EuroHPC-funded project ADMIRE * (Project ID: 956748, https://www.admire-eurohpc.eu). * * Part of this repository (algorithm.py) is part of scord, other parts are * from ElastiSim * Copyright (c) 2022, Technical University of Darmstadt, Germany * * This software may be modified and distributed under the terms of the 3-Clause * BSD License. See the LICENSE file in the base directory for details. * *****************************************************************************/ # ElastiSim Cargo Example Project An example ElastiSim project utilizing a scheduling algorithm for malleable jobs with only I/O phases running on a crossbar topology with 128 compute nodes. The jobs have different qos requirements and transfer size. The example creates a file called "data/output/breaks.txt" with the number of SLA breaks for a given run. The file should be deleted before running the project. ## Installation To build the container required to run ElastiSim, install Docker and execute the following command: ```sh docker build -t elastisim . ``` ## Simulation To run the simulation, execute the following commands in two different sessions: ### \*nix: ```sh docker run -v $PWD/data:/data -v $PWD/algorithm:/algorithm -u `id -u $USER` --name elastisim -it --rm elastisim /data/input/configuration.json --log=root.thresh:warning docker exec -u `id -u $USER` -it elastisim python3 /algorithm/algorithm.py ``` ### Mac OS: ```sh docker run -v $PWD/data:/data -v $PWD/algorithm:/algorithm --name elastisim -it --rm elastisim /data/input/configuration.json --log=root.thresh:warning docker exec -it elastisim python3 /algorithm/algorithm.py ``` ### Windows (PowerShell): ```sh docker run -v ${PWD}\data:/data -v ${PWD}\algorithm:/algorithm --name elastisim -it --rm elastisim /data/input/configuration.json --log=root.thresh:warning docker exec -it elastisim python3 /algorithm/algorithm.py ``` The first command runs the ElastiSim simulator process and accepts two inputs: - the configuration file (JSON) - the logging level For a more detailed output change `--log=root.thresh:warning` to `--log=root.thresh:info` (caution: verbose). The second command runs the scheduling algorithm.