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:/…

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 

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.

About

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:/…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published