Send e-mail to the CS Department
CS6131 Special Topics in Compilers - Course Specification

Catalog Description

Prerequisite: CS4131

This course will allow us to teach current important compiler issues. The description below is one possible instance of this course.

Required concurrent courses: none

Lab Resources: yes

Course Fee: yes

Class hours per week: (0-3-0)

Term offered: Fall

Course rationale and rationale for course fee (if any): Background for advanced research in compiler optimization.

Faculty member proposing: Steve Carr

Email address: carr@mtu.edu

Course syllabus: Varies depending on topic being covered.
 
Knowledge 
TOPIC A 

Familiarity 

         Compilation of HPF
Exposure 
         Loop transformations for shared-memory parallelism
Mastery 
         Dependence analysis
         Memory-reuse analysis
         Interprocedural data-flow analysis
         Loop transformations for ILP architectures
Skills 
TOPIC A  

Mastery 

   Given a loop construct containing array-based code, the student will be able to use the delta test to determine the existence of array dependences, the direction vectors of dependences and the distance vectors of dependences contained in the loop body.

   Given a loop construct containing array-based code, the student will be able to determine the cache-reuse behavior of each array reference in the loop using both dependence-based and linear-algebra-based reuse models. The student will also be able to analyze any possible cache interference within the loop body. 

   Given a nested loop construct containing array-based code, the student will be able to analyze the reuse properties of each loop using dependence-based and lineary-algebra-based reuse models. Further the student will be able to apply loop permutation, loop tiling and unroll-and-jam to improve the reuse properties of the entire loop nest.

   Given a loop construct containing array-based code, the student will be able to quantitatively analyze the instruction-level parallelism available in the loop by computing the balance of the loop and determining if the loop is memory-bound or compute-bound. Further, the student will be able to apply unroll-and-jam and scalar replacement to the loop body to improve instruction- level parallelism and quantitatively determine the effects of unroll-and-jam and scalar replacement on loop balance before the transformation are applied to the loop.

   Given a loop construct containing array-based code, the student will be able to determine which loops can be run in parallel on a symmetric multiprocessor and be able to apply loop fusion, loop distribution, and loop alignment to improve the quantity of parallelism in a loop.

   Given a program, the student will be able to apply interprocedurel alias analysis and interprocedural mod analysis to determine the side-effects of procdure calls. In addition, the student will be able to perform regular section analysis to determine the effects of procedure calls on arrays.


Please send questions and comments about this CS Web Page to cswebmaster@mtu.edu
Department of Computer Science
Last Updated: Monday, August 27, 2001