- Marginal only improvement of command parallelization at the CPU level
- Transistor heat
- Stagnant CPU clock frequency
- Multiple (unexploited) CPU cores
- Our conscious thought processes are sequential
- The Amdahl law restricts performance speedup
- The road is full of traps
- Race condition
- Deadlock
- Livelock
- Multiple threads
- OpenMP
- Programming languages
- Scala
- Haskell
- Clojure
- F#
- Erlang
- R (parallel)
- Specialized platforms
- Multiple processes
- Multiple threads
- Databases
- Web-centric development
- Cloud services
- Without dependencies
- xargs -P
- GNU Parallel
- With dependencies
- Pipes
- make -j
- Parallelized image decompression
find . -name '*.jpeg' |
parallel 'djpeg -scale 1/16 {} |
cjpeg -outfile thumb/{}'
- Parallelized file analysis
cat access_log* |
parallel --pipe print_user_agent
- C++
- QtConcurrent
- Java 8
- java.util.streams
sales.parallelStream().
map(s -> s.price).
average().
getAsDouble();
- .NET
- PLINQ
- AMD Framewave
- Intel Integrated Performance Primitives
- Cover:
- Image and audio processing
- Video coding and decoding
- Signal processing
- Cryptography
- Compression
- Image creation (rendering)
- NAG: Numerical and statistical processing
Examples AWS:
- Elastic map reduce (Hadoop)
- Lambda (event-driven code)
- Elastic transcoder
- Kinesis (streaming big data processing)