Four Solutions to a Trivial Problem - Guy Steele Jr.

Four practical solutions to common parallelism pitfalls, including decomposition, variance, and language choice, to help you overcome obstacles and achieve parallelism in your applications.

Key takeaways
  • Problem decomposition is essential for parallelism, but the existing solutions often have flaws.
  • Small groups can solve new problems by giving new directions.
  • Fortress is designed to look like a mathematical notation.
  • Variance in parallel processing can be overcome by use of accumulators, divide and conquer principles, and linear decomposition.
  • The accumulation paradigm is important, and accumulation is bad, while divide and conquer is good.
  • Monoid cache trees are useful, but often misunderstood.
  • Parallelism can be improved with better dividing and conquering.
  • The sequential solution to the problem is often unsuitable for parallel processing.
  • Programmers tend to give up on parallelism when they hit obstacles.
  • The management of parallelism is like garbage collection.
  • It is essential to consider the shapes and sizes of tasks when trying to parallelize them.
  • It may be helpful to identify and abstract away the parts of the problem that can be performed in parallel.
  • It is possible to add a new layer of parallelism by breaking down the problem and processing in a tree-like structure.
  • In some cases, like Fortress, the programmer must manually control the parallelism.
  • The language choice plays a significant role in parallelism, and the right language can greatly impact the likelihood of portability and maintainability.
  • In addition, the choice of data structures and algorithms must be made with parallelism in mind.
  • The height and width of a glob (linked list) impact parallel processing.
  • Bitonic globs can be used to facilitate parallel processing, and they can be combined.
  • The incremental update operator is typically asymmetric.
  • The maxinement and the splittensity of the task impact parallel processing.
  • The evergreen parallel prefix and suffix operations can be computed using bitonic globs.
  • Parallelism is often required for real-world problems.