[en] Parallel programming presents the programmers (or the users) with daunting problems when attempting to achieve efficient execution. Two of these problems are to decide how many processors are necessary to execute the application and, for a specific number of processors, how to distribute the application tasks by exploiting their ability of concurrency, also known as the mapping problem. Mapping strategies can be classified as either static or dynamic, depending on the knowledge of the application. When the application has predictable run-time behaviour (i.e. the behaviour is loosely dependent on the input values), the mapping is carried out statically before execution. However, for applications whose run-time behaviour is not deterministic or not so predictable, performing mapping only once at the beginning is insufficient. For these cases the mapping is carried out dynamically during run-time. In this work, we focus on the static mapping problem. In order to accomplish the static mapping efficiently, the characteristics of the parallel program have to be known or estimated prior to execution. In this case, the application is represented in a task graph that summarizes the application behaviour. Depending on the characteristics of the application to be modelled, two distinct task graph models have been extensively used in the literature. The Task Precedence Graph (TPG), is a directed graph where nodes and arcs represent the tasks and the task precedence constraints respectively. This is effective for applications where interactions between tasks take place only at the beginning and at the end of their execution. On the other hand, distributed applications where the executing tasks are required to communicate during their lifetime rather than just at the initiation and at the end, are usually modelled in the literature by the Task Interaction Graph (TIG). This is an undirected graph that does not include temporal information and it is normally assumed that all the tasks may run in parallel. In current message-passing environments, the programmer has no restriction about the allocation of communication primitives inside tasks. Moreover, there is growing interest in the development of applications composed of a set of tasks carrying out different functions (i.e. with task parallelism) that coordinate one to each other through message transference at any point inside them. To model these applications that have an arbitrary task interaction pattern, we propose a new task graph model, called Temporal Task Interaction Graph (TTIG), that captures temporal information about parallel programs with a new parameter called degree of parallelism. This gives information about the potential concurrency that each pair of adjacent tasks can achieve, according to their mutual dependencies. From the definition of the application behaviour, a heuristic method is proposed to determine the theoretical maximum and minimum number of processors that are necessary to execute the application in the minimum time. Starting from the TTIG model, two new mapping algorithms are defined with different complexities, that carry out the allocation according to the ability of concurrency of tasks indicated by the degree of parallelism. In current message-passing environments PVM and MPI, the processor mapping mechanism is based on simply heuristics that take decisions independently of the relationship exhibited by tasks. Thus, these environments are enhanced by integrating an automatic mechanism to extract the TTIG for a given application, and to apply a mapping heuristic based on the model.

[es] En el momento de ejecutar una aplicación paralela, el programador (o el usuario) se enfrenta a decisiones importantes para reducir el tiempo de ejecución global, tales como cuántos procesadores ha de usar para ejecutar la aplicación y, dado un número de procesadores, cómo distribuir las tareas de la aplicación aprovechando al máximo su capacidad de concurrencia. Al problema de resolver la distribución de las tareas de una manera global se le conoce como el problema del mapping. En la literatura existen dos formas distintas de abordar el problema del mapping en función del conocimiento que se tiene de la aplicación. Cuando el comportamiento de la aplicación es conocido (o predecible) a priori, la asignación se realiza de forma estática (antes de la ejecución), y las tareas se ejecutan en el procesador asignado hasta que finalizan. Por el contrario, cuando el comportamiento de la aplicación no es predecible, la asignación se realiza de forma dinámica, y las tareas pueden cambiar de procesador durante la ejecución. En el presente trabajo nos centramos en el proceso de mapping estático. Para la realización de este proceso, el programa paralelo se suele representar mediante un modelo de grafo de tareas ponderado, que resume las características más relevantes estimadas del comportamiento de la aplicación. En función del tipo de aplicación, en la literatura se utilizan principalmente dos modelos de grafo. Para aplicaciones cuyas tareas se comunican únicamente por el principio y el final, el modelo, denominado TPG (Task Precedence Graph), refleja las comunicaciones y precedencias entre las tareas y el orden parcial de ejecución de las mismas. Cuando se trata de aplicaciones cuyas tareas tienen comunicaciones en cualquier punto, e incluso comunicaciones bidireccionales, en la literatura se utiliza un modelo simplificado, denominado TIG (Task Interaction Graph), en el que no se contemplan las precedencias y se asume que todas las tareas pueden ser simultáneas. Ahora bien, en los entornos actuales de paso de mensajes, el programador no está sujeto a ninguna restricción en cuanto a la ubicación de las primitivas de comunicación dentro de las tareas. Además, debido al tipo de problemas que se resuelven computacionalmente, existe en los últimos años un creciente interés en el desarrollo de aplicaciones formadas por un conjunto de tareas que realizan distintas funciones y que coordinan su ejecución mediante intercambios de información en cualquier punto dentro de las mismas. Para modelar el comportamiento de las aplicaciones con paralelismo de tareas, con un patrón de interacciones entre tareas arbitrario, se propone un nuevo modelo de grafo, denominado Temporal Task Interaction Graph (TTIG). Dicho modelo incluye un nuevo parámetro, denominado grado de paralelismo, que indica la máxima capacidad de concurrencia de las tareas que se comunican, en función de las dependencias provocadas por dichas comunicaciones. A partir del comportamiento obtenido de la aplicación, se propone un mecanismo para determinar las cotas teóricas mínima y máxima sobre el número de procesadores necesario para realizar su ejecución en un tiempo mínimo. A partir del modelo TTIG se definen nuevas políticas de mapping de distintas complejidades que realizan las asignaciones de tareas teniendo en cuenta la posibilidad de concurrencia entre las mismas que indica el grado de paralelismo. En los entornos actuales de paso de mensajes PVM y MPI, la política de mapping que se usa por defecto es una distribución de las tareas basada en el orden de activación de las mismas. Dada la simplicidad de este mecanismo, dichos entornos se mejoran integrando un proceso automático para la extracción del grafo TTIG y para aplicar una política de mapping basada en dicho modelo.