Centro de Computacin Paralela y Distribuida CCPD Escuela de Computacin Universidad Central de Venezuela
2-2013
Agenda de la presentacin
Definiciones bsicas
10/12/2013
Definiciones Bsicas
Algoritmo: Es un conjunto finito de operaciones aplicadas a un conjunto finito de datos para resolver un problema dado Programa: Conjunto de instrucciones mquina Tarea: Este trmino puede tener varios significados dependiendo del contexto
- Lo usamos para denotar una secuencia de operaciones (de alto nivel) que en conjunto constituyen alguna parte lgica de un algoritmo o el programa - Para resolver un problema, usualmente ste es dividido en pequeas tareas
10/12/2013
Definiciones Bsicas
Proceso: Unidad de procesamiento gestionada por el Sistema Operativo
- Proceso != Programa - El proceso surge cuando el programa se pone en ejecucin - De forma simplificada se puede decir que un proceso es un programa en ejecucin - Varios procesos pueden ejecutar el mismo programa a la vez - Para que un programa se pueda ejecutar tiene que estar preparado en un archivo ejecutable, que contiene el cdigo y algunos datos iniciales.
10/12/2013
Concurrencia
La concurrencia o ejecucin simultnea (al mismo tiempo) de procesos aparece inicialmente como una necesidad de los sistemas operativos Ocurre cuando se produce la ejecucin entrelazada en un mismo sistema de las instrucciones de diferentes procesos o threads Podemos definir que dos actividades son concurrentes si, en un momento dado, cada una est en algn punto entre su punto de comienzo y su punto de finalizacin En general, puede ser de dos tipos:
- La concurrencia ser aparente siempre que haya ms de un proceso por procesador. En este caso hablamos de pseudoparalelismo - La concurrencia ser real cuando haya un proceso por procesador. Se conoce como paralelismo real
10/12/2013 Fundamentos de Programacion Paralela - Tema 1: Clase 1/4 5
10/12/2013
En general todos estos conceptos implican la nocin de ejecucin simultnea de procesos sin importar la implementacin, es decir la arquitectura fsica del ambiente donde correr el sistema de procesos. Veamos un esquema de comparacin entre estos tres conceptos:
10/12/2013
Slo un CPU Memoria Compartida Los programas concurrentes son un conjunto de procesos secuenciales que son ejecutados bajo un paralelismo abstracto
10/12/2013
Arquitectura paralela Memoria compartida o distribuida Muchos CPUs con una red de comunicacin a nivel fsico basada en buses de alta velocidad
Muchos CPUs con una red de comunicacin basada en OSI (cables + capas)
10/12/2013
10
10/12/2013
11
10/12/2013
12
10/12/2013
13
10/12/2013
14
10/12/2013
15
Niveles de Granularidad
Paralelismo independiente
- Aplicaciones o trabajos separados - Sin sincronizacin entre los procesos - Sistemas de tiempo compartido
Grano grueso
- Sincronizacin entre procesos a gran nivel, con poca frecuencia - Se trata como procesos concurrentes que ejecutan en un monoprocesador con multiprogramacin - Puede proporcionarse en multiprocesador con pocos cambios en Sw de usuario
10/12/2013
16
Niveles de Granularidad
Grano medio
- Necesidades de comunicacin e interaccin mayores - Aplicacin = coleccin de hilos - Los hilos interactan entre s y se coordinan con frecuencia
Grano fino
- La unidad de ejecucin paralela es la instruccin - El hardware detecta instrucciones independientes y planifica su ejecucin en paralelo
10/12/2013
17
Paralelismo implcito
- Directivas de paralelismo ausentes del cdigo - Ejemplos: HPF, ZPL, SISAL, NESL, etc.
10/12/2013
18
Bsqueda de concurrencia
Para poder tomar ventaja de mltiples procesadores, los programadores y/o los compiladores deben ser capaces de identificar operaciones que puedan ejecutarse en paralelo (concurrentemente) Una manera formal de identificar paralelismo es utilizar un grafo de dependencia de datos Un grafo de dependencia de datos es un grafo dirijido en el cual cada vrtice representa una tarea a ser completada Una arista desde el vrtice u hacia el vrtice v significa que la tarea u debe ser completada antes de que la tarea v comience
10/12/2013
19
Bsqueda de concurrencia
Cont. Decimos que la tarea v es dependiente de la tarea u Si no existe una ruta desde la tarea u hacia la tarea v, entonces las tareas son independientes y pueden ser realizadas concurrentemente
10/12/2013
20
10/12/2013
22
Comunicacin Agrupacin
Asignacin
10/12/2013
23
10/12/2013
24
Extender un Compilador
Este enfoque consiste en desarrollar compiladores que paralelizan para que puedan detectar y explotar el paralelismo en los programas existentes escritos en un lenguaje secuencial El tiempo y la labor que pueden ser ahorrados a travs de la paralelizacin automtica de programas existentes hace este enfoque altamente deseable Adicionalmente, la programacin paralela es ms difcil que la secuencial, por esta razn algunos creen que tiene ms sentido que los programadores continuen usando lenguajes secuenciales ms simples, dejando la paralelizacin al compilador
10/12/2013
25
Extender un Compilador
Cont. Este enfoque tiene detractores, ya que debido a que el programador debe especificar secuencializaciones innecesarias cuando escribe programas en un lenguaje imperativo convencional, algn paralelismo se pierde irremediablemente
10/12/2013
26
La capa superior controla la creacin y sincronizacin de procesos y el particionamiento de los datos entre los procesos
- Esto puede ser programador usando un lenguaje paralelo (o un lenguaje de programacin visual)
10/12/2013
28
10/12/2013
29
Otra manera de soportar paralelismo explcito es aadir construcciones paralelas a un lenguaje existente
- Fortran 90, High Performance Fortran y C* son ejemplos de este enfoque
10/12/2013
30
10/12/2013
31