You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: acknowledgment.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
---
2
2
layout: default
3
-
title: Acknowledgement
3
+
title: Acknowledgment
4
4
nav_order: 8
5
5
---
6
6
7
-
# Acknowledgement
7
+
# Acknowledgment
8
8
9
9
If you have used ElastiSim in your research or publication, please cite the original paper.
10
10
@@ -31,4 +31,4 @@ If you have used ElastiSim in your research or publication, please cite the orig
31
31
32
32
### Citation (ACM style)
33
33
34
-
Taylan Özden, Tim Beringer, Arya Mazaheri, Hamid Mohammadi Fard, and Felix Wolf. 2022. ElastiSim: A Batch-System Simulator for Malleable Workloads. In *Proceedings of the 51st International Conference on Parallel Processing (ICPP '22)*. Association for Computing Machinery, New York, NY, USA, Article 40, 1–11. [https://doi.org/10.1145/3545008.3545046](https://doi.org/10.1145/3545008.3545046)
34
+
Taylan Özden, Tim Beringer, Arya Mazaheri, Hamid Mohammadi Fard, and Felix Wolf. 2022. ElastiSim: A Batch-System Simulator for Malleable Workloads. In _Proceedings of the 51st International Conference on Parallel Processing (ICPP '22)_. Association for Computing Machinery, New York, NY, USA, Article 40, 1–11. [https://doi.org/10.1145/3545008.3545046](https://doi.org/10.1145/3545008.3545046)
Copy file name to clipboardExpand all lines: get-started/installation.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,13 +10,15 @@ nav_order: 2
10
10
## Required libraries
11
11
12
12
ElastiSim requires four libraries to be installed (or available):
13
+
13
14
-[SimGrid](https://simgrid.org/) to simulate the underlying platform
14
15
-[ZeroMQ](https://zeromq.org/) for C++ ([cppzmq](https://github.com/zeromq/cppzmq) binding) to communicate with the scheduler process
15
16
-[JSON for Modern C++](https://json.nlohmann.me/) to read input files and wrap messages (provided with ElastiSim)
16
17
-[ExprTk](https://www.partow.net/programming/exprtk/) to evaluate performance models (provided with ElastiSim)
17
18
-[Activity Indicators for Modern C++](https://github.com/p-ranav/indicators) to indicate the progress of processed jobs (provided with ElastiSim)
18
19
19
20
Depending on the scheduling interface, an additional ZeroMQ binding is required. ElastiSim currently supports a Python interface to write scheduling algorithms and therefore requires:
21
+
20
22
-[PyZMQ](https://pyzmq.readthedocs.io/) to communicate with the simulator process
Copy file name to clipboardExpand all lines: get-started/quickstart.md
+8-31Lines changed: 8 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,44 +7,21 @@ nav_order: 1
7
7
8
8
# Quickstart
9
9
10
-
The easiest way to get started with ElastiSim is by cloning the example project available on [GitHub](https://github.com/elastisim/example-project). This scenario simulates an FCFS (first come, first serve) scheduling algorithm applied on 500 jobs—including all job types—with alternating compute and I/O phases (see [Application model](#application-model)) running on a crossbar topology with 128 compute nodes. While evolving and adaptive jobs request a new configuration at the beginning of each iteration of the specified phase, malleable jobs accept any reconfiguration. The scheduler accepts all evolving requests that shrink the job but accepts evolving requests to expand the job only to a maximum of available nodes. For malleable jobs, the scheduler expands to the highest possible number of nodes based on the number of available nodes. The following steps will create a Docker container including all the required libraries for ElastiSim and start the simulation.
10
+
The easiest way to get started with ElastiSim is to use the [Dev Containers](https://github.com/elastisim/elastisim-devcontainer) we provide on GitHub. Dev Containers are containerized development environments native to VSCode. We provide all necessary setup files that automatically install required libraries and dependencies within a Docker container, facilitating rapid development. To learn more about Dev Containers, please visit the official [Dev Container documentation](https://code.visualstudio.com/docs/devcontainers/containers).
11
11
12
-
## Installation
13
-
14
-
To build the container required to run ElastiSim, install Docker and execute the following command:
15
-
```sh
16
-
docker build -t elastisim .
17
-
```
12
+
We provide two flavors of Dev Containers for 1) users and 2) contributors. The user Dev Container builds the environment for developing custom scheduling algorithms using the ElastiSim simulation engine and the Python interface. After the setup, the container automatically clones the [example project](https://github.com/elastisim/example-project), enabling users to experiment immediately. In contrast, the contributor Dev Container targets developers contributing to the ElastiSim project and additionally includes the source code for both projects, the [simulation engine](https://github.com/elastisim/elastisim), and the [Python interface](https://github.com/elastisim/elastisim-python). Both Dev Containers provide all necessary settings, launch, and build files to run the experiment or compile the project immediately. If you use ElastiSim to develop and evaluate custom schedulers, we strongly advise using the user container, as it focuses on a minimal build and performance.
18
13
19
-
## Simulation
20
-
21
-
To run the simulation, execute the following commands in two different sessions:
14
+
The scenario in the example project simulates an FCFS (first-come, first-serve) scheduling algorithm applied to 500 jobs—including all job types—with alternating compute and I/O phases (see [Application model](#application-model)) running on a crossbar topology with 128 compute nodes. While evolving and adaptive jobs request a new configuration at the beginning of each iteration of the specified phase, malleable jobs accept any reconfiguration. The scheduler accepts all evolving requests that shrink the job, but accepts evolving requests to expand the job only up to the maximum number of available nodes. For malleable jobs, the scheduler expands to the highest possible number of nodes based on the number of available nodes.
To build the Dev Container, clone [elastisim-devcontainer](https://github.com/elastisim/elastisim-devcontainer) and open the folder in VSCode, where you will see a notification that the repository contains Dev Container files. Open the repository in the container and choose _ElastiSim User_ or _Contributor_, respectively. The container will now build automatically and set up all necessary files.
The first command runs the ElastiSim simulator process and accepts two inputs:
42
-
- the configuration file (JSON)
43
-
- the logging level
20
+
## Simulation
44
21
45
-
For a more detailed output, change `--log=root.thresh:warning` to `--log=root.thresh:info` (caution: verbose).
22
+
To run the simulation, execute the _Run ElastiSim Scenario_ from the _Run and Debug_ panel. If you are using the contributor Dev Container, you must build the project first using the CMake configuration files provided by the container.
46
23
47
-
The second command runs the scheduling algorithm.
24
+
For a more detailed output, change the arguments of the simulation engine from `--log=root.thresh:warning` to `--log=root.thresh:info` in the launch.json file under the .vscode folder (caution: verbose).
Copy file name to clipboardExpand all lines: get-started/scheduling-protocol.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,10 +7,10 @@ nav_order: 3
7
7
8
8
# Scheduling protocol
9
9
10
-
During simulations, the simulator and the scheduler process are in constant communication. The scheduling protocol defines *which* data the processes exchange *when*.
10
+
During simulations, the simulator and the scheduler process are in constant communication. The scheduling protocol defines _which_ data the processes exchange _when_.
11
11
12
12
{: .note }
13
-
Do not confuse the scheduling protocol with the communication protocol. The scheduling protocol does **not** define *how* the data is exchanged.
13
+
Do not confuse the scheduling protocol with the communication protocol. The scheduling protocol does **not** define _how_ the data is exchanged.
14
14
15
15
ElastiSim invokes the scheduling algorithm periodically in a user-defined interval or at events such as job submissions or scheduling points (see [Configuration](/configuration) for all options). Each invocation contains a list of compute nodes, jobs, and a map holding system information. After the scheduling algorithm makes a scheduling decision, the scheduler process forwards the decision to the simulator process, applying the new schedule.
Copy file name to clipboardExpand all lines: index.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@ nav_order: 1
7
7
# ElastiSim
8
8
9
9
Resource and job management systems (often called batch systems, job schedulers, or workload managers) schedule jobs and provide resources in large-scale computing environments. ElastiSim is a batch-system simulator for malleable and evolving workloads, including the simulation of
10
+
10
11
- jobs and applications,
11
12
- the scheduling algorithm, and
12
13
- the platform (powered by [SimGrid](https://simgrid.org/)).
0 commit comments