Dr. Dobb's Journal - November 2007 - (Page 18) d11lead_p5ma.qxp 9/10/07 9:38 AM Page 18 Strategic Vision SMART COMPILERS—BUT SMART ENOUGH? And that’s why those looking seriously at the future of compilers see a multitiered approach to parallelization. “What we won’t see,” Reinders says, “is automatic parallelism [realizing] the dream of some to have the compiler do it all.” The Holy Grail, Reinders says, would be “to let me express my parallelism without coding the details.” Tackling parallelism will require multiple approaches, Tarditi thinks, and the compiler research efforts he leads at Microsoft are in fact pursuing multiple tracks. “Compiler extensions for parallelism, new programming languages for scalable parallelism, better ways to extract parallelism” from code are all part of the solution, he says. Microsoft’s research efforts are focusing on two concepts: data parallelism and transactional memory. In data parallelism, their idea is to provide a new library that supports data parallelism at runtime. Operators, reminiscent of APL code, only work over entire arrays of data, not individual variables. Tarditi sees this approach as well suited for programming GPUs, but not for all applications, although he says, “my belief is we ought to be able to use it [productively] on multicore computers.” While others (IBM, for example) are looking at new programming languages for parallelism, Microsoft’s approach is more modest, Tarditi says. They’ll be building support for data parallelism onto C#. Transactional memory treats memory operations like database transactions, locking them so that “either everything happens or nothing happens.” Integrating the transactional model into a programming language and applying it to main memory gives you a parallel programming model that is familiar and easier to use. Again, Microsoft’s target for implementing this parallelism is C#, but these research ideas are being tested in the Bartok compiler for Microsoft’s Singularity research OS. Tarditi also works on Phoenix, Microsoft’s next-generation compiler and programming tools infrastructure, “the basis for all future Microsoft compiler technologies.” Intel is pursuing something similar, a fact that became clear to Tarditi when he and an Intel team both presented papers on transactional memory at last year’s ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation. Reinders also sees multiple approaches to parallelism in the near future, and predicts that it will be exciting. “I think we’ll see more experimentation than we have in a long time. Things like transactional memory, thread pools, domain-specific extensions, heterogeneous targets—[but] exciting as it is, it won’t represent a fundamental change in compiler technology—just an amazing number of sophisticated additions.” Can we expect super-smart compilers in a few years that efficiently and automatically parallelize your algorithms and legacy code? Tangled Threads and Skewed Strands But parallelism is not the only force driving compilers to get more sophisticated. “This is not on everyone’s mind yet,” Tarditi says, “but we’re working to improve the reliability of software. Hackers are moving up the software food chain. We need language constructs and compiler support for more reliable software.” Phoenix and Singularity are both active testbeds for developing the tools for building more reliable software at Microsoft, particularly focusing on ahead-of-time compi18 Dr. Dobb’s Journal l www.ddj.com l November 2007 lation for typesafe languages. In Phoenix, the compiler and tools are tightly integrated with one another. “What would it take,” Tarditi asks, “to use, in practice, more modern languages for system programming?” Languages with type checking, array bounds checking, and the like. Microsoft is not only exploring this in-house, but it makes Singularity available to academic researchers for such basic research. “A little farther out,” Tarditi says, they’re looking into typed assembly language. The sales pitch for Java when it first came out was Java applets in verifiable bytecode; what if you could have that trustworthiness in distributed native machine code? “The next three to four years is my near term,” Tarditi points out. “This might be farther out than five years.” Microsoft is serious about tackling reliability at the compiler and tools and OS level, but it is not alone in recognizing the seriousness of the problem. “At Intel,” Reinders says, “I see how reliable silicon needs to be, and it amazes me how far all software is from this level of quality. It is a problem begging to be solved.” Researchers at Microsoft and elsewhere are aggressively looking for solutions to the reliability problem as well as exploring compiler strategies for dealing with parallelism. Some of this research is bringing products to market right now. Flashback to MIT in 1990: The Alewife project, under the leadership of Professor Anent Agarwal, had as its goal to demonstrate that a parallel computer system could be made both scalable and easily programmable. The large-scale shared-memory supercomputer that the Alewife team built provided many insights about parallel programming that fed into Agarwal’s RAW project, whose goal was “to provide performance that is comparable to that provided by scaling an existing architecture, but that can achieve orders of magnitude more performance for applications in which the compiler can discover and statically schedule fine-grain parallelism.” RAW led to the RAW Compiler Project, which took away all responsibility for optimization from the hardware and gave it to the compiler, making the compiler smarter about parallelism. All of this led Agarwal in turn to found a spin-off company, Tilera, which you will recall from the beginning of this article. Interesting times lie ahead. DDJ http://www.ddj.com
Table of Contents Feed for the Digital Edition of Dr. Dobb's Journal - November 2007 Contents Hmmmm Alia Vox Developer Diaries Developer’s Notebook Smart Compilers - But Smart Enough? Conversations Grid-Enabling Resource-Intensive Applications Distributed Computing: Windows and Linux Adobe AIR: Desktop/Web Convergence Transparency on Demand Reusable Associations Effective Concurrency The Agile Edge Swaine’s Flames Dr. Dobb's Journal - November 2007 Dr. Dobb's Journal - November 2007 - (Page Cover1) Dr. Dobb's Journal - November 2007 - (Page Cover2) Dr. Dobb's Journal - November 2007 - (Page 1) Dr. Dobb's Journal - November 2007 - (Page 2) Dr. Dobb's Journal - November 2007 - (Page 3) Dr. Dobb's Journal - November 2007 - Contents (Page 4) Dr. Dobb's Journal - November 2007 - Contents (Page 5) Dr. Dobb's Journal - November 2007 - Hmmmm (Page 6) Dr. Dobb's Journal - November 2007 - Hmmmm (Page 7) Dr. Dobb's Journal - November 2007 - Hmmmm (Page 8) Dr. Dobb's Journal - November 2007 - Hmmmm (Page 9) Dr. Dobb's Journal - November 2007 - Alia Vox (Page 10) Dr. Dobb's Journal - November 2007 - Alia Vox (Page 11) Dr. Dobb's Journal - November 2007 - Developer Diaries (Page 12) Dr. Dobb's Journal - November 2007 - Developer Diaries (Page 13) Dr. Dobb's Journal - November 2007 - Developer’s Notebook (Page 14) Dr. Dobb's Journal - November 2007 - Developer’s Notebook (Page 15) Dr. Dobb's Journal - November 2007 - Smart Compilers - But Smart Enough? (Page 16) Dr. Dobb's Journal - November 2007 - Smart Compilers - But Smart Enough? (Page 17) Dr. Dobb's Journal - November 2007 - Smart Compilers - But Smart Enough? (Page 18) Dr. Dobb's Journal - November 2007 - Smart Compilers - But Smart Enough? (Page 19) Dr. Dobb's Journal - November 2007 - Conversations (Page 20) Dr. Dobb's Journal - November 2007 - Conversations (Page 21) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 22) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 23) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 24) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 25) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 26) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 27) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 28) Dr. Dobb's Journal - November 2007 - Grid-Enabling Resource-Intensive Applications (Page 29) Dr. Dobb's Journal - November 2007 - Distributed Computing: Windows and Linux (Page 30) Dr. Dobb's Journal - November 2007 - Distributed Computing: Windows and Linux (Page 31) Dr. Dobb's Journal - November 2007 - Distributed Computing: Windows and Linux (Page 32) Dr. Dobb's Journal - November 2007 - Distributed Computing: Windows and Linux (Page 33) Dr. Dobb's Journal - November 2007 - Distributed Computing: Windows and Linux (Page 34) Dr. Dobb's Journal - November 2007 - Distributed Computing: Windows and Linux (Page 35) Dr. Dobb's Journal - November 2007 - Adobe AIR: Desktop/Web Convergence (Page 36) Dr. Dobb's Journal - November 2007 - Adobe AIR: Desktop/Web Convergence (Page 37) Dr. Dobb's Journal - November 2007 - Adobe AIR: Desktop/Web Convergence (Page 38) Dr. Dobb's Journal - November 2007 - Adobe AIR: Desktop/Web Convergence (Page 39) Dr. Dobb's Journal - November 2007 - Adobe AIR: Desktop/Web Convergence (Page 40) Dr. Dobb's Journal - November 2007 - Adobe AIR: Desktop/Web Convergence (Page 41) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 42) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 43) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 44) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 45) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 46) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 47) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 48) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 49) Dr. Dobb's Journal - November 2007 - Transparency on Demand (Page 50) Dr. Dobb's Journal - November 2007 - Reusable Associations (Page 51) Dr. Dobb's Journal - November 2007 - Reusable Associations (Page 52) Dr. Dobb's Journal - November 2007 - Reusable Associations (Page 53) Dr. Dobb's Journal - November 2007 - Reusable Associations (Page 54) Dr. Dobb's Journal - November 2007 - Reusable Associations (Page 55) Dr. Dobb's Journal - November 2007 - Reusable Associations (Page 56) Dr. Dobb's Journal - November 2007 - Effective Concurrency (Page 57) Dr. Dobb's Journal - November 2007 - Effective Concurrency (Page 58) Dr. Dobb's Journal - November 2007 - Effective Concurrency (Page 59) Dr. Dobb's Journal - November 2007 - The Agile Edge (Page 60) Dr. Dobb's Journal - November 2007 - The Agile Edge (Page 61) Dr. Dobb's Journal - November 2007 - The Agile Edge (Page 62) Dr. Dobb's Journal - November 2007 - The Agile Edge (Page 63) Dr. Dobb's Journal - November 2007 - Swaine’s Flames (Page 64) Dr. Dobb's Journal - November 2007 - Swaine’s Flames (Page Cover3) Dr. Dobb's Journal - November 2007 - Swaine’s Flames (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.