Concurrency: The Compiler Writer’s Perspective


Google’s Brian Grant discusses the problems of parallelism


Email    print   
November 15, 2007 —  (Page 1 of 3)
It’s rare to find concurrency practitioners with the right mix of technical insight and commercial software success. Brian Grant is a former software architect at PeakStream, which was acquired in June by Google. Though he’s tight-lipped about his current work, his concurrency background extends beyond PeakStream to include work at Lawrence Livermore National Labs on massively parallel machines.

PeakStream grew out of the Brook stream programming language for graphics processing units (GPUs), which originated at Stanford University. PeakStream’s suite of APIs, a virtual machine, a system profiler and a just-in-time compiler enables multithreaded applications to run on a panoply of hardware (multicore x86 processors, CPUs enhanced with GPUs, and possibly IBM's Cell). Before the acquisition by Google, PeakStream had aimed its multicore programming product at industries with obvious interest in high-performance computing: oil and gas, defense, finance and academia.

All this gives Grant a unique view on what makes concurrency hard, and what will—or won’t—make it easier. Though our conversation grazed only the surface of these issues, it was useful to gain a compiler writer’s perspective on the problems of parallelism.

SD Times: Is concurrency too difficult for developers accustomed to linear programming to grasp?

Brian Grant: It is challenging, but I don’t think it’s too challenging. I do think certain languages, especially C and C++, make it very challenging to write robust big multithreaded systems. Basically, they have features that are hostile to concurrency.

So the nondeterminism inherent in concurrency isn’t a deal-breaker?

I don’t think so, not by itself. There are tools and methodologies that can help developers cope with nondeterminism. However, many other features in the languages are problematic: for example, global and static variables in C and C++. In particular, if you’re coming from legacy code where you may not have considered the impact of concurrency, you may have lots of areas that will be problematic.

The key is managing the complexity by imposing some kind of discipline. As with all software, you need to break it into components, layers and well-defined interfaces. You have to access shared data in disciplined way. C, C++ and current compilers are inadequate to help in that way.




Pages 1 2 3 


Share this link: http://sdt.bz/31335
 
Most Read Latest News Blog Resources

Add comment


Name*
Email*  
Country     


  • Comment
Loading




close
NEXT ARTICLE
LLVM gains Libc++, new version of Glasgow Haskell Compiler
Standard C++ library gets updates ahead of C++'s own updates Read More...
 
 
 
 
News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 

Download Current Issue
FEBRUARY 2012 PDF ISSUE

Need Back Issues?
DOWNLOAD HERE

Want to subscribe?


 
blogs tab
Are you at risk for burnout?
Burnout is a severe problem and it can strike at any time. Here's how to tell if you are nearing the edge.
02/09/2012 02:16 PM EST

Agility, mom, and apple pie
If we're to evaluate the state-of-the-art in software development, we should start with the values espoused in the Agile Manifesto.
02/07/2012 11:57 AM EST

RIM woos developers with free tablet
How do you get more apps ported to the BlackBerry PlayBook? By giving every developer a free tablet, of course!
02/04/2012 01:57 PM EST

GitHire: Use Headhunters to Find Your Perfect Programmer
Are you a hiring manager tired of scouring the job boards? Check out this new service that will find 5 people interested in your jobs.
02/03/2012 12:17 PM EST

Facebook claims hacker cred
Facebook's SEC S-1 filing form includes a short essay on the Hacker Way by Mark Zuckerberg himself.
02/02/2012 08:26 AM EST

Ryan Dahl steps down
Ryan Dahl, creator of Node.js, steps back from his position as gatekeeper for the project.
02/01/2012 04:58 PM EST

 
Events calendar tab
2/13/2012 to 2/16/2012
Santa Clara
TechWeb

2/26/2012 to 2/29/2012
San Francisco
BZ Media

2/27/2012 to 3/2/2012
San Francisco
RSA

3/4/2012 to 3/7/2012
Las Vegas
IBM Tivoli

3/5/2012 to 3/9/2012
San Francisco
TechWeb