/distributed-system-scheduler

A branch-and-bound, and A* type algorithm that solves the NP Hard Scheduling problem with the highest possible performance

Primary LanguageJava

distributed-system-cpu-task-scheduler

workflow

The project is to develop a branch-and-bound, or A* type algorithm that solves the NP Hard Scheduling problem with the highest possible performance. The scheduling problem is depicted as a weighted directed acyclic graph where the nodes are tasks and its weight is the cost of computation, and the edges are the communication costs between tasks. Now with the commonality of multi-processing, to be able to achieve the highest possible performance, the algorithm will need to be parallelized, so that the algorithm itself is able to use multiple processes to speed up the search.

Getting Started

Maven 4.0.0 is required to compile the project.

Maven install

please refer to Maven Install Instruction for direct download.

Linux

apt install maven

Mac (brew)

brew install maven

building and packaging into Jar with dependency

git clone git@github.com:SoftEng306-2021/project-1-raspberry-spirits-15.git
mvn clean package -DskipTests

The compiled jar will be located in target/scheduler.jar

Running Jar

The compiled Jar file can be run using the following command.

Java -jar target/scheduler.jar INPUT.dot P [OPTION]

Arguments

INPUT.dot a task graph with integer weights in dot format
P number of processors to schedule the INPUT graph on

Notice users must have java version of at least Java 1.8.

Optional Arguments

−o OUTPUT output file is named OUTPUT (default is INPUT−output.dot )
−p N use N cores for execution in parallel (default is sequential)
-v visualise the serach

Useful Documentation