1.1 Parallelism and independence
1.2.1 Shared and distributed memory parallelism
1.2.2 Structures of parallel computation
1.3.3 Intermediate representations
1.4 Compiler support for parallel machines
2 Dependence analysis, dependence graphs and alias analysis
2.3.1 Determining references to test for dependence
2.3.3 Arrays of arrays and dependence analysis
2.5 Use-def chains and dependence
2.6 Dependence analysis in parallel programs
3.1 Simple loop parallelization
3.2 Parallelizing loops with acyclic and cyclic dependence graphs
3.4 Parallelizing loops using producer/consumer synchronization
3.4.1 Producer and consumer synchronization
3.4.2 Optimizing producer/consumer synchronization
3.5 Parallelizing recursive constructs
3.6 Parallelization of while loops
3.6.1 Determining iterations to be executed by a thread
3.6.2 Dealing with the effects of speculation
3.7 Software pipelining for instruction level parallelism
4 Transformations to modify and eliminate dependences
4.1 Loop peeling and splitting
4.3 Induction variable substitution
4.5 Scalar expansion and privatization
4.9 Which transformations are most important?
5 Transformation of iterative and recursive constructs
5.1 Loop blocking or strip mining
5.7 Unimodular transformations
6 Compiling for distributed memory machines
6.1.4 Block-cyclic distribution
6.2 Computing the reference set
6.3.1 Bounds of replicated array dimensions
6.3.2 Bounds of block distributed array dimensions
6.3.3 Bounds of cyclically distributed array dimensions
6.3.4 Bounds of block-cyclically distributed array dimensions
6.3.5 Subscripts with multiple loop indices
6.3.6 Generating loop bounds for multi-dimensional arrays
6.3.7 Generating loop bounds with multiple references
6.4.1 The shift communication pattern
6.4.2 The broadcast communication pattern
6.5 Distributed memory programming languages
6.5.1 High Performance Fortran (HPF)
6.5.3 Unified Parallel C (UPC)
7 Solving Diophantine equations
7.1 Solving single Diophantine equations
7.2 Solving multiple Diophantine equations
7.3 Extreme values of integer functions
8.2 Dependence analysis, dependence graphs and alias analysis
8.4 Transformations to modify and eliminate dependences
8.6 Transformation of iterative and recursive constructs
8.8 Compiling for distributed memory machines
8.9 Current and future directions in parallelizing compilers
18.217.150.123