Abstract
The workshop on Compiler-Driven Performance provided an important opportunity for academic researchers, and industry researchers and developers from across Canada and in the United States to meet to examine state-of-the-art compiler technology and to discuss future directions for research and development.
Developments in computing technology motivates a number of key challenges for compilers to address. The workshop had a particular focus on the following.
(1) Innovative Compiler 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 out-of-order, superscalar processors. Managing this complexity, 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:
Highly-parallel hardware has created new opportunities for the utilization of such resources by advanced compilers. Progress was reported both in the development of new analysis techniques, in the exploitation of new technological solutions to facilitate the expression of concurrency and to deal with the needs for computation synchronization --- such as hardware-supported transactional memory --- and for data communication between computing domains. Approaches to improve the utilization of heterogeneous hardware platforms where also discussed.
(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 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, and pattern-matching, systems that have FPGA co-processors, graphics processing units (GPUs) and custom accelerators, which will likely soon be incorporated on-chip with regular processors. The resulting heterogeneous hardware presents another key challenge that the community targeted by this workshop is working to address.
(4) Dynamic Compilation for High-Performance and Real-Time Environments:
Of ever-increasing importance are compilers that dynamically translate or optimize programs, 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, allowing systems to present abstracted interfaces while ensuring an efficient implementation. Such layers of abstraction are important to allow 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 pose many challenges in terms of optimization design, requiring 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 and mobile devices through high-end supercomputers. Compilers that can optimize for power or coordinate the power-reduction features of other parts of the system are of great interest. 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 more subtle errors at runtime. Such techniques are likely to play an increasing role in software development, lead to many analysis and runtime optimization challenges, and represent an interesting further application domain for software analysis.
(8) Whole System Optimization and Analysis:
Many applications are in practice run in a non-trivial context, along with other activities or programs. Individual program behaviours and resource competition 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 and infrastructure for understanding programs and performing research. Development of new analysis techniques and optimizations is facilitated by basic program exploration, profiling, and visualization, looking for further sources of semantic meaning that can be applied to improve performance, language design, or toward 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. The 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.