From: mwolfe@ogicse.ogi.edu (Michael Wolfe)
Subject: High Performance Compilers July Short Course
Keywords: parallel, courses
Reply-To: mwolfe@ogicse.ogi.edu (Michael Wolfe)
Organization: Oregon Graduate Institute, Beaverton, OR
Date: Thu, 16 Apr 1992 23:30:47 GMT

Once again, the Oregon Graduate Institute is offering a 

  Summer Intensive Tutorial on 
   High Performance Compilers
      July 6-10, 1992
    Hotel Vintage Plaza
      Portland, Oregon

This year's course builds on last year's course, but is updated and
improved.  In particular, it will include all-new material related to the
proposals for High Performance Fortran on scalable massively parallel
computers.


The full details of this course are available electronically 
via anonymous ftp at:

	% ftp cse.ogi.edu		[or ftp 129.95.40.2]
	Name: anonymous
	Password: myname@where.am.i
	ftp> cd pub
	ftp> cd HPC
	ftp> get HPC
	ftp> quit
	%

Or send email to 
	mwolfe@cse.ogi.edu (for technical inquiries)
	lpease@admin.ogi.edu (for registration and other information)

What follows is the (lengthy) course outline and schedule.


COURSE OUTLINE:

MONDAY:

Registration

1. Modern High Performance Computer Architecture and Languages (1.5 hours)
. Architectural Options
  - vector instruction set and vector registers
  - multiple CPUs
  - multiple operations per instruction (VLIW)
  - super-scalar control unit
  - super-pipelined data unit
  - cache memory organization
  - massively parallel systems
. Current Examples
  - Intel i860, IBM RS/6000, Multiflow Trace/300, Cray Y-MP, Alliant FX/80
    iPSC/860, Thinking Machines CM-5
. Languages
  - Fortran, C
  - Fortran 90
  - PCF Fortran
  - High Performance Fortran
  - Dataparallel C
  - comments on other approaches: SISAL, Crystal

2. Compiler Framework (.5 hour)
. global compiler analysis/synthesis framework
  - front end
  - high-level optimizations
  - back-end optimizations
  - code generation
. data structures to support optimization
  - control flow graph, basic blocks
  - delayed code lowering
  - comparison to 'gcc'

3. Graph Concepts (1.5 hours)
. directed graph analysis algorithms
  - graph traversal and numbering algorithms
  - spanning trees
  - dominator tree
  - cycle discovery
. complications of parallel syntax

4. Data Flow problems in a Lattice Context (2 hours)
. mapping data flow problems onto lattice
  - reaching definitions
  - live variables
  - available expressions
  - use/def chains
. solving data flow problems

5. Control Flow Analysis (2 hours)
. dominators
. interval analysis
. control dependence
  - compact representations
. identifying loops

TUESDAY:

6. Data Flow Analysis (3 hours)
. iterative bit-vector algorithms
. syntax based analysis
. interval analysis
. program dependence graph

7. Static Single Assignment Representation (3 hours)
. conversion to static single assignment
. constant propagation
. induction variable identification
. handing pointers

8. Introduction to Data Dependence (2 hours)
. flow, anti, output dependence
. dependence distance
. direction vectors
. data structures to represent data dependence

WEDNESDAY:

9. Data Dependence Analysis Techniques (8 hours)
. subscript analysis
  - how to formulate the dependence equation
  - the many ways to solve the dependence equation
    (single variable exact test, triangular Banerjee's inequalities, ...)
  - performance of dependence decision algorithms
  - complications (triangular loops, unknown variables, exactness)
. other complications
  - I/O dependence
  - Fortran EQUIVALENCE, COMMON
  - C pointers, argument passing
  - Fortran-90 pointers
. other uses of analysis methods
  - communication analysis for message passing
  - footprint analysis for cache memories

THURSDAY:

10. Program Restructuring Techniques (4 hours)
. vectorization
  - reductions
  - strip mining
. parallelization
  - scheduling
. loop interchanging
. skewing
. tiling
. linear transformations on the index set
. performance modeling

11. Guest Lecture: Engineering a Real Compiler (4 hours)

FRIDAY:

12. Run Time Parallelism (2 hours)
. run-time scheduling of parallel code
  - self-scheduling, pre-scheduling
  - non-loop parallelism
  - system management effects

13. Guest Lecture: Compiling for Distributed Memory (4 hours)

14. Interprocedural Optimization (2 hours)
. procedure integration
. summarizing the effects of procedures
  - flow insensitive USE and MOD information
  - summarizing USE and MOD of array arguments
. interprocedural constant propagation

15. Crystal Ball: Current Research
. compiling for massively parallel architectures
. interactive programming environments
. static analysis for debugging parallel programs


COURSE SCHEDULE

Monday-Friday

Registration: Monday, 7:30am - 8:30am

Lectures:  Monday-Friday, 8:00am-5:30pm

Lunches:   Monday-Friday, noon-1:30pm

Breaks:    10:00-10:15am, 3:30-3:45pm

Reception: Monday, 7:00-10:00pm, at the Hotel Vintage Plaza.  

Banquet:   Thursday, 7:00-9:00pm, Dinner cruise on the Willamette River.
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.