Skip to content

Optimizing scheduler. Combinatorial instruction scheduling project.

License

Notifications You must be signed in to change notification settings

JoshHuttonCode/OptSched

 
 

Repository files navigation

CSUS

OptSched - Optimizing Scheduler

Combinatorial instruction scheduling research project at CSU Sacramento.

This plugin for the LLVM compiler is an optional machine scheduler. We implement an Ant Colony Optimization instruction scheduling algorithm on the GPU. The enumerating combinatorial scheduler will not work on this branch, this branch is for the ACO instruction scheduler running on the GPU.

Requirements

  • Ubuntu 18.04 or 20.04
  • CMake 3.20.4 or later
  • LLVM 7.0 or later
  • Nvidia GPU: At least Turing recommended (CC 7.5 or later)

Building

See BUILD.md for build instructions.

The OptSched plugin can be found in “v7flang/llvm/build/lib” after building.

Configuration files

OptSched reads from configuration files at runtime to initialize the scheduler. There are templates in the example directory. The default search location for these files is ~/.optsched-cfg. You can optionally specify the path to this directory or any of the configuration files individually with command-line options.

Usage Examples

clang++ -O3 -fplugin=<path/to/OptSched.so> -mllvm -misched=optsched -mllvm -optsched-cfg=<path/to/optsched-cfg> <example.cpp>

llc -load <path/to/OptSched.so> -misched=optsched -optsched-cfg=<path/to/optsched-cfg> <example.ll>

Command-Line Options

When using Clang, pass options to LLVM with -mllvm.

CL Opt Description
-enable-misched Enable the machine scheduling pass in LLVM (Targets can override this option).
-misched=optsched Select the optimizing scheduler.
-debug-only=optsched Print debug information from the scheduler.
-optsched-cfg=<string> Path to the directory containing configuration files for opt-sched.
-optsched-cfg-hotfuncs=<string> Path to the list of hot functions to schedule using opt-sched.
-optsched-cfg-machine-model=<string> Path to the machine model specification file for opt-sched.
-optsched-cfg-sched=<string> Path to the scheduler options configuration file for opt-sched.

About

Optimizing scheduler. Combinatorial instruction scheduling project.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 80.7%
  • Python 15.0%
  • Cuda 1.8%
  • CMake 1.4%
  • Shell 1.1%