Recently compilation technology has been facing new challenges due to the increased interest of software engineers in higher levels of programming, like object-oriented programming (Java) and functional programming (Haskell, ML). Increasingly sophisticated methods of static program analysis have been and are being developed to meet these challenges. In particular, it has been recognized that the compile-time exploitation of domain-specific knowledge is in many application areas a key ingredient to significant improvements in program performance. Also, hiding domain-specific issues from the application programmer can simplify his/her task considerably and make programs more reliable and portable.
Domain-specific knowledge is being captured either in a specialized programming language or in modules which are specified in a general-purpose language but given a domain-specific implementation. Several research communities have been developing their own domain-specific approaches. The talk is about an approach of the second kind in the high-performance programming community.
HDC is a derivative of the functional language Haskell, in which certain functions can be designated as "skeletons". Typically a skeleton is higher-order, since some parameters are program parts instantiating the schema. Skeletons are not compiled like the rest of the program but have custom-made implementations, which are subject to compile-time and, possibly, run-time parameters. During the compilation of an application program, the appropriate skeleton implementations are selected and instantiated. The power of functional programming lies in the exploitation of compile-time information in this instantiation process.
The talk will sketch the challenges and promises of this approach. The particular application domain considered is that of parallel divide-and-conquer algorithms.
C. A. Herrmann and C. Lengauer: A Higher-Order Language for Divide-and-Conquer'', Parallel Processing Letters 10, 2-3 (Juni-Sept. 2000), 239-250.