Anda di halaman 1dari 31

Fundamentos de Programacin Paralela

Tema 1: Nociones bsicas de paralelismo


ccpd.ciens.ucv.edu@gmail.com

Prof. Carlos Acosta

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacin Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Tipos de Procesos Concurrentes


Procesos Independientes: es aqul que se ejecuta sin requerir la ayuda o cooperacin de otros procesos Procesos Cooperantes: Es cuando estn diseados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre s Independientemente del tipo de proceso, pueden producirse una serie de interacciones entre ellos, las cuales son de dos tipos:
- Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos fsicos o lgicos - Interaccin motivada porque los procesos se comunican y sincronizan entre s para alcanzar un objetivo comn

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

Recursos Compartidos y Coordinacin


El que la programacin concurrente implique el empleo de recursos compartidos exige la necesidad de coordinar de forma adecuada el acceso a estos recursos La coordinacin puede ser:
- Implcita: Es la coordinacin que realiza el propio sistema operativo como gestor de los recursos del sistema - Explcita: Este tipo de coordinacin es la que necesitan los procesos cooperantes - Diferentes procesos cooperan y coordinan sus acciones para obtener un fin comn - En estas situaciones los procesos cooperantes son conscientes del uso de los recursos compartidos - Para que los diferentes procesos puedan coordinar y sincronizar el acceso a estos recursos es necesario que utilicen mecanismos de sincronizacin y comunicacin proporcionados por el sistema operativo o por el lenguaje de programacin
10/12/2013 Fundamentos de Programacion Paralela - Tema 1: Clase 1/4 7

Concurrencia vs. Paralelismo vs. Distribucin


Hoy en da suele haber confusin entre varios trminos que implican ejecucin simultnea de procesos: Concurrencia, Paralelismo y Distribucin

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

Concurrencia vs. Paralelismo vs. Distribucin


Programacin Concurrente (importa el qu y no el cmo) Programacin Concurrente Sistemas operativos multitarea Programacin Paralela Sistemas operativos paralelos Programacin distribuida Sistemas operativos distribuidos Sistemas de redes Arquitectura de red Memoria distribuida

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)

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

Definicin y Tipos de Paralelismo


Paralelismo: forma eficaz de proceso de la informacin, que favorece la explotacin de sucesos concurrentes en el proceso de cmputo Objetivo fundamental: aumentar el rendimiento Tipos:
- Paralelismo interno: Un nico procesador actuando sobre varias instrucciones simultneamente - Paralelismo externo: varios procesadores trabajando en paralelo, sobre diferentes instrucciones o datos

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

10

Granularidad del Paralelismo


Es necesario dividir el cmputo en tareas o procesos que pueden ser ejecutados simultneamente Para paralelizar una aplicacin es necesario contar con un lenguaje o biblioteca que brinde las herramientas necesarias para sto Dependiendo de la herramienta con que se cuente, se particionar el cdigo en piezas para que se ejecute en paralelo en varios procesadores. De de aqu surge el trmino de granularidad. Granularidad es el tamao de las piezas en que se divide una aplicacin (proceso o tarea)

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

11

Granularidad del Paralelismo


Cont. Dichas piezas puede ser una sentencia de cdigo, una funcin o un proceso en s que se ejecutarn en paralelo Granularidad es categorizada en paralelismo de grano fino y paralelismo de grano grueso.

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

12

Granularidad del Paralelismo


Paralelismo de grano fino
- Es cuando el cdigo se divide en una gran cantidad de piezas pequeas - Es a un nivel de sentencia donde un ciclo se divide en varios subciclos que se ejecutarn en paralelo - Se le conoce adems como Paralelismo de Datos

Paralelismo de grano grueso


- Es a nivel de subrutinas o segmentos de cdigo, donde las piezas son pocas y de cmputo ms intensivo que las de grano fino - Se le conoce como Paralelismo de Tareas

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

13

Tipos y niveles de Paralelismo


Paralelismo funcional
- Tareas que se pueden ejecutar al mismo tiempo - Inherente en todas las aplicaciones en algn grado - Un tipo especial es la segmentacin (pipelining) - Niveles - Instruccin: diferentes instrucciones consecutivas se ejecutan en distintas unidades funcionales - Bucle: cada vuelta del bucle se ejecuta en una unidad funcional - Procedimiento: diferentes procedimientos de un mismo programa que se ejecutan en distintas unidades funcionales - Programa: diferentes programas de un mismo usuario o bien de usuarios distintos

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

14

Tipos y niveles de Paralelismo


