Physics is driving a revolution in software development. For software developers, I’m sure it’s odd to think about it this way but the evolving trends in semiconductor manufacturing is going to have a profound impact in how applications, tools, and software design methodologies take shape in the coming years. In a nutshell, the combination of Moore’s Law scaling and power-efficient architectural designs is leading us down a path that will greatly increase the amount of parallelism visible to the software developer. As a result, what was once the niche discipline of parallel programming is now going mainstream in a huge way. With this transition, however, comes an enormous challenge…I’ve used the word “niche” glibly…parallel programming has been whatever you’d call that next thing smaller than a niche. Until recently, this means that students graduating form undergraduate programs were unprepared for multi-core programming. A more pressing near-term problem is the relative lack of experienced parallel programmers in industry. The estimates vary depending on whom you ask, but a reasonable estimate is that 1% (yes, that’s 1 in 100) of programmers, at best, have “some” experience with parallel programming. The number that are experienced enough to identify performance pitfalls across a range of parallel programming styles is probably an order of magnitude or two fewer. As we (and our competitors) produce microprocessors with ever increasing core counts, we have to make sure the applications and software is there for the end-user to realize the enormous performance potential of these devices. So, how does this happen? While the butterfly effect of semiconductor physics driving a revolution in software development has become increasingly obvious, but it won’t be a sudden, violent change. At Intel, we’re pretty lucky in that we count among our ranks a disproportionate number of those software developers with vast amounts of experience in parallelism. This is largely a result of our investments in high-performance computing products and research in the last couple of decades. Our goal is to use this expertise to enable our developer community to make the transition to multi-core painlessly. The latest issue of the Intel Technology Journal describes the varied approaches we’re taking to tackle this problem:
- Tools for automatic parallelization and vectorization in the Intel Compilers;
- Building blocks for parallel applications, including IPP, MKL and TBB;
- Tools for tuning performance and tracking threading-related down bugs;
- Case studies in parallelizing applications;
- Forward-looking research in parallel programming models;
- System software technologies for scalable operating system services.