Skip to content

leorrodrigues/gpu_scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Network-Awere GPU Accelerated Containers Scheduler (GPUACS/VIMAM)

Introduction

GPUACS is a Linux software to simulate a cloud scheduler. The main features of the GPUACS are the GPU acceleration provided the ranking and virtual network ranking algorithms in online and offline scheduling policies.

This software is well in two articles:

In Master thesis (PT-br only), an English version is under production.

In GLOBCOM2019 article: https://ieeexplore.ieee.org/document/9013128/

Dependencies

The GPUACS requires CUDA and C++17 installed in your machine. All the others dependencias are inside the thirdparty folder.

Compilation

The compilation is made through CMAKE.

mkdir build && cd build
cmake ../scheduler
cmake --build .

How to run the scheduler

#Go to the bin folder
cd bin
#To run the scheduler just run:
./gpu_scheduler.out args
#To check the available options:
./gpu_scheduler.out -h

Modularity

The GPUACS is a modular scheduler that allows you to implement your algorithms and plug then into the scheduler. To do it, you need to import our respective interface and dependencies into your code and include your code into the gpu_scheduler.cu file.

For example, if you have a round-robin ranking algorithm and want to plug it into GPUACS ranking algorithms, to accomplish that you will need:

1- move your file into the allocator/rank_algorithms/user_defined/ folder. 2- import the interface and respective dependencies.

#include "../rank.hpp" //ranking algorithms interface
#include "../../free.hpp" //scheduler utils used to free resources
#include "../../utils.hpp" // scheduler utils used to check resources bounds

3- import your file into the gpu_scheduler.cu

#include "allocator/rank_algorithms/user_defined/$your_file"

4- change the allowed arguments inside gpu_scheduler.cu file.

//include your ranking algorithm
clara::detail::Opt( rank_method, "rank method") ["-r"]["--rank"] ("What is the rank method? [ ahp | (default) ahpg | topsis | best-fit (bf) | worst-fit (wf) | user_defined (INCLUDE THIS)")

if( rank_method == "ahpg") {
    rank = new AHPG();
}else if(rank_method == "ahp" ) {
    rank = new AHP();
}else if(rank_method=="topsis") {
    rank = new TOPSIS();
} else if(rank_method=="bf" || rank_method=="best-fit") {
    rank = new BestFit();
} else if(rank_method=="wf" || rank_method=="worst-fit") {
    rank = new WorstFit();
} else if(rank_method=="user_defined_algorithm") {
    rank = new USER_DEFINED_ALGORITHM //INCLUDE THIS
}
} else{
    SPDLOG_ERROR("Invalid rank method");
    exit(0);
}

And that's it, now your ranking algorithm is ready to work inside the GPUACS scheduler.

You can add algorithms inside the other scheduler's modules in the same way.

Configuration files

All the scheduler settings can be changed through editing the JSON files inside the scheduler folder.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update the tests as appropriate.

License

This software is under MPL-2 license

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published