Training

Is it time to ask for directions?

CUDA Training

I recently finished teaching an Acceleware CUDA training course, so the timing seemed appropriate to share some of my experiences from the course and share some of the students’ thoughts as they progressed through the training material. When you are immersed in GPU technology on a daily basis, it is easy to take the fundamental concepts of CUDA for granted. Teaching the course forces me to revisit the foundations of GPU programming and gives me some insight into some of the thoughts of people approaching the GPU for the first time.

Learning the GPU – the First Probable Outcomes

When people first start working with the GPU, they invariably experience one of the following outcomes:

  1. I have no idea where to begin.
  2. The performance on the GPU is slower.
  3. The performance on the GPU is marginally better than the CPU.
  4. The performance on the GPU crushes the CPU!

I Have No Idea Where to Begin!

This is not uncommon. The GPU does not work like a normal CPU and it requires a completely different mindset to program. By way of example, I’m going to blatantly steal, I mean borrow from Mike’s analogy of home renovations. Imagine that you are building a house using the following (simplified) process:

  1. Pour the foundation
  2. Add the frame to the home
  3. Build the roof
  4. Plumbing and electrical
  5. Apply the finishing touches

What parallel programming and kitchen renos have in common

Recently, a long-time friend of mine decided to replace his kitchen cabinets, and learned a key lesson about core competency that I find highly relevant to what we do at Acceleware. The story started something like this: “Hey Mike, I found this great deal on some new kitchen cabinets, so I’m going to pull out my old ones and put these ones in. I figure if I work evenings I can have it done it two weekends.” Me: “Sounds cool, let me know if you need a hand” but thinking “you can’t be serious with the two weekend thing can you?” And so began the epic journey.

When the dust finally settled, literally, it took him just under three months. “Turns out I had to rip out the drywall because I damaged it pulling out the cabinets, then the insulation turned out to be moldy due to a water leak so I pulled that out, then I found out that I had lead-based solder in my pipes – replaced those too, and there was the re-wiring of the kitchen to get another circuit in there, then we figured we might as well do the tile, so it’s turned into a complete kitchen overhaul.” Sheesh! So what is the important lesson here? My friend summed it up very nicely saying “If you enjoy the challenge of teaching yourself new things, then go ahead and do it yourself, but if you want the job done, hire a professional.”