book

High-Performance Computing — Notes

Performance Engineering notes: complexity models, computer architecture, ILP, compilation, profiling, arithmetic, memory hierarchy, caches, and SIMD.

40 chapters 9 stages

Complexity Models

  1. 01 Modern Hardware Modern Hardware
  2. 02 Programming Languages Programming Languages

Computer Architecture

  1. 03 Instruction Set Architectures Instruction Set Architectures
  2. 04 Assembly Language Assembly Language
  3. 05 Loops and Conditionals Loops and Conditionals
  4. 06 Functions và Recursion Functions và Recursion
  5. 07 Indirect Branching Indirect Branching
  6. 08 Dynamic Dispatch Dynamic Dispatch
  7. 09 Machine Code Layout Machine Code Layout

Instruction-Level Parallelism

  1. 10 Pipeline Hazards Pipeline Hazards
  2. 11 The Cost of Branching The Cost of Branching
  3. 12 Branchless Programming Branchless Programming
  4. 13 Instruction Tables Instruction Tables
  5. 14 Throughput Computing Throughput Computing

Compilation

  1. 15 Stages of Compilation Stages of Compilation
  2. 16 Flags and Targets Flags and Targets
  3. 17 Situational Optimizations Situational Optimizations
  4. 18 Contract Programming Contract Programming
  5. 19 Precomputation Precomputation

Profiling

  1. 20 Instrumentation Instrumentation
  2. 21 Statistical Profiling Statistical Profiling

Arithmetic

  1. 22 Floating-Point Numbers Floating-Point Numbers
  2. 23 IEEE 754 Floats IEEE 754 Floats

External Memory

  1. 24 Memory Hierarchy Memory Hierarchy
  2. 25 Virtual Memory Virtual Memory
  3. 26 External Sorting External Sorting
  4. 27 List Ranking List Ranking
  5. 28 Eviction Policies Eviction Policies
  6. 29 Cache-Oblivious Algorithms Cache-Oblivious Algorithms
  7. 30 Spatial and Temporal Locality Spatial and Temporal Locality

RAM & CPU Caches

  1. 31 Memory Bandwidth Memory Bandwidth
  2. 32 Memory Latency Memory Latency
  3. 33 Cache Lines Cache Lines
  4. 34 Memory Sharing Memory Sharing
  5. 35 Memory-Level Parallelism Memory-Level Parallelism
  6. 36 Alignment and Packing Alignment and Packing
  7. 37 Cache Associativity Cache Associativity
  8. 38 Memory Paging Memory Paging
  9. 39 AoS and SoA AoS and SoA

SIMD Parallelism

  1. 40 Intrinsics and Vector Types Intrinsics and Vector Types