Cont. Paralelismo de datos:
- Se ejecuta la misma instruccin (o funcin) sobre un gran conjunto de datos - Se tienen replicas del mismo programa trabajando sobre partes distintas de los datos - Se reparten los datos entre las unidades funcionales - El control puede ser centralizado o distribuido

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

17

Paralelismo Explcito e Implcito


Paralelismo explcito
- Directivas de paralelismo presentes en el cdigo - Ejemplos: C/MPI, OpenMP, Cilk, etc.

Paralelismo implcito
- Directivas de paralelismo ausentes del cdigo - Ejemplos: HPF, ZPL, SISAL, NESL, etc.

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

20

Grafos de dependencia de datos


Un grafo de dependencia de datos exhibe paralelismo de datos cuando existen tareas independientes que realizan la misma operacin sobre diferentes elementos del conjunto de datos for i = 0 to 99 do a[i] = b[i] + c[i] endfor Un grafo de dependencia de datos exhibe paralelismo funcional cuando existen tareas independientes que realizan operaciones diferentes sobre diferentes elementos de datos a=2 b=3 m = (a+b)/2 s = (a*a+b*b)/2 v = s m*m
10/12/2013 Fundamentos de Programacion Paralela - Tema 1: Clase 1/4 21

Grafos de dependencia de datos


Un grafo de dependencia de datos que forma una ruta simple o cadena no admite paralelismo si solo debe ser procesada una nica instancia del problema Un cmputo que ha sido dividido en etapas puede soportar una concurrencia igual al nmero de etapas si se necesita procesar mltiples instancias del problema. Esto se conoce como cmputos segmentados p[0]

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

22

Agrupacin de Datos (Ejemplo de data clustering de Quinn)


Problema Particin

Comunicacin Agrupacin

Asignacin

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

23

Programacin de computadoras paralelas


Se han identificado cuatro formas distintas para el desarrollo de aplicaciones de software para computadoras paralelas:
- 1) Extender un compilador existente para traducir programas secuenciales en programas paralelos - 2) Extender un lenguaje existente con nuevas operaciones que permitan a los usuarios expresar paralelismo - 3) Aadir una nueva capa de lenguaje paralelo encima de un lenguaje secuencial existente - 4) Definir un lenguaje paralelo y sistema de compilacin completamente nuevos

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

26

Extender un lenguaje de programacin secuencial


En este enfoque se extiende un lenguaje de programacin secuencial con funciones que permiten al programador crear y terminar procesos paralelos, sincronizarlos y habilitar la comunicacin entre ellos La extensin de un lenguaje de programacin secuencial es el enfoque ms popular para la programacin paralela, ya que simplemente requiere el desarrollo de una biblioteca de subrutinas El darle a los programadores acceso a funciones de bajo nivel para la manipulacin de procesadores paralelos los provee con la mxima flexibilidad con respecto al desarrollo del programa El compilador no est involucrado en la generacin de cdigo paralelo, por tanto no puede sealar errores
10/12/2013 Fundamentos de Programacion Paralela - Tema 1: Clase 1/4 27

Aadir una capa de programacin paralela


Se piensa en un programa paralelo como si tuviese dos capas La capa inferior contiene el ncleo de los cmputos, en el cual un proceso manipula su porcin de los datos para producir su porcin de el resultado
- Un lenguaje de programacin secuencial es adecuado para expresar esta porcin de la actividad

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

28

Aadir una capa de programacin paralela


Cont. Un compilador es el responsable de traducir este programa paralelo de dos capas en un cdigo adecuado para su ejecucin sobre un computador paralelo Requiere que el programador aprenda y use un nuevo sistema de programacin paralela

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

29

Crear un Lenguaje Paralelo


Entregar al programador la capacidad de expresar explcitamente las operaciones paralelas Una manera de realizar esto es crear un lenguaje desde cero
- Occam es un ejemplo famoso - Posee una sintaxis completamente diferente a la de los lenguajes imperativos tradicionales. - Soporta la ejecucin de procesos paralelos as como secuenciales y un proceso automtico de comunicacin y sincronizacin

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

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

30

Crear un Lenguaje Paralelo


Cont. Un lenguaje que soporta paralelismo explcito cambia la relacin entre el programa y el compilador de adversarios a aliados Este enfoque requiere el desarrollo de nuevos compiladores Algunos lenguajes paralelos no son adoptados como estndar Resistencia del usuario

10/12/2013

Fundamentos de Programacion Paralela - Tema 1: Clase 1/4

31

Anda mungkin juga menyukai