Module 13: INTRODUCTION TO COMPILERS FOR HIGH PERFORMANCE COMPUTERS
  Lecture 25: Supercomputing Applications
 


Sources and Types of Parallelism

  • Structured: Identical tasks on different data sets
  • Unstructured: Different data streams and different instructions
  • Algorithm level: Appropriate algorithms and data structures
  • Programming:
    • Specify parallelism in parallel languages
    • Write sequential code and use compilers
    • Use course grain parallelism: independent modules
    • Use medium grain parallelism: loop level
    • Use fine grain parallelism: basic block or statement
  • Expressing parallelism in programs
    • No good languages
    • Programmers are unable to exploit whatever little is available

Model of Compiler

CODE OPTIMIZATION

High Level Analysis for optimization

  • Common subexpression elimination
  • Copy propagation
  • Dead code elimination
  • Code motion
  • Strength reduction
  • Constant folding
  • Loop unrolling
  • Induction variable simplification