From XML Specifications to Parallel Programs ⋆ Ignacio Pel´ aez, Francisco Almeida, and Daniel Gonz´ alez Departamento de Estad´ ıstica, I. O. y Computaci´ on Universidad de La Laguna, c/ Astrof´ ısico F. S´ anchez s/n 38271 La Laguna, Spain ignacio.pelaez@gmail.com, falmeida@ull.es, dgonmor@ull.es Abstract. Skeleton-based libraries are considered as one of the alterna- tives for reducing the distance between end users and parallel architec- tures. We propose a general development methodology that allows for the automatic derivation of parallel programs assuming the existence of general structures as the skeletons. We propose the introduction of a new, high level abstraction layer that allows the user to extract problem specifications from particular skeleton languages or libraries. The result is a tool that allows for the generation of parallel codes from successive transformations to this high level specification without any loss of effi- ciency. We apply the technique to the automatic generation of parallel programs for Dynamic Programming Problems. 1 Introduction A widespread research methodology among scientists is based on developing a mathematical formulation that conceptually provides a solution to a problem. However, it is also common for the problem to remain partially unsolved if the scientist is not able to transform this conceptual solution into a computer program. Researchers usually bridge this gap by using software tools like mathe- matical solvers, or even by writing their own code. This gap is even more evident in the case of parallel computers, where much more effort is required by the user. A substantial effort has been made in recent decades to reduce the distance between parallel architectures and end users. As stated in [2], skeletal program- ming has emerged as an alternative and has helped simplify programming, en- hance portability and improve performance. Such systems conceal the parallelism from the programmer and are characterized by being embedded entirely into a functional programming language, or for integrating imperative code within a skeletal framework in a language or library. Some of these approaches can be seen in [4], [8], [3], [1], [6], [11], [5], [2]. The underlying idea of separating the specification of a problem, or an algorithm, from implementation details that are hidden to the user is present in all the proposals. As also stated in [2], skeletal programming has yet to make a substantial impact on mainstream methods in parallel applications programming. It is safe to say that in many cases, the end user of many algorithmic skeletons, like those ⋆ Supported by MCyT projects TIN2005-09037-C02-01