Four Solutions to a Trivial Problem - Guy Steele Jr.

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.