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


Data Dependence Analysis

  • Check whether program can be restructured
  • GCD test
  • Banerjee’s Test
  • I-test
  • Omega test
  • Architectural specific tests

Program Restructurer

  • Loop restructuring
  • Statement reordering
  • Loop (distribution) fission
  • Breaking dependence cycle: Node splitting
  • Loop interchanging
  • Loop skewing
  • Loop jamming
  • Handling while loops

Technique to Improve Detection of Parallelism: Interactive Compilation

  • Back-end to user
  • Compiler directives
    • Force Parallel
    • No Parallel
    • Max-trips count
    • Task identification
    • No side effects
  • Incremental Analysis

Scalar Processors

  • Machines use standard CPUs
  • Main memory is in hierarchy: RAM and cache
  • Most programs exhibit locality of reference
    • Same items are referred very close in time (temporal)
    • Nearby locations are referred frequently (spatial)
  • Programmers do not have control over memory
  • Programmers can take advantage of cache