Skip to content
LTRF's register-interval creation algorithm divides the control flow graph (CFG) of a GPU application into some register-intervals which have two main characteristics: 1) register-intervals have only one entry-point in CFG, and 2) they have a limited number of registers. This algorithm is part of ASPLOS2018 paper by Sadrosadati et al. at https:/…
C++ Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
src
Makefile
README.md
main.cpp

README.md

Overview

Register-interval creation algorithm is a part of paper "LTRF: Enabling High-Capacity Register Files for GPUs via Hardware/Software Cooperative Register Prefetching". This algorithm divides the control flow graph of the application into some register-intervals which have two main characteristics:

  • Register-intervals have only one entry-point in CFG.
  • They also have a limited number of registers.

In LTRF paper, a PREFETCH instruction is inserted at the beginning of each register-interval that brings its all registers to the register file cache.

Compiling

Register-interval creation codes are complied by make command in terminal. The Makefile is in the main directory.

  • Note: For compiling register-interval codes, c++11 is needed. So make sure that your g++ version supports c++11.

Running

After compiling, there is an executable file in the main directory named "registerIntevalCreation". Two input arguments are needed to run this program:

  1. The allowed number of registers in each register-interval.
  2. The control flow graph of the application.

The format used for control flow graph file is Graphviz Dot that you can get this file from nvdisasm which is one of the CUDA binary utilities. More information in this link.

  • Note: nvdisasm only generates CFG for cuda binary files with Compute Capabilty 3.0 or later.

Here is an example of running register-interval creation alogorithm:

./registerIntervalCreation 16 bfs.dot 

After running, results and the output logs will be in /output directory. File "basicBlocks_{inputFileName}.txt" will contain the details of the input control flow graph and its nodes are basic blocks. File "registerInterval_{inputFileName}.txt" will contain the information of created register-intervals and the resuced control flow graph that its nodes are register-intervals.

You can’t perform that action at this time.