Module 13: INTRODUCTION TO COMPILERS FOR HIGH PERFORMANCE COMPUTERS
  Lecture 26: SIMD Architecture
 


Dosingle Loop

  • Represents single assignment statement
  • Each variable assigned must be indexed by all loop index variables
  • Each element must be assigned only once
  • A statement in a dosingle sees all the updates
    • From previous or subsequent iterations
    • From previous or subsequent statements
dosingle i = 1 to 4 do
a[i] = a[i-1] + 1
b[i] = b[i+1] + a[i-1]
enddo

Summary

  • Re-structure code to exploit pipeline and caches.
  • Convert sequential loops involving scalars to vector operation.
  • Convert sequential loops into parallel loops.
  • Partition data for data parallel model.
  • Minimize messages to reduce overheads.

Control Flow Analysis

  • Shows hierarchical flow of control
  • Source control flow is not available in MIR or LIR
  • Loops may be constructed of ifs and gotos