Chapter

Euro-Par 2010 - Parallel Processing

Volume 6272 of the series Lecture Notes in Computer Science pp 328-340

A Language-Based Tuning Mechanism for Task and Pipeline Parallelism

  • Frank OttoAffiliated withKarlsruhe Institute of Technology
  • , Christoph A. SchaeferAffiliated withKarlsruhe Institute of Technology
  • , Matthias DempeAffiliated withKarlsruhe Institute of Technology
  • , Walter F. TichyAffiliated withKarlsruhe Institute of Technology

* Final gross prices may vary according to local VAT.

Get Access

Abstract

Current multicore computers differ in many hardware aspects. Tuning parallel applications is indispensable to achieve best performance on a particular hardware platform. Auto-tuners represent a promising approach to systematically optimize a program’s tuning parameters, such as the number of threads, the size of data partitions, or the number of pipeline stages. However, auto-tuners require several tuning runs to find optimal values for all parameters. In addition, a program optimized for execution on one machine usually has to be re-tuned on other machines.

Our approach tackles this problem by introducing a language-based tuning mechanism. The key idea is the inference of essential tuning parameters from high-level parallel language constructs. Instead of identifying and adjusting tuning parameters manually, we exploit the compiler’s context knowledge about the program’s parallel structure to configure the tuning parameters at runtime. Consequently, our approach significantly reduces the need for platform-specific tuning runs.

We implemented the approach as an integral part of XJava, a Java language extension to express task and pipeline parallelism. Several benchmark programs executed on different hardware platforms demonstrate the effectiveness of our approach. On average, our mechanism sets over 90% of the relevant tuning parameters automatically and achieves 93% of the optimal performance.