Reference Entry

Parallelism (Computing)

Reference entry · last updated September 7, 2026

Parallelism is the simultaneous execution of multiple computational operations across physically separate processing units at the exact same physical instant. Unlike concurrency (which structures a system as independent computations with overlapping lifetimes), parallelism requires underlying hardware with multiple physical execution units (such as multi-core CPUs, GPUs, TPUs, or networked cluster nodes). Parallelism serves as the primary engineering mechanism for accelerating throughput and reducing wall-clock runtime across scientific simulation, deep learning training, inference serving, and database query engines.

1. First Principles: Physical Simultaneity

The defining characteristic of parallelism is physical simultaneity: at time \(t\), instruction \(I_A\) executes on hardware execution unit \(E_1\) while instruction \(I_B\) simultaneously executes on distinct hardware execution unit \(E_2\). If a system has only a single physical core, true parallelism cannot occur; multiple tasks can only progress via rapid context switching (concurrency via time-slicing).

[Single-Core Concurrency (Time-Sliced)] Core 0: [Task A] [Task B] [Task A] [Task C] [Task B] ... → Time (Interleaved) [Multi-Core Parallelism (Simultaneous)] Core 0: [Task A ===============================] Core 1: [Task B ===============================] → Time (Physical Simultaneity) Core 2: [Task C ===============================]

2. Architectural Levels and Flynn's Taxonomy

In 1972, Michael J. Flynn classified computer architectures into four categories based on the cardinality of instruction and data streams [1]:

2.1 Instruction and Vector Parallelism

Within a single processor core, modern microarchitectures exploit sub-nanosecond parallelism without developer intervention:

2.2 Thread, Data, and Tensor Parallelism

Higher levels of parallelism require software-visible partitioning across physical hardware:

3. Mathematical Scaling Models

The speedup achieved by allocating \(N\) parallel processors is governed by the structural ratio of serial to parallel work in the workload.

3.1 Amdahl's Law and Strong Scaling

Gene Amdahl (1967) modeled strong scaling: running a fixed problem size on an increasing number of processors \(N\) [2]. Let \(s \in [0, 1]\) be the strictly serial fraction of execution time, and \(p = 1 - s\) be the parallel fraction. The total execution time \(T(N)\) on \(N\) processors is:

\[T(N) = T(1) \left( s + \frac{1 - s}{N} \right)\]

The resulting speedup factor \(S(N) = \frac{T(1)}{T(N)}\) is bounded by:

\[S(N) = \frac{1}{s + \frac{1 - s}{N}}\]

As \(N \to \infty\), the maximum achievable speedup is strictly capped by the serial fraction:

\[\lim_{N \to \infty} S(N) = \frac{1}{s}\]

If even 5% of a program is strictly serial (\(s = 0.05\)), the maximum speedup can never exceed \(20\times\), regardless of whether 100 or 1,000,000 cores are allocated.

3.2 Gustafson's Law and Weak Scaling

John Gustafson (1988) demonstrated that Amdahl's pessimistic ceiling assumes a fixed problem size [3]. In high-performance computing, practitioners scale the problem size with the available processor count to maintain roughly constant wall-clock execution time (weak scaling). Measuring the serial fraction \(s\) on the parallel system with \(N\) processors, the scaled speedup \(S_{\text{scaled}}(N)\) is:

\[S_{\text{scaled}}(N) = s + N(1 - s) = N - s(N - 1)\]

Gustafson's Law demonstrates that speedup can scale near-linearly with \(N\) if the parallel workload grows proportionally with processor capacity.

4. Parallelism vs. Concurrency

While frequently conflated in engineering discourse, parallelism and concurrency address distinct architectural concerns. In the formulation articulated by Rob Pike in 2012 [4]:

"Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once."
Attribute Parallelism Concurrency
Primary Focus Execution speed and throughput Program structure and modularity
Hardware Requirement Multiple physical execution units mandatory Can execute on a single core via time-slicing
Core Objective Minimize wall-clock execution time for a job Manage asynchronous events, I/O, and latency
Typical Workloads Matrix multiplication, ray tracing, scientific simulation Web servers, UI event dispatching, multi-agent coordination
Failure Modes Amdahl bottlenecks, communication bus saturation Race conditions, deadlocks, livelocks, starvation

5. Communication Overheads and Interconnect Limits

In physical hardware, adding processors does not produce linear speedup indefinitely due to communication bottlenecks and memory bandwidth constraints:

See also

References

  1. M. J. Flynn, "Some Computer Organizations and Their Effectiveness," IEEE Transactions on Computers, vol. C-21, no. 9, 1972, pp. 948–960.
  2. G. M. Amdahl, "Validity of the single processor approach to achieving large scale computing capabilities," in AFIPS Conference Proceedings, vol. 30, 1967, pp. 483–485.
  3. J. L. Gustafson, "Reevaluating Amdahl's Law," Communications of the ACM, vol. 31, no. 5, 1988, pp. 532–533.
  4. R. Pike, "Concurrency is not Parallelism," Waza conference presentation, Heroku, 2012. Slides: https://go.dev/talks/2012/waza.slide
  5. D. A. Patterson and J. L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, 6th ed., Morgan Kaufmann, 2020.
  6. S. Williams, A. Waterman, and D. Patterson, "Roofline: An Insightful Visual Performance Model for Multicore Architectures," Communications of the ACM, vol. 52, no. 4, 2009, pp. 65–76.