并行编程培训
Parallel Programming
We motivate parallel programming
and introduce the basic constructs for building parallel programs
on JVM and Scala. Examples such as array norm
and Monte Carlo computations illustrate these concepts.
We show how to estimate work and depth
of parallel programs as well as how to benchmark
the implementations.Basic Task Parallel Algorithms
We continue with examples of parallel algorithms by presenting a parallel merge sort.
We then explain how operations such as map, reduce, and scan can be computed in parallel.
We present associativity as the key condition enabling parallel implementation of reduce and scan.
Data-ParallelismWe show how data parallel operations enable the development
of elegant data-parallel code in Scala. We give an overview
of the parallel collections hierarchy, including the traits
of splitters and combiners that complement iterators and builders from the sequential case.
Data Structures for Parallel ComputingWe give a glimpse
of the internals of data structures for parallel computing, which helps
us understand what is happening under the hood of parallel collections.