Skip to content

Commit 183f459

Browse files
author
Christos Konstantinos Matzoros
committed
Refining README
1 parent 5b3c136 commit 183f459

File tree

1 file changed

+84
-16
lines changed

1 file changed

+84
-16
lines changed

README.md

Lines changed: 84 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# one-stop-parallel
1+
# OneStopParallel
22

3-
This repository, one-stop-parallel, is copyright by the
3+
This repository, OneStopParallel, is copyright by the
44
Computing Systems Laboratory, Zurich Research Center, Huawei Technologies
55
Switzerland AG.
66

@@ -13,43 +13,111 @@ for the specific language governing permissions and limitations.
1313
This project aims to develop scheduling algorithms for parallel computing systems based on the Bulk Synchronous Parallel (BSP) model. The algorithms optimize the allocation of tasks to processors, taking into account factors such as load balancing, memory constraints and communication overhead.
1414

1515

16-
1716
## Tools
1817

19-
All tools in this directory are licensed under the Apache License, Version 2.0
20-
(the "License"); you may not use the tools except in compliance with the
21-
License. You may obtain a copy of the License at
18+
All tools in this repository are licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
2219

23-
http://www.apache.org/licenses/LICENSE-2.0
2420

21+
## Command-Line Tool
2522

26-
# Command line tool
23+
A command-line interface is provided to execute scheduling algorithms.
24+
Users can input an instance (computational DAG + machine parameters) and run the desired scheduler.
2725

28-
The main purpose of this file is to provide a command-line interface for users to execute some of the scheduling algorithms implemented in this project. It allows users to input an instance consisting of a computational DAG and machine parameters and execute the desired scheduling algorithm. For further instructions ./main can be invoked without an parameters.
26+
For example, to run a **Greedy BSP** algorithm on an example instance:
2927

30-
For example, to run a greedy bsp algortihm on an example instance, the follwing command can be executed (relative to this folder).
3128
```bash
32-
./build/main -g examples/instances/instance_bicgstab.txt -m examples/instances/p4_g3_l5.txt --GreedyBsp
29+
./build/apps/osp -g data/spaa/tiny/instance_bicgstab.hdag -m data/machine_params/p3.arch --GreedyBsp
3330
```
3431

35-
# Sankey visualization
32+
To see available options:
33+
34+
```bash
35+
./build/apps/osp
36+
```
3637

37-
The tool provides a visualzation for BspSchedules. For more details, [see here.](third/SankeyPlots/README.md)
3838

39-
# Dot visualization
39+
## Visualizations
4040

41+
### Sankey Visualization
42+
BSP schedules can be visualized using Sankey diagrams.
43+
For details, see [SankeyPlots README](third/SankeyPlots/README.md).
44+
45+
### Graphviz Visualization
4146
The folder tools contains a python script to generate a representation of a BspSchedule based on graphviz. The input is a BspSchedule saved in the .dot format. Schedules in the .dot format can, for example, be generated with the command line tool adding the flag "-d". The python script is invoked with the location of the input file, e.g.,
4247
```bash
43-
python /tools/plot_graphviz.py tool/instance_bicgstab_p4_g3_l5_GreedyBsp_schedule.dot
48+
python3 tools/graphviz_visualization/plot_graphviz.py tools/graphviz_visualization/instance_bicgstab_p4_g3_l5_GreedyBsp_schedule.dot
4449
```
4550
The output is generated in the same folder and has the same name as the input where the file ending is changed from .dot to .gv.
4651

52+
4753
## Quickstart
4854

49-
Compile the project using the following commands:
55+
### Build
5056

5157
```bash
5258
mkdir -p build && cd build
5359
cmake ..
5460
make -j$(nproc)
5561
```
62+
63+
### Install
64+
65+
The project supports CMake installation. From the build directory:
66+
67+
```bash
68+
make install
69+
```
70+
71+
72+
## CMake Options and Build Types
73+
74+
When configuring with CMake, several options and build types influence the build:
75+
76+
### Build Types (`CMAKE_BUILD_TYPE`)
77+
78+
- **Debug**
79+
Adds debug symbols (`-g`) and enables strict warnings.
80+
```bash
81+
cmake -DCMAKE_BUILD_TYPE=Debug ..
82+
```
83+
84+
- **Release**
85+
Optimized build with `-O3 -DNDEBUG`.
86+
```bash
87+
cmake -DCMAKE_BUILD_TYPE=Release ..
88+
```
89+
90+
- **RelWithDebInfo**
91+
Optimized build with debug symbols (`-O3 -g`).
92+
```bash
93+
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
94+
```
95+
96+
- **Library**
97+
Installs only the header-only library (apps/tests are excluded).
98+
Useful if you just want to consume the library in another project.
99+
```bash
100+
cmake -DCMAKE_BUILD_TYPE=Library ..
101+
```
102+
103+
If no build type is given, CMake applies default optimizations and warnings.
104+
105+
---
106+
107+
### Options
108+
109+
- **`BUILD_TESTS` (default: ON)**
110+
Build and run the test suite.
111+
Automatically forced to `OFF` if `CMAKE_BUILD_TYPE=Library`.
112+
Requires Boost (graph + unit_test_framework) and OpenMP.
113+
```bash
114+
cmake -DBUILD_TESTS=OFF ..
115+
```
116+
117+
## Dependencies
118+
Some algorithms and executables are only enabled with following optional dependencies:
119+
- [Boost (≥ 1.71)]
120+
- [Eigen3 (≥ 3.4)](https://eigen.tuxfamily.org/)
121+
- [OpenMP](https://www.openmp.org/)
122+
- [COPT](https://github.com/huawei-noah/COPT)
123+

0 commit comments

Comments
 (0)