Parallelization Technology v 0.2 Parallel-Developers Discussion 6/29/11
Origins Indebted to HPCWire article by Michael Wolfe /compilers_and_more_programming_at _exascale.html /compilers_and_more_programming_at _exascale.html
Parallelization Tech Instruction-level Thread level Process level Language level Design Patterns Numerical Libraries Virtualization
Instruction-level Vectorization: 3DNow!, SSE, AVX Instruction (VLIW / FMA) Pipelining Requires tuned libraries, assembly language, or tunable code Potential portability constraints Array Building Blocks
Libraries POSIX Threads (pthreads) OpenMP TBB MPI Hadoop
Language UPC / CoArray Fortran X10 / Chapel Cilk OpenCL / CUDA Haskell / F# Matlab / Mathematica Java / Go / Erlang / Scala
Functional-ish Languages Thread – functions parallelize well due to language assumptions as well as compiler Powerful type system and dimensional analysis (free at runtime due to compile- time checking) OCaml/ Functory Erlang Haskell Scala F#
Matlab / Mathematica Low barrier to entry Potentially significant overhead for environment Matlab: – Distributed Computing Toolkit on the Client, Distributed Computing Engine on the Worker – Can run independent workers or shared-workload – Matlab Compiler for stupid parallelization Mathematica – Native support, GridMathematica option – ParallelDo