Basic skeletons in llc Antonio Dorta, Pablo Lo ´ pez, Francisco de Sande * Departamento E. I. O. y Computacio ´ n, Universidad de La Laguna, 38271-La Laguna, Canary Islands, Spain Received 30 December 2005; received in revised form 19 May 2006; accepted 7 July 2006 Available online 2 October 2006 Abstract llc is a high-level parallel language that provides support for some of the most widely used algorithmic skeletons. The language has a syntax based on OpenMP-like directives and the compiler uses direct translation to MPI to produce parallel code. To evaluate the performance of our prototype compiler we present computational results for some of the skeletons available in the language on different architectures. Particularly in the presence of coarse-grain parallelism, the results reflect similar performances for the llc compiled version and ad hoc MPI or OpenMP implementations. In all cases, the performance loss with respect to a direct MPI implementation is clearly compensated by a significantly smaller devel- opment effort. Ó 2006 Elsevier B.V. All rights reserved. Keywords: Parallel programming; High-level language; Algorithmic skeletons; Compilers; OpenMP; MPI 1. Introduction One of the main reasons that hinders the parallelization of applications is its development effort. Except for experts in the field it is not an easy task to parallelize a sequential application. While in the recent past, parallel architectures have made substantial progress in speed, scalability, number of processors, etc., the software tools we use today are not significatively different from those existing a decade ago. MPI [1] is currently the dominant tool to develop parallel applications. When programming in MPI the user has to deal with low-level aspects of programming such as synchronization, explicit communications and tasks distribution. Parallelizing a sequential application in MPI requires a considerable effort and expertise. In a sense, we could say that MPI represents the assembler language of parallel programming, you can obtain high performance but at the cost of quite a high development investment. Skeletal parallel languages [2–5] have been one of the most successful approaches to fill the gap between development tools and user needs. Most parallel applications are based on well-defined patterns (skeletons) 0167-8191/$ - see front matter Ó 2006 Elsevier B.V. All rights reserved. doi:10.1016/j.parco.2006.07.001 * Corresponding author. Tel.: +34 922318178; fax: +34 922318170. E-mail address: fsande@ull.es (F. de Sande). Parallel Computing 32 (2006) 491–506 www.elsevier.com/locate/parco