5 months in multi-core - what has changed?
This week found me in Zurich, Switzerland, delivering a talk to researchers. The purpose of my talk and the other talks at this symposium was to share what different companies and researchers are doing to help ‘solve’ the multi-core programming software challenge.
My content was similar to a talk I delivered in Japan earlier this year. The topic of my blog will be a reflection on what, if anything with regard to multi-core has changed in 5 months.
Just for grins, here’s the abstract of the talk:
The state of the art for optimizing and programming for parallelism on multi-core processors is evolving with many programming models being offered as the possible ‘solution’ that software developers should use. Some would argue that there are perhaps too many such solutions being considered and some consolidation should occur. This talk shows the multicore programming technologies both currently available and being evaluated in the Intel® C++ Compiler. We’ll look at some different parallelism methods, such as software transactional memory, OpenMP 3.0, array notations and offer insight into what is guiding development of each.
Probably the most interesting change for my talk in the last five months has been the announcement of the Intel Parallel Studio. The toolkit is comprised of four different tools: Intel Parallel Advisor, Intel Parallel Composer, Intel Parallel Inspector, and Intel Parallel Amplifier.
Of course I work at Intel so I know a few more details on these tools, but cannot share them at this point. However, on the surface, I’m very excited by the Advisor tool which aims to ‘Gain insight on where parallelism will benefit existing source code.’ I believe this is a key area of the multi-core development cycle that has relatively little tools support today. In addition, the tool targets developers who cannot necessarily throw their current implementation away and redesign. This particular theme lines up with my motivation and work with David Stewart on the Multicore Programming Practices working group which targets existing and legacy applications.
I believe other software vendors are developing or are soon to make available tools with similar capabilities. This is good news. The availability of this type of tool can only help programming for multi-core so I’m excited to test drive them as soon as they are available.
On a personal note: Zurich is a beautiful city. One cool portion of my trip was attending Sunday service at the Fraumunster Kirche (building with the large clock tower in the background). Amazing.
Posted on: Monday, October 27, 2008 at 9:24 pm
Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.


The biggest challenge in creating parallel software designs is the process of human reasoning. Human reasoning is by nature sequential. The explicitly parallel designs are not scalable to general large projects. At best programmers try to multithread a small portion of performance sensitive code. We need a totally new paradigm of software design that would allow a programmer to think sequentially while the programming language/environment/etc. automatically create multithreaded asynchronous implementations. One approach that achieves that is an event-driven architectural design. Events are by nature asynchronous, loosly coupled and well parallelized. On the other hand a software developer only needs to reason about sequential tasks of event generation and consumption, the framework does the rest.
November 7th, 2008 at 5:13 pmDear Max,
I think you would find it highly useful and interewsting to discuss with professor Erik Hagersten, CTO and founder of Acumem. He will do a presentation about multi-core and software development in Intel’s booth at SuperComputing in Austin this week. If you are there please look for Erik.
Best regard,
Mats
November 17th, 2008 at 4:09 pm