PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación

Slides:



Advertisements
Presentaciones similares
Definición En un sistema de base de datos distribuida, los datos se almacenan en varios computadores. Los computadores de un sistema distribuido se comunican.
Advertisements

Red Social: “Un millón de Amigos”.
1.3. PROGRAMACION PARALELA
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
Sistema operativo Componentes de un sistema operativo
III - Gestión de memoria
Supervisión del rendimiento de SQL Server
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Objetivos Desarrollar software funcional multi-modelo sobre distintas plataformas para el estudio de sistemas complejos de cómputo de alto rendimiento.
PROCESADORES SUPERESCALARES
“Tuning” Universidad Nacional Autónoma de México Bases de datos I
El Diseño de Algoritmos Paralelos
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
Ingeniería del Software
BASES DE DATOS DISTRIBUIDAS
HERRAMIENTAS INFORMATICAS
Scheduling and Mapping Introducción Marco de referencia Módulos independientes Tareas con precedencia sin costo Precedencia de tareas y retardos en la.
PROCESAMIENTO PARALELO.  Organización lógica ◦ Visión que tiene el programados  Capacidad de expresar tareas paralelas (Estructura de control)  Método.
Desarrollo de aplicaciones web en entorno servidor
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tema 10: Gestión de Memoria
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Algoritmos Distribuidos Semana 1. Parte 2 Comunicación por Pase de Mensajes Claudia León Universidad Central de Venezuela Facultad de Ciencias Escuela.
Introducción a la Computación Paralela Germán Larrazábal Departamento Computación, FACYT, Universidad de Carabobo, Venezuela
Ing. Fabián Ruano.  Definición  Diferencias con BD Centralizadas.
Instituto Tecnológico de La Paz Ing. Fernando Ortiz Ahumada.
Ing. Karen Torrealba de Oblitas
Programación Paralela Esquemas de Programación Paralela 1 PROGRAMACIÓN PARALELA Esquemas de programación paralela REFERENCIAS Wilkinson, Allen Gibbons,
OMAR SANCHEZ ROBLES HECTOR PEREZ GARCIA. “Sistemas de cómputo compuesto por un gran número de CPU´s conectados mediante una red de alta velocidad”, Tanenbaum.
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Administración de Memoria
Características de un sistema operativo
Algoritmos de Búsqueda “Backtracking y Branch and Bound”
Planificación de Procesos
Planificación y Gestión de procesos
5. Sistemas de archivos avanzados1 Tema 5: Sistemas de Archivos Avanzados Resumen: –Sistema de archivos distribuido –File Replication Service.
Capítulo 7 Gestión de memoria.
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
Arquitecturas Paralelas
Programación Paralela
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
Gestión de Memoria.
SISTEMAS OPERATIVOS 1.4 CLASIFICACIÓN DE LOS S.O
Mejora de la localidad en operaciones de E/S colectivas no contiguas XVIII Jornadas de Paralelismo, JP’2007 Rosa Filgueira, David E. Singh, Florin Isaila,
Sistemas Distribuidos
CICLO DE VIDA Y NORMAALIZACION DE UN SISTEMA DE BASE DE DATOS
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Ejemplos del Diseño de Algoritmos Paralelos (Transparencias de McGraw-Hill Modificadas)
Departamento de Informática Universidad de Rancagua
Metodología de la programación
Teoría de Sistemas Operativos Sistemas distribuidos.
Unidad 2 – Gestión de Procesos
Visual Basic FUNCIONES Y PROCEDIMIENTOS
LIA. SUEI CHONG SOL, MCE..  1.- SOFTWARE BÁSICO O DE SISTEMA. Conjunto de programas imprescindibles para el funcionamiento del sistema.  2.- SOTWARE.
Bases de Datos II BASES DE DATOS DISTRIBUIDAS
ARQUITECTURA ALTERNATIVA DE SERVIDORES SISTEMAS OPERTIVOS DE RED En un sistema operativo de red los usuarios saben que están conectados a la red y que.
Introducción a los TADs
3.2.1 Administración de almacenamiento
Funciones principales!
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
MEMORIA DINÁMICA.
SISTEMAS OPERTIVOS DE RED Los usuarios están conectados a la red y que pueden compartir recursos. Cada equipo ejecuta con sus propios recursos su propio.
Modelo de procesos de software
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2 Programación Paralela Metodología de la Programación 1

Programación paralela Especificación de problema  algoritmo paralelo. Programación paralela: no hay recetas, creatividad, aproximación metodológica. Programación Paralela Metodología de la Programación 2

Fases Particionado: descomponer datos y tareas independiente del número de procesadores Comunicación: establecer comunicaciones entre tareas. Aglomeración: combinación de tareas para reducir costes. Mapeo: asignación de tareas a procesadores, maximizar balanceo, minimizar comunicaciones. Programación Paralela Metodología de la Programación 3

Particionado Descomposición del problema de grano fino: gran número de tareas. Descomposición del dominio: primero se descomponen los datos y después las tareas. Descomposición funcional: primero se descomponen las tareas y después los datos. Programación Paralela Metodología de la Programación 4

Descomposición del dominio Conjunto de datos del mismo tamaño. Tareas que trabajen sobre esos datos. Tareas pueden necesitar información de distintos conjuntos de datos. Posibles distintas particiones: Ejemplo: malla tridimensional. Programación Paralela Metodología de la Programación 5

Descomposición funcional Puede haber datos distintos para las distintas funciones, o compartición de datos: Por duplicación, Por comunicación Ejemplo: modelado del clima, tratamiento de imágenes. Programación Paralela Metodología de la Programación 6

Particionado, chequeo ¿Las tareas superan al menos en un orden de magnitud el número de procesadores? Si no, poca flexibilidad para los pasos posteriores. ¿Se evita duplicación de computación y de almacenamiento? Si no, puede dar lugar a algoritmo no escalable. ¿Son las tareas de tamaño similar? Si no, puede ser difícil hacer una asignación balanceada. ¿Aumenta el número de tareas con el tamaño del problema? ¿Se han estudiado distintas particiones? ¿y descomposición del dominio y funcional? Programación Paralela Metodología de la Programación 7

Comunicación Se definen canales (directos o indirectos) entre tareas que tienen que comunicar datos. Se definen mensajes a enviar y recibir. En paralelismo de datos no se podrán crear los canales. Optimización de prestaciones: Distribuyendo comunicaciones (paralelismo en comunicaciones). El sistema puede limitarlo (redes). Comunicaciones globales: identificar conjuntos de tareas que intervienen en la comunicación. Utilizar rutinas optimizadas, o programarlas si no están disponibles. Solapar comunicación y computación (pipeline). Programación Paralela Metodología de la Programación 8

Comunicación Ejemplos: Suma de n números. Relajación de Jacobi. Programación Paralela Metodología de la Programación 9

Comunicación Preferible comunicación estructurada. No estructurada: dificulta la programación, puede necesitar algoritmos de asignación para mejorar balanceo y reducir comunicaciones, aumenta coste. Dinámica: se sabe en tiempo de ejecución. Ejemplo: matrices dispersas. Programación Paralela Metodología de la Programación 10

Comunicación Lectura de datos globales  comunicación asíncrona. Posibilidades: cada tarea testea periódicamente si recibe peticiones, otro conjunto de tareas para atender requerimientos, interrupciones. En Memoria Compartida problema de coherencia. Ejemplo: backtracking y branch & bound. Programación Paralela Metodología de la Programación 11

Comunicación, chequeo ¿Se han balanceado las comunicaciones? Si no, algoritmos poco escalables. Si estructura a la que se accede muy frecuentemente controlada por una tarea, cuello de botella: distribuir la estructura y crear más tareas. ¿Se comunica cada tarea con un número reducido? ¿Se pueden ejecutar las comunicaciones concurrentemente? Si no, puede dar lugar a algoritmo no escalable. ¿Impiden las comunicaciones que las tareas se ejecuten concurrentemente? ¿Se puede solapar comunicación y computación? Programación Paralela Metodología de la Programación 12

Aglomeración En la aglomeración y mapeo se piensa en el sistema donde se va a ejecutar. Para obtener buenas prestaciones puede ser necesario agrupar tareas: menos tiempo de creación, menos comunicaciones. Estudiar distintas maneras de agrupamiento. Si el número de tareas se reduce a una por procesador, el diseño está acabado. Ejemplo: suma de números, malla tridimensional. Programación Paralela Metodología de la Programación 13

Aglomeración Intentar reducir las comunicaciones: Reducir número de datos a enviar o número de mensajes. Efecto volumen/superficie: normalmente la computación es de un orden de magnitud mayor que la comunicación (matriz-vector, matriz-matriz), por lo que la relación computación/comunicación es mayor al aumentar la granularidad (relajación de Jacobi) Algunas veces se puede reducir la comunicación replicando computación o datos (suma en anillo) Si las tareas no pueden ejecutarse concurrentemente se pueden aglomerar tareas de diferentes niveles (suma en árbol) Programación Paralela Metodología de la Programación 14

Aglomeración Número de tareas: Con número reducido menor coste de creación. Número mayor que procesadores, permite: asignar varias tareas a un procesador y solapar comunicación y computación (por ejemplo, una tarea para comunicación y otra para computación en cada procesador), estudiar varias posibilidades de mapeo. El número de tareas debe variar con el tamaño del sistema y el problema. Tener en cuenta reutilización de código y que la salida de un programa puede ser entrada para otro. Programación Paralela Metodología de la Programación 15

Aglomeración, chequeo ¿Hemos aglomerado tareas que se comunican frecuentemente? Si no, puede haber un gran número de comunicaciones. Si se replican computaciones, ¿repercute en una reducción de las comunicaciones? Si se replican mucho puede ser perjudicial para la escalabilidad. ¿Se han generado tareas con coste de computación y de comunicación semejante (balanceo de la carga)? ¿Varía el número de tareas proporcionalmente al número de procesadores? Si no, no escalable. ¿Se ha reducido todo lo posible el número de tareas sin reducir posibilidades de escalabilidad ni producir desbalanceo? ¿Se posibilita la reutilización de código? Programación Paralela Metodología de la Programación 16

Mapeo Para reducir tiempo de ejecución: En memoria distribuida no hay herramientas automáticas eficientes para asignar tareas a procesadores, pero sí en memoria compartida. Para reducir tiempo de ejecución: asignar tareas que se comunican con frecuencia al mismo procesador (puede haber limitaciones en el número de tareas por procesador), y tareas que se ejecutan concurrentemente a procesadores distintos. Programación Paralela Metodología de la Programación 17

Mapeo Ejemplo: matrices dispersas, branch & bound. Algoritmos de balanceo de carga: Estáticos, si el número de tareas y la carga de cada una es conocido. Tienen coste adicional al principio. Dinámicos, si no se conoce a priori, o se conoce pero la distribución de la carga no es regular, o si las tareas pueden generar nuevas tareas. Coste adicional durante la ejecución. Ejemplo: matrices dispersas, branch & bound. Programación Paralela Metodología de la Programación 18

Mapeo ESTÁTICOS Bisección recursiva: Dividir la tarea en dos subgrupos minimizando comunicaciones y manteniendo balanceo. Y seguir recursivamente. Métodos probabilistas: Asignar arbitrariamente. Se obtiene buena distribución sólo en algunos casos. Las comunicaciones no deben ser locales. Mapeo cíclico: Si se sabe que la carga evoluciona regularmente. Puede ser cíclico por bloques. Preprocesado: Antes de le ejecución realizar una evaluación (trazado de rayos). Programación Paralela Metodología de la Programación 19

Mapeo DINÁMICOS Algoritmos locales: Cada procesador compara periódicamente su carga con la de procesadores vecinos, y puede haber intercambio de datos. Utilización de una bolsa de tareas: Los procesadores toman tareas de la bolsa y posiblemente generan nuevas tareas. La computación acaba cuando la bolsa está vacía y no hay posibilidad de generar nuevas tareas (problema de detección de la terminación). Un único manejador de la bolsa, puede ser un cuello de botella si las tareas son pequeñas y hay comunicaciones frecuentes. Jerarquía de manejadores, que se comunican entre ellos, y posiblemente un maestro común. Distribuida entre los procesadores. Cada procesador debe evaluar su bolsa además de computar, por lo que habrá tareas de computación y de gestión de la bolsa. Programación Paralela Metodología de la Programación 20

Mapeo, chequeo ¿Se ha considerado las dos posibilidades de creación estática y dinámica de tareas? Si se utiliza esquema maestro-esclavo, estudiar si el maestro se puede convertir en un cuello de botella, especialmente si puede llegar a ejecutarse en un gran número de procesadores. Si es posible, utilizar asignaciones estáticas, pues son simples, especialmente las probabilísticas y cíclicas, y no es necesario aplicar algoritmos de rebalanceo durante la ejecución. En caso de distribución probabilística o cíclica, asegurarse de que hay muchas más tareas que procesadores. Programación Paralela Metodología de la Programación 21