A COMPONENT MODEL FOR HIGH LEVEL AND EFFICIENT PARALLEL PROGRAMMING ON DISTRIBUTED ARCHITECTURES Francisco Heron de Carvalho Junior DC / Universidade Federal do Ceará Campus do Pici, Bloco 910 – Fortaleza, Brazil Rafael Dueire Lins Universidade Federal de Pernambuco Departamento de Eletrônica e Sistemas, CTG, Av. Acadêmico Hélio Ramos, s/n – Recife, Brazil ABSTRACT The computer science community has claimed for parallel languages and models with a higher level of abstraction and modularity, without performance penalties, that could be used in conjunction with advanced software engineering techniques, and that are suitable to work with large-scale programs. This paper presents general aspects about the # 1 parallel programming model and its associated programming environment, designed to address these issues. KEYWORDS Parallel Programming, Cluster Computing, Programming Languages, Software Engineering, Benchmarking. 1. INTRODUCTION During the last decade, distributed architectures supplanted vector systems in high performance computing (HPC) applications. HPC distributed architectures may now be split into three classes: capability computing (MPP's-Massive Parallel Processors), cluster computing [Buyya, R. et al, 2000] and grid computing [Foster, I. and Kesselman, C., 2004] architectures. They differ on their communication interface between processing nodes in decreasing coupling order. In consequence, they are used in different application contexts, but not necessarily disjoint [Dongarra, J. et al, 2003]. Since the creation of CRPC (Center for Research on Parallel Computation), in 1989, efforts started to be coordinated, culminating with the development of several efficient and portable tools, including libraries for message passing (MPI [Dongarra, J. et al, 1996] and PVM [Geist, G. A. et al, 1994]), data-parallel versions of Fortran (High Performance Fortran [High Performance Fotran Forum, 1997]) and specific-purpose scientific computing (PETSc [Balay, S. et al, 2002], ScaLAPACK [Blackford, L. S. et al, 1997], and many others [Dongarra, J. et al, 2003]). However, the search for models and languages for programming high end distributed high performance architectures that reconcile requirements of generality (G), high level of abstraction (A), portability (P) and efficiency (E), allowing to apply advanced software engineering concepts into the development of HPC software, is still one of the most important challenges in parallel computing [Skjellum, A., Bangalore, P. and Gray, J. and Bryant B. 2004]. The importance of this topic has increased in the recent years, due the expansion in scale of HPC applications caused to cluster and grid computing. This paper introduces the # (hash) parallel programming model and discusses aspects and trends related to the design of its integrated programming environment. It provides a new way to work with explicit message passing programming, where concerns about parallelism and computations are separate in different IADIS International Conference on Applied Computing 2005 173