Outline for CS202xPD Parallel and Distributed Programming
Extracted from PDOverview
PD. Parallel and Distributed Computing (5 Core-Tier1 hours, 10 Core-Tier2 hours)
| CS Core hours | KA Core hours | Includes Electives | |
| PD/Fundamentals | 2 | N | |
| PD/Execution | 2 | Y | |
| PD/Communication | 2 | Y | |
| PD/Specification and Analysis | Y | ||
| PD/Implementation | Y | ||
| PD/Applications | Y |
PD/Fundamentals [Note: Xrefs with SF]
- Forms and styles: Declarative, procedural, reactive (event-driven), distributed
- Properties: Nondeterminism; Emulation and scheduling, Communication, consensus, correctness, resources.
- Metrics: Throughput, responsiveness, availability, latency, resource usage, communication costs, waiting and rate control, energy
PD/Execution [Note: Xrefs with PL]
- Parallelizable actions: granularity, functional forms, sessions, services, atomicity.
- Activation: Internal CPU data parallelism, Heterogeneous data parallelism, task parallelism, Actors, Clusters, Distributed systems, Emerging technologies
- Sequencing Actions: Clocks. Counters and virtual clocks. Consensus, Dataflow and continuations. joins and Futures, collectors.
- Exceptions and failures. Handlers, detection, timeouts, fault tolerance.
- Control structures: Loops, recursion, nested parallelism, pipelines, series-parallel loops
PD/Communication
- Channels [Note: Many Xrefs to NC]
- Topologies: Unicast (one-to-one, aka point-to-point), Multicast (one-to-many, aka multiplexers, publishers; groups). Mailbox (many-to-one, aka demultiplexers, collectors, selectors). Switches (many-to-many, aka buses, crossbars).
- Security: integrity, privacy, authentication, authorization.
- Performance Characteristics: Latency, Bandwidth (throughput), Contention (Congestion) Responsiveness. (liveness).
- Policies and protocols: Endpoints, Sessions, Buffering, Saturation (waiting vs dropping), Rate control.
- Data: Formats, marshaling, encryption, integrity checking, compressIon.
- Shared Memory
- Memory Consistency: Bitwise Atomicity limits, Coherence, Local ordering.
- Memory locality: caches, false-sharing
- Preventing Data races: Atomic updates, Enforced ordering, locks, transactions, channels
- Coordination: State-based, data structures, synchronizers, completions
- Data Stores [Note: Xrefs with IM]
- Categories: Shared memory, owned, sharded, replicated, immutable, versioned
- Atomicity: transactions, concurrent reads, locks
- Consistency and consensus protocols: atomicity, coherence, causal ordering, conflict resolution/eventual consistency, example protocols (paxos, raft)
- Security and trust: Byzantine failures, trust, proof of work and alternatives
PD/Specification and analysis [note: SE Xrefs]
- Specifying behavior: Sequential specs, linearizability; protocol specs, safety, liveness, program logics, spec languages such as TLA
- Characterizing errors: data races, check-then-act, deadlocks, tools
- Performance
- Throughput (scalability): dag model analysis: work/span, Amdahl’s law; factoring in overhead, waiting/contention, communication, data movement, locality, resource management, scheduling
- Latency: waiting, faults, fairness
- Resource consumption (Energy): work efficiency, utilization, communication complexity
PD/Implementation [Note: Xrefs with SF, OS]
- Placement and Scheduling
- centralized, decentralized, priorities, metrics, latency
- Resource Management
- Management of serially reusable exclusively held resources. Locks, semaphores, sessions. Policies including load balancing and fairness.
- Sharable resources. Reference use counts, garbage collection.
- Preemptable resources. Eviction, context-switching, task scheduling.
- Exhaustion handling. Elasticity, cancellation, termination,
PD/Applications
Domain-specific algorithms and techniques in:
- Linear Algebra: Matrix operations, numerical precision/stability, applications in data analytics and machine learning
- Graphs, search, and combinatorics: Marking, edge-parallelization, bounding, speculation,
- Modeling and simulation: differential equations; randomization, N-body problems
- Logic: SAT, concurrent logic programming
- Graphics: Transforms, …