Here we go…

This blog is my attempt to document my exploration of some parallel programming techniques. You may also help to keep me on track with helpful comments and suggestions, after which this blog may help others follow this path.

I see three main areas of parallel programming I want to investigate, differentiated by their distance from the CPU chip and the amount of parallelism they offer:

  1. Exploiting parallelism in multicore CPUs (limited to eight cores at this time). I will use Intel’s open source Threading Building Blocks (TBB) for this part.
  2. Exploiting parallelism in off-CPU graphic processing units (GPUs) with hundreds of processing engines. Nvidia’s CUDA Toolkit will be my starting point for this part.
  3. Exploiting parallelism in “cloud computers” where thousands of computers cooperate through the Internet. Google’s MapReduce framework is the standard bearer for this but is proprietary, so the open source Hadoop or QtConcurrent may be the best alternatives. (I know the least about this area, so my plans are very fluid at this point.)

Anyway, that’s my direction right now. More posts as I proceed…