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