Multicore Programming Practices
14. June 2008
admin
I’m back from DAC after speaking at a birds of a feather session on a new industry working group:
- Multicore Programming Practices - defining industry-wide, best practices to leverage existing code in multicore environments.
The working group is a part of the Multicore Association (www.multicore-association.com), a cross industry, vendor-neutral body defining standards to help with the multicore transition. I am co-chairing the working group with David Stewart, CEO of CriticalBlue.
Our goals are pretty simple. I’ve been involved with the embedded market segments’ transition to multicore processors for the past 5 years and see a real need for basic agreement and education on terms and best practices. So that’s really it. We’re not inventing something grand like a new language or API. We are agreeing upon and documenting best practices aimed at taking legacy code in C/C++ and making the code run in parallel.
On June 5 in Austin, the working group had its first meeting. We asked each member company to detail what they would consider their top fives issues when it comes to taking advantage of multicore. The next step is to categorize and create an ‘outline’ that could possibly serve as the outline for the end document. It will certainly be more work than simply outline and write and we’ll certainly learn and adjust as we go, but I was encouraged by the initial meeting. 11 companies provided input during this discussion.
I’ll write more as the group and its work takes shape.
On a personal note, the 3 weeks of straight travel are over. Nothing on the boards until August except a July trip to Vegas for NBA summer league.
Uncategorized | 0 Kommentare »
EXOCHI as in EXO-Cha Cha Cha
30. May 2008
admin
I’m sitting in the speaker ready room at Intel R&D day in Tokyo preparing for my talk in two hours. The subject of my talk is on the future plans of the Intel C++ Compiler with regards to programming for multi-core processors. I have the distinction of following after Matsumoto-san, the inventor of Ruby. Hopefully, I don’t disappoint.
One part of my talk that I find particularly compelling is research Intel is doing in heterogeneous multi-core programming using extensions to OpenMP, one of my favorite APIs for parallel programming. The power of OpenMP is ease of use. If you’ve never seen OpenMP… it is possible to transform a serial program into a parallel program with one OpenMP statement, or pragma.
The particular extension, called EXOCHI (pronounced X-O-Cha), extends OpenMP by adding clauses to support spawning threads (called shreds) on processors with different instruction set architectures. In effect, it is possible to have one piece of code that contains instructions for different types of processors. It is certainly possible to program for these coprocessors today with one code base through the use of libraries (Direct X is an example of such a library), however these approaches abstract away the low level hardware which is what some developers would like to access. In addition, EXOCHI enables virtual shared memory through hardware support which grants the nice properties of shared memory while limiting the performance penalties. Very powerful.
In two weeks, I’ll be participating on a panel at Design Automation Conference which will seek answers on why tools to aid with heterogeneous multi-core and multi-processor SOCs have not really caught on. My suspicion is a tool like EXOCHI may be just what is needed to lower the barrier for heterogeneous multi-core software development.
One more rehearsal of my talk before I go onstage, give the presentation, and then hopefully talk my colleagues into Kobe beef.
If you need a reference on EXOCHI, the paper can be found at,
http://portal.acm.org/citation.cfm?id=1250734.1250753
Max
Uncategorized | 0 Kommentare »
Perspective
14. May 2008
admin
“It transforms into a bird
Its name is Peng
The wingspan of Peng
We know not how many thousand leagues” - Chuang Tzu
Sometimes you can fall for a trap when you work on the same project with the same people for years on end. You start assuming that the thoughts and state of mind shared by the folks you iteract with completely represents the state of mind of the general engineering community. I may have recently fallen into this trap with regard to the adoption and leveraging of multicore processors in the embedded community.
Last month at Multicore Expo, I heard a speaker comment on the need to make code “Multicore ready”. My initial thoughts in reaction were “What do you mean Multicore ready? I’ve been pitching software techniques for Multicore for over 3 years now. Everyone should be moving already.”
I could sense many attendees responded positively to the speaker’s comment. This led me to wonder if I’d fallen into the trap of having a perspective limited by the engineers I have the most contact with (other engineers at Intel) and the work I’ve been doing.
So my question is where are folks at with leveraging multicore processors in their embedded design? Are we still predominately in a state of wondering what to do with multicore processors and how to make code ‘Multicore ready’? Or are we well past that point and into planning our next design to take further advantage of multicore processors?
I’m basically asking - what help do customers need?
Uncategorized | 1 Kommentar »
