Poor Man's Co-Scheduler
Poncos is a simple scheduler that applies co-scheduling of applications based on main memory bandwidth utilization. It supports multiple nodes
The source code in this repository is essential self-contained and all unusual dependencies are automatically built when compiling poncos. Nonetheless, you require:
- A compiler supporting C++14.
- CMake (version >= 3.1)
To use poncos you must:
- first install mmbwmon on all nodes you plan to use for scheduling.
- start mmbwmon on all nodes while they are idle. Wait until the initialization phase of mmbwmon has completed.
- if you are not using a SandyBridge EP system, adjust the file system_config/sandybridge_EP.cpp to match your system (or create a new one and add a new build target to CMake).
- compile poncos as every other CMake based project.
- create a machine-file containing all hostnames of the nodes you want to use for your applications. Use linebreaks to separate the hostnames (i.e. one hostname per line).
- create a queue file containing one application command line per line (see examples).
- run the poncos binary with --help and read the options on how to pass the machine-file and queue.