Introduction

One of the main difficulties faced in the exploration of parallel architectures in high performance computing (HPC) is the lack of suitable tools for application programming of this kind. Among the desired characteristics in such tools are execution efficiency, use comfort and portability. Aiming at achieving such characteristics, we present the Anahy proposal, a parallel programming environment endowed with task scheduling and load balancing resources. The development of such programming environment reflects the growing interest in HPC for the solution of problems deriving from the most different areas of knolwedge, and the fact that programmers that are not especialized in HPC, willing to explore the benefits offered by parallel architectures, find difficulties when dealing with the traditional programming tools (RPC, sockets, PVM, MPI, POSIX) due to the reduced programming comfort: of complex usage, the use of those tools imply the need to know and manage the available computational resources of the architecture (processors, memories, ways of communication, etc.), since such tools do not allow the programmer to abstract hardware characteristics. Despite of that, even if used in a correct way, the resulting programs have low portability potential, therefore any alteration in the architecture's configuration (like, for example, the addition of a new processor) results in the task of rewriting, at least partially, the program's code for considering this new element.

In this context, it is proposed a programming environment that offers, on one side, resources for the development of parallel programs, aiming basically at the decomposition of the application in concurrent activities and the sharing of data, and on the other side, an executive support capable of efficiently exploring the available hardware resources. Such executive support, making use of task scheduling and load balacing resources in task level, will allow the adaption of the program's execution to different parallel architecture configurations, without the need to intervine in the application's code, just by adjusting the algorithm used in load balancing. That way, Anahy aims at providing an execution support for HPC environments that makes it possible to separate the concurrency that may be expressed in the application from the real parallelism offered by the architecture.