Intel Go Parallel
Intel
Getting Started Concurrent Programming Community And Opinion Tools and Tips Advanced Concepts Go Parallel RSS Feed
 Print Print

Think Parallel or Perish
James Reinders, lead evangelist and Director of Marketing and Business Development for Intel Software Development Products, doubts that any developer can survive the next decade without learning think about parallelism.

For multi-core processors like the Intel Core 2 Duo, hardware is only part of the performance story. To take full advantage of the new processors directly in applications, developers will likely "thread" their applications so they run in parallel and take advantage of the multiple cores.

That can be a daunting task for developers, but Intel has just made it a lot easier. James explains his theory, while making a disturbing claim that software developers have to learn to think differently. 

Read Michael Singer's counter to this article.

I jotted out a note: "Memo to self: The fastest way to unemployment is to not hone my programming skills for exploiting parallelism." Originally I was going to say, "Memo to software developers." Then I realized I was just avoiding the truth—this was a memo to me. I have some experience in this area already, and I may be ahead of the curve, but the rush to multi-core is hardly going to slow down to match my speed.

Multi-core changes the world. For software developers, multi-core is both an opportunity and a headache for software developers.

Why have we waited so long to move to parallelism? Simple—it is a change we've been able to avoid—one which requires us to think and act differently.

What benefits does it have? I think of it this way—you can have all the performance you want if your program is ready for parallelism. All you have to do is buy more processor cores. You no longer have to wait for Moore's law to double your performance every 18 months. Instead, just buy more processor cores. Of course, you can wait for double the cores at the same price—and get the benefits for free as time marches on. You need to think and program "parallel" for this to be real.

Do we have a choice? Not really, but that doesn't mean it is bad. In fact, I'm quite convinced that the "not parallel" era will appear to be a very primitive time in the history of computers when people look back in a hundred years. The world works in parallel, it is about time for computer programs to do the same.

The exciting new software development products we introduced in August are unique in how they solve key problems others are not solving. They make the developers' work significantly easier. Updates to two of our great tools—Intel Thread Checker and Intel Thread Profiler—and a really important new product that extends C++ for parallelism—the Intel Threading Building Blocks—will make it much easier for developers to realize significant gains with each new processor innovation.

At Intel, we have been doing multiprocessor work for years and are arguably the best in the world at producing and debugging multiprocessor code. Now everyone needs to care. And with these new tools, we have solutions to help.

We all have things to learn. But the day is not far off when we will entertain a younger generation of developers with hair-raising tales of how we optimized instructions to speed up the one thread of execution we had available to us. We will tell our tales, and they will be interesting history because no one will be thinking that way anymore.

Within a decade, a programmer who does not think "parallel" first will not be a programmer. Programming in parallel is not intrinsically harder than what we do now, but it is different. We need to think differently, and we need tools that support this thinking. The tools in this new world do not need to be radically different—but they need to address key problems related to abstraction of thread management and correctness verification.

Decades ago programmers looked to high-level languages to abstract machines so that Fortran, COBOL and C could replace assembly language programming. In time, abstraction grew to include C++, Java and C# to name a few. Now, we need to avoid thinking that parallelism is exploited through Windows threads and pthreads. Instead, we need to look to OpenMP and Intel Threading Building Blocks.

Also, we need to acknowledge the new challenges in debugging threaded applications. Specifically, we need to eliminate potentials for data races and deadlock. This is why the Intel Thread Checker is so exciting—it is a tool to help developers do exactly that. We have learned a lot since version 1, so our version 3 is greatly refined. I expect there is a lot of room for future innovation here, and development of threaded applications will continue to get easier and easier.


   
James Reinders is a senior engineer and is currently the director of business development and marketing for Intel's Software Development Products and serves as the chief evangelist and spokesperson. He has been a leader in the creation of Intel's Software Products including product plans, support, technical marketing, marketing and business development. Reinders' is also the author of Intel Press book titled 'VTune Performance Analyzer Essentials' and contributor to the new book 'Multi-Core Programming.'
Submit article to:
Ever wonder why we don't hear more from threading practitioners about how they managed to grok concurrency? Perhaps it's because they're too busy enjoying the performance increases. They won't say it's easy, but the Vegas Pro developers at Sony Creative Software are understandably proud of their growing expertise in threading and OpenMP. »
While threading can be a challenge, new software development tools help simplify the process by identifying thread correctness issues and performance opportunities. We present a methodology that has been used to successfully thread many applications and discuss tools that can assist in developing multi-threaded applications. »
This paper describes the performance analysis phase of the threading methodology we presented in our previous paper, "Best Practices for Developing and Optimizing Threaded Applications." »
Understanding Dual Processors, Hyper-Threading Technology, and Multi-Core Systems
Multi-Threading in a Java Environment
» More Personalized Content
Getting Started (94)
Concurrent Programming (110)
Community and Opinion (50)
Tools and Tips (86)
Advanced Concepts (60)
What concurrency info do you need right now?
(Choose your top answer.)
An introduction
Threading basics
Advanced parallelism concepts
Optimization tools and techniques

View Results
Past Votes