As computer hardware continues to dramatically improve in transistor density and raw capability, the importance of compilers for bridging the gap between high-level programming languages and abundant hardware resources has never been greater. In the footsteps of ten previous iterations, this 11th workshop about Compiler-Driven Performance brought together academic faculty, students, industry researchers and developers from across Canada and the United States to meet and discuss state-of-the-art compiler technology, new innovations and future directions. The current state of computing technology motivates a number of key challenges for compilers to address. This workshop had a particular focus on the following: (1) Innovative Analysis, Transformation, and Optimization Techniques: Today's software systems are often composed of several different languages and programming models. At the same time the underlying processors and memory systems are typically complex and out-of-order superscalar processors. Managing this complexity and trying to produce efficient systems in a way that does not increase the burden on programmers requires constant innovation in compilation methods and optimizations. (2) Languages, Compilers, and Optimization Techniques for Multicore Processors and Other Parallel Architectures: As we approach and surpass one billion transistors on a single die, all processor vendors have switched to multicore product lines. Dual and quad core designs are now commodity products and the number of processors contained on future chips will likely double with each generation, soon reaching a thousand processor cores on one chip. This highly-parallel hardware represents a daunting challenge for average programmers; compilation technology is well-suited to ease this parallel programming crisis. Potential solutions range from new languages of expressing concurrency to speculative threading and transactional memory. (3) Compiling for Streaming or Heterogeneous Hardware: In addition to highly-parallel, multiple-core processors for general-purpose and scientific computing, the computer hardware industry is also aggressively pursuing custom computing cores in order to accelerate key applications. Such heterogeneous computing systems were once limited to the embedded domain, but are becoming increasingly common for general-purpose computing. Examples include cores for encryption, compression, pattern matching, systems that have FPGA co-processors, IBM/Sony/Toshiba's CELL processor, which contains multiple vector processors for media and other stream processing, and graphics processing units (GPUs), which will likely soon be incorporated on the chip with regular processors. The resulting heterogeneous hardware presents another key challenge that is addressed by the community targeted by this audience. (4) Dynamic Compilation for High-Performance and Real-Time Environments: Compilers that dynamically translate or optimize programs are of ever-increasing importance, not only to support interpreted languages such as Java, but also to exploit the run-time behaviour of programs written in C and C++ to improve efficiency and performance. Run-time adaptation can usually take advantage of more precise state information, which allows systems to present abstracted interfaces while ensuring an efficient implementation. Such layers of abstraction are important for allowing programmers to efficiently target the emerging highly-parallel and heterogeneous hardware. (5) Compilation and optimization for Scripting Languages: the performance of scripting languages such as python, ruby, php, javascript, and others are of increasing importance to the overall performance of most online systems. These interpreted and often dynamically-typed languages present many challenges in terms of optimization design. They require highly dynamic and adaptive techniques to overcome the lack of static information, language idioms, and novel workloads found in different execution contexts. (6) Compilation Techniques for Reducing Power: Reducing power consumption is a key challenge for all computer systems, from hand-held mobile devices to high-end supercomputers. Compilers that can optimize power or coordinate the power-reduction features of other parts of the system are of great significance. This extends to the compiler itself, incorporating power-friendly methods in the context of dynamic compilation. (7) Program Safety: The size and complexity of many modern software projects makes programming errors both difficult to find and easy to produce. Compiler approaches have shown potential to improve code safety by detecting common bugs ahead of time or by automatically trapping subtle errors at runtime. Such techniques are likely to play an increasing role in software development, ease many analysis and runtime optimization challenges, and represent an interesting further application domain for software analysis. (8) Whole System Optimization and Analysis: Many applications run in a non-trivial context along with other activities or programs. Individual program behaviours and resource competition will then affect overall system performance. Designs that assess complementary or competitive behaviours, or that dynamically adjust individual execution to improve global system usage extend program optimization and analysis techniques to higher-level execution goals. (9) Tools and Infrastructure for Compiler Research: The changing technology landscape highlights the need for ever-improving compiler-based tools as well as infrastructure for understanding programs and performing research. Development of new analysis techniques and optimizations is facilitated by basic program exploration, profiling, visualization and looking for further sources of semantic meaning that can be applied to improve performance, language design, or other optimization goals. Continued language and hardware development requires continued effort to identify new sources of potential optimization, and develop novel techniques for new contexts. This workshop on Compiler-Driven Performance allowed researchers to share progress in developing new approaches to existing problems and in identifying new optimization opportunities and performance vectors for current and future languages. The workshop had the additional benefit of both providing and demonstrating strong cooperation between academia and industry. Compiler optimization research is a highly practical domain, but also one in which cutting-edge research techniques can have direct application, and work in both academic and industrial contexts is improved through this level of cooperation.
更多