I have seen articles pass through my rss reader recently which has got me thinking about what sort of skills / techniques we will need to leverage in the next couple years in order to certify against the new chip architectures that are out there. The one that lined everything up was Is Parallel Programming Just Too Hard?. Anytime I seen ‘hard’ in the context of developers I get nervous (what can I say, I’ve been doing this for almost 10 years and am as cynical as they come). Unfortunately, I’ve come up with more questions than solutions about how we can be ready for the shift.

  • Vista is the last 32bit OS from Microsoft (link): Sure, there has been 64bit versions of windows for the last couple releases, but they are usually afterthoughts in most products’ supportability matrices. But wth Vista++ the jump to 64bit will be in full force which means that there are going to be a lot of programmers out there who have to learn how to code on that platform. I suspect there will be lots of ‘silly’ mistakes that are made as a result. Hopefully static code analysis tools will be able to catch most of these, but I have a sneaky feeling there will plenty for us humans to be occupied by as well.
  • Intel is moving away from single core chips – All but 3 or 4 chips that are on Intel’s roadmap are > 1 core which leads me to think that the days of single core chips are numbered. In the server category I think we can safely say they are over. Developers are going to start to write code in such a way that they can exploit the most performance out of all the cores available. How do we as testers verify that the work is being distributed appropriately and / or create the load patterns that might trigger a deadlock. Threading is hard. Threading is such a way to make use of all the cores available has to be an order of magnatude harder. (Bonus link – Vista++ is going to be designed to handle more than 64 cores)
  • Multiple CPUs – No longer is a machine configured to have multiple CPUs in it considered exotic, unless it is the 80 CPU one Intel showcased a couple months ago. What could be trickier to test than a new OS (like 64bit Vista++) on a multicore chip? Simple, add in another 3 or 5 of those multicore chips. Heck, how about 127 more. When I was at HP, we just made sure it ran; not that it ran efficiently.

I haven’t really seen anything about how to test these sort of things. Most of the articles are aimed at developers who are trying to debug their app when it breaks, not from the bug detection perspective. We should likely start thinking about this now.

Update: A timely link courtesy of /. regarding a new release of compilers from Intel which have thread optimization for multi-cores. Great. Here comes the next round of optimization bugs.