It’s fair to say that today’s processors are getting pretty advanced. The arrival of dual core processors marked a significant change in processor design and the performance we can expect from them. Whatever your beliefs about the limitations and upper limits of Moore’s Law for single core processors, multicore processors are here to stay. And with multicore (or manycore), as developers, there’s a whole new way of programming to master: parallel programming.
Microsoft has recognised this with their Task Parallel Library (with a focus on the .NET architecture here). Indeed, Microsoft’s commitment and vision in the parallel space, particularly for developers is recognised by those on the ground and by those further up the corporate ladder: “Microsoft’s goal is to make the benefits of building software on manycore architectures simple and accessible to the broad developer community.” – S. Somasegar.
Processor manufacturers are keen to promote development for manycore. It’s easy enough to sell processors (or so I believe), however if programmers have to re-align their development techniques and thinking, writing applications that run on manycore devices is going to mean a change to the rules. Historically, programmers have shyed away from parallel and concurrent programming. The challenges of understanding and dealing with race conditions, task-to-task communication and synchronisation have played their part in chasing developers away. In the concurrent programming space, predictability, re-orderability, reconciliation and data stability cause similar concerns.
Intel are in the software library space too, they have their Intel® Parallel Studio which promises to deliver simplified, end-to-end parallelism to Microsoft Visual Studio C/C++ developers. Indeed, Intel are providing considerable support for those of us learning parallel whether it’s as a beginner or an advanced practitioner.
June 2009 saw Intel launch their own on-line TV channel: the Intel® Software Network TV. Of course, you can follow the show on Twitter: @isntv
Whilst the channel isn’t 100% dedicated to parallel programming, there are two specific shows of interest:
- Parallel Programming Talk (Every Tuesday, 8AM Pacific – 1600 in the UK)
June 30: Joe Duffy of Microsoft will discuss the Microsoft Parallel Extensions to .NET and Microsoft Task Parallel Library. Joe Duffy is the lead developer and architect for Parallel Extensions to .NET. - Teach Parallel (Alternate Tuesdays, 10AM Pacific – 1800 in the UK)
June 30: HPC Centers can help support curricular change. Tom interviews Scott Lathrop, Blue Waters Technical Program Manager for Education & TeraGrid Area Director for Education, Outreach and Training.
I’ve been watching the shows since the June 9th launch: they’re professionally done, yet have the air of flying-by-the-seat-of-your-pants about them…which adds both realism and that little something to each show! Typically the shows are live and bring together big names either in person or over a video link. Remote presenters often appear on a laptop screen which gives the show a real sense of community. Most shows are 30 minutes long, which is good insofar as they don’t take too much time out of your working day. And they are “right-timed”, live broadcasting doesn’t start until 8AM Pacific which is 1600 London time.
So far the shows have focused on parallelism in academia. However you may have noticed that I’ve included details about the June 30 shows. I’m particularly interested in Joe Duffy’s inclusion on the agenda. Joe’s the author of a couple of very popular books:
If you are developing applications using the Microsoft tools, listening to what Joe Duffy has to say is a not-to-be-missed opportunity. Learning how to take advantage of manycore processors that are available is going to be a key skill to have (if it isn’t already). Joe’s a lead developer and architect for the Parallel Extensions to .NET. He probably works very closely with The Moth, and we know that Dan’s content is second-to-none: I’m sure we can expect the same from Joe.
See you online at Intel® Software Network TV on the 30th of June at 1600 (London time)!
References
Dealing with Concurrency: Designing Interaction Between Services and Their Agents
Parallel computing
Concurrent computing