Skip to content

Latest commit

 

History

History
43 lines (28 loc) · 2.26 KB

README.md

File metadata and controls

43 lines (28 loc) · 2.26 KB

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.