This document discusses various aspects of parallel computing including:
- Different levels of parallelism from instruction-level to job-level and their tradeoffs.
- Data and control dependence relationships that enable or prevent parallel execution.
- The mismatch between software and hardware parallelism and techniques to address it.
- The role of compilers in exploiting hardware parallelism and interacting with architecture design.
- Program partitioning, scheduling, grain size, and tradeoffs between computation and communication latency.