Table of Contents:
  • 1. Data parallelism
  • 1.1 Data parallelism
  • 1.2 Data parallelism in applications
  • 1.2.1 Physical simulation
  • 1.2.2 Computer vision
  • 1.2.3 Speech recognition
  • 1.2.4 Database management systems
  • 1.2.5 Financial analytics
  • 1.2.6 Medical imaging
  • 2. Exploiting data parallelism with SIMD execution
  • 2.1 Exploiting data parallelism
  • 2.2 SIMD execution
  • 2.3 SIMD performance and energy benefits
  • 2.4 Limits to SIMD scaling
  • 2.5 Programming and compilation
  • 2.5.1 Programming for SIMD execution
  • 2.5.2 Challenges of static analysis
  • 3. Computation and control flow
  • 3.1 SIMD registers
  • 3.2 SIMD computation
  • 3.2.1 Basic arithmetic and logic
  • 3.2.2 Data element size and overflow
  • 3.2.3 Advanced arithmetic
  • 3.3 Control flow
  • 3.3.1 SIMD execution with control flow
  • 3.3.2 Conditional SIMD execution
  • 3.3.3 Efficiency implications of control divergence
  • 4. Memory operations
  • 4.1 Contiguous patterns
  • 4.1.1 Unaligned accesses
  • 4.1.2 Throughput implications
  • 4.2 Non-contiguous patterns
  • 4.2.1 Programming model issues
  • 4.2.2 Implementing gather and scatter instructions
  • 4.2.3 Locality in gathers and scatters
  • 5. Horizontal operations
  • 5.1 Limits to horizontal operations
  • 5.2 Data movement
  • 5.3 Reductions
  • 5.4 Reducing control divergence
  • 5.5 Potential dependences
  • 5.5.1 Single-index case
  • 5.5.2 Multi-index case
  • 6. Conclusions
  • 6.1 Future directions
  • Bibliography
  • Author's biography.