The following tables list the parallel and distributed computing (PDC) topics covered in each chapter. The depth of coverage of each topic is indicated by the intended outcome of teaching that topic, expressed using Bloom’s taxonomy of educational objectives:
C: Comprehend so as to paraphrase/illustrate it
A: Apply it in some way
Chapter 2
Hands-On Parallelism
PDC Concept | Section | |||
2.3.1 | 2.3.2 | 2.3.3 | 2.3.4 | |
Concurrency | A | A | A | A |
Why and what is PDC | A | |||
Time | C | |||
Communication | A | A | ||
Broadcast | A | A | ||
Nondeterminism | C | |||
Data races | A | |||
Synchronization | C | |||
Shared memory | K | A | ||
Distributed memory | A |
Chapter 3
Parallelism in Python
PDC Concept | Section | |||
3.6 | 3.7 | 3.8 | 3.9 | |
Concurrency | C | |||
Tasks and threads | A | |||
Decomposition into atomic tasks | A | |||
Sorting | A | |||
Message passing | A | |||
Synchronization | C | |||
Performance metrics | C | |||
Divide and conquer (parallel aspects) | A | |||
Recursion (parallel aspects) | A |
Chapter 4
Modules for Introducing Threads
PDC Concept | Section | ||
4.1 | 4.2 | 4.3 | |
Shared memory: compiler directives/pragmas | A | ||
Shared memory: libraries | A | A | |
Task/thread spawning | A | A | |
Data parallel: parallel loops for shared memory | A | ||
Synchronization: critical regions | A | ||
Concurrency defects: data races | C | C | |
Load balancing | C | C | |
Scheduling and mapping | K | ||
Speedup | C | C |
Chapter 5
PDC Concepts in Digital Logic
PDC Concept | Section | |||||
5.1 | 5.2 | 5.3 | 5.4 | 5.5 | 5.6 | |
Concurrency, sequential/parallel | C | C | C | C | A | |
Interconnects, topologies | K | C | C | A | ||
Performance measures (latency, scalability, efficiency, trade-offs) | K | C | C | C | ||
Recursive decomposition, divide and conquer | K | C | A | |||
Prefix computation | C | A | ||||
(A)synchrony | K | C | A | |||
Pipelining | C | |||||
Data hazards | K | |||||
Buses, shared resources | K | K | ||||
Complexity, asymptotics | K | |||||
Dependencies, task graphs | K | |||||
Broadcast, multicast | K | |||||
Reduction, convergecast | K | C |
Chapter 6
Networks and MPI
PDC Concept | Section | |||
6.1 | 6.2 | 6.3 | 6.4 | |
Programming single program, multiple data (SPMD) | C | |||
Performance issues, computation | K | K | K | |
Cluster | K | C | K | K |
Grid/cloud | K | |||
Message passing | K | C | C | |
Why and what is PDC | K | K | K | K |
Broadcast, multicast | K |
Chapter 7
Fork-Join Parallelism
PDC Concept | Section | ||||
7.1 | 7.2 | 7.3 | 7.4 | 7.5 | |
Shared memory | C | A | |||
Language extensions | C | A | |||
Libraries | A | ||||
Task/thread spawning | C | A | |||
Load balancing | K | C | |||
Performance metrics | K | ||||
Speedup | C | A | |||
Amdahl’s law | A | ||||
Asymptotics | A | ||||
Time | A | A | |||
Bulk synchronous parallel (BSP)/Cilk | A | A | A | ||
Dependencies | C | ||||
Task graphs | K | ||||
Work | A | A | |||
(Make)span | A | A | |||
Divide and conquer (parallel aspects) | A | A | A | ||
Recursion (parallel aspects) | A | A | |||
Scan (parallel-prefix) | C | ||||
Reduction (map-reduce) | A | A | A | ||
Sorting | C | ||||
Why and what is PDC | A | ||||
Concurrency | K |
Chapter 8
Shared-Memory Concurrency Control
PDC Concept | Section | ||||||
8.1 | 8.2 | 8.3 | 8.4 | 8.5 | 8.6 | 8.7 | |
Shared memory | A | A | A | C | |||
Language extensions | C | C | |||||
Libraries | K | ||||||
Synchronization | A | A | A | A | |||
Critical regions | C | C | C | ||||
Concurrency defects | A | A | A | ||||
Memory models | C | ||||||
Nondeterminism | K | A | A |
Chapter 9
Parallel Computing in a Python-Based Course
PDC Concept | Section | |||||||
9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 | 9.7 | 9.8 | |
Shared memory | C | |||||||
Parallel loops for shared memory | C | A | A | A | A | A | A | |
Owner computes rule | C | A | A | A | A | A | A | |
Time | C | A | A | A | A | A | A | A |
PRAM | C | A | A | A | A | A | A | |
Series-paralllel composition (barriers) | C | |||||||
Asymptotics | A | A | A | A | A | A | ||
Recursion | A | A | ||||||
Reduction | A | A | A | A | ||||
Scan | A | A | A | A | A | |||
Sorting | A |
Chapter 10
Conway’s Game of Life
PDC Concept | Section | |||||||||
10.1 | 10.2 | 10.3 | 10.4 | 10.5 | 10.6 | 10.7 | 10.8 | 10.9 | 10.10 | |
Data parallelism, single instruction, multiple data (SIMD) | C | |||||||||
Single program, multiple data (SPMD) | C | C | C | C | ||||||
CUDA, single instruction, multiple thread (SIMT) | C | |||||||||
Vector extensions | C | |||||||||
Pipelining | C | |||||||||
Dataflow | C | |||||||||
Task graphs | C | |||||||||
Multicore | C | |||||||||
Shared versus distributed memory | C | C | C | C | ||||||
Message passing | C | C | ||||||||
Loop parallelism | C | |||||||||
Data distribution | C |