Print

Under Concurrence



Larry O Brien
Email
February 15, 2006 —  (Page 1 of 3)
The software development community is about to drive into a wall. While the chip manufacturers are still adhering to the letter of Moore’s Law, doubling transistor density regularly, the spirit of the law, that every new machine would be at least twice as fast as its predecessor, is now only a memory. Barring truly radical changes in processor architecture, advances in desktop and laptop speed from now on will almost entirely result from parallelism, not linear improvements in throughput.

The industry has been too complacent about the implications. Too many believe that the poor performance of the network and the paging file excuses them from having to consider performance problems. Indoctrinated on the dangers of premature optimization, too many fail to consider optimization at all. In a few years, when we change from multicore machines of two and four cores to manycore hardware, easy infrastructure improvements from the operating system and the .NET Common Language Runtime will rapidly tail off.

The CLR makes the multicore era survivable with a well-defined asynchronous idiom using BeginInvoke() and EndInvoke(), a solid threading library and Monitor-based exclusion. This will not do in the manycore era. It’s one thing to identify a hotspot in a program and realize, “Hey, I can split up the work in this array,” and another to take advantage of a world where data is routinely flowing among 8 or 16 or 32 cores.

No mainstream programming language is automatically parallelizable. This is ironic, since object-oriented programming has its roots in simulation, where concurrency is a basic concern. However, since mainstream OO languages allow state to be shared between threads, they’re fundamentally crippled. When the basic rule for thread safety is “either write objects with no fields or write objects with no virtual method calls,” the paradigms are clashing.

Surprisingly, the mainstream language that seems to have the most far-reaching proposal for manycore programming is C/C++. Herb Sutter, who is an architect at Microsoft and chair of the ISO C++ committee, gave the first public airing of his Concur project at last September’s PDC. Along with emphasizing that Moore’s “free lunch is over,” Sutter proposes that existing approaches to concurrency such as OpenMP do not go far enough and that the abstractions of .NET (and Java, for that matter) are inadequate, focusing as they do on thread management, rather than the more general concept of delayed execution.




Pages 1 2 3 


Share this link: http://sdt.bz/29126
 

close
NEXT ARTICLE
GrammaTech provides static-analysis technology to universities under expanded academic program
Award-winning GrammaTech CodeSonar static-analysis tool available for classes and research Read More...
 
 
 




News on Monday  more>>
Android Developer News  more>>
SharePoint Tech Report  more>>
Big Data TechReport  more>>

   
 
 

 


Download Current Issue
MAY 2013 PDF ISSUE

Need Back Issues?
DOWNLOAD HERE

Want to subscribe?