4,580 Posts served
11,093 Conversations started
- Academic

- Android

- Art, Music, & Animation

- Embedded Computing

- Events

- Game Development

- Graphics & Media

- Intel SW Partner Program

- Intel® AppUp Developer Program

- Manageability & Security

- Mobility

- Open Source

- Parallel Programming

- Performance and Optimization

- Power Efficiency

- Server

- Site News & Announcements

- Software Tools

- Ultrabook

- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
What parallel programmers really really want...
By Stephen Blair-Chappell (Intel) (2 posts) on March 15, 2010 at 12:04 pm
I recently helped run an open forum of developers and project managers in Paris. The attendance was by invite only, and included the great and the good from the world of software development within Europe.
The purpose of the day was to hear from senior project developers\managers\strategists about the reasons why some developers were slow at adopting parallelism. During the day we also gave the latest news on parallel tools from Intel - such as the Intel Parallel Studio. At the start of the day we asked each of the 45 delegates what they considered to be the chief obstacles that were slowing down the adoption of parallelism. The top five most cited issues were legacy code, education, tools, fear of many cores, and maintainability,
This article is first in a series of six. Here I introduce the main topics in subsequent articles I will address each issue in more detail and discuss how these issues can be addressed using various tools, such as the Intel Parallel Studio.
Legacy Code.
The #1 problem was lots and lots of existing code. Some engineers spoke of having several million lines of code in their projects. Inserting parallelism into any existing code can be tough, and when that code is of significant size, the challenge can seem insurmountable. Often the code that one is working on is written by someone else who has long left the company. This point did remind me of an incident where I was helping a company to port their code to the IA architecture. Embedded in the comments was the line " in anyone knows what this code is doing, please ring me on extension 12345". In the next blog I'll show how some of some of these legacy issues can be handled.
Education
It was a common experience that there was usually one 'parallelism expert' in the team. When there were any parallelism issues, then the job went to the expert. This was an eye-opener for me. Back in my early days as a developer, I do remember being in fear of anything parallel, I held in great respect our ‘in-house' parallel expert (I was not with Intel then). That was in the era when the only way to write parallelism was to use WIN32 API or POSIX thread.
Today there is no reason why this should still be the case.
A second strand in our discussion about education was the opinion that customers also need educating about parallelism.
Tools
Good tools are essential. A good tool should speak for itself. Any tool has to be easy to use and productive. Intel has a rich collection of tool offerings for parallelism. In a future blog I'll summarise these, and discuss some ways that might help in choosing the best tool for the job in hand.
Fear of Many Cores
Everyone knows that around the corner are many cores. Today we think that 2, 4, or 8 cores are the norm. What will happen when we say have 64 core CPUs? Developers need solutions that can scale to many cores, preferably without having to rewrite any of their code.
Maintainability
Parallel code, like any other code, need to use abstractions that are easy to understand and have a long shelf-life. Any solution must be capable of working correctly alongside existing code. There must be no conflicts either with the build system or the runtime environment. We don't want today's parallel solution to become tomorrow's legacy code issue, our code needs 'future proofing'.
In the next blog I'll start to discuss these topics in more detail.
So, until next time. Ciao!
-Stephen
Categories: Academic, Parallel Programming, Software Tools
For more complete information about compiler optimizations, see our Optimization Notice.
Comments (2)
| April 10, 2010 10:54 PM PDT
Mathias Bustamante
| Is it really necessary for a developer to actually learn parallelism ? I have to code with parallelism because I'm a student and its mandatory, i totally support parallelism and actually like it, but doesn't exist a process or software that will just take any source code and distribute it among the CPUs ? So that it would just be the same to work with paralellism or not, because "something else" would apply the paralellism for us. |
Trackbacks (1)
- 实施并行编程的五大障碍 | 并行实验室 | Parallel Labs
March 21, 2010 4:29 PM PDT


himanshu.jasrotiaintel.com
5