Análisis y Diseño de Algoritmos

Slides:



Advertisements
Presentaciones similares
Tipos de software y su desarrollo
Advertisements

El modelo de Von Neumann
Complejidad Computacional
TEMA 1 Introducción a la Programación Concurrente
Diseño y análisis de algoritmos
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.
II. ARQUITECTURAS PARALELAS
Investigación de mercados
III - Gestión de memoria
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Programación Paralela Dr. Mario Rossainz López FCC- BUAP
Temas Operaciones básicas Instalando el compilador
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Programación 1 Introducción
Introducción a la programación
Programas Son una serie o secuencia de instrucciones entendibles por los ordenadores que permiten la realización de las acciones o tareas para las que.
Algorítmo de Mapeo Directo
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Mejoras a las Máquinas Von Neumann
PROCESAMIENTO PARALELO.  Organización lógica ◦ Visión que tiene el programados  Capacidad de expresar tareas paralelas (Estructura de control)  Método.
TRADUCTOR DE UN PROGRAMA
Fundamentos de Programación
ALGORITMOS.
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Introducción a la Computación Paralela Germán Larrazábal Departamento Computación, FACYT, Universidad de Carabobo, Venezuela
PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación
Ing. Fabián Ruano.  Definición  Diferencias con BD Centralizadas.
Instituto Tecnológico de La Paz Ing. Fernando Ortiz Ahumada.
Unidad III Administración de procesos
Procesamiento paralelo
INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
M.S.C. Ivette Hernández Dávila
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
LENGUAJE DE PROGRAMACIÓN
TEMAS PRINCIPALES. ALGORITMOS. CONCEPTOS El algoritmo es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos.
Arquitectura de Von Neumann
Análisis y Diseño de Algoritmos
Telecomunicaciones y Trabajo Distribuido. Sistema Distribuido Recursos Servidor Red Servidor Nodo ANodo C Nodo B.
- 1 - Sistema Embebidos: Propiedades de los Lenguajes y SDL Agustín J. González 1s06 Se ha tomado como base el material generado por Peter Marwedel de.
Sistemas de E/S, Programada por Interrupciones su Gestión
Algoritmos y programación 3 - cátedra Fontela Concurrencia.
 TECNOLOGIAS DE LA INFROMACIONM Y COMUNICACIÓN En este bloque vemos trabajamos con las definiciones de que es Word. Excel y Power point. WORD: Microsoft.
Lenguajes de Programación
Estructura de los Sistemas Operativos
 Este concepto abarca varios aspectos que apuntan a la calidad del contenido electrónico.
Teoría de Sistemas Operativos Sincronización Procesos
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Unidad 2 – Gestión de Procesos
EQUIPO 4 INTEGRANTES: ALVARADO LUNA AIDA ARACELI MENESES AGUILAR AXEL NESTOR CONTRERAS MONDRAGON ALAN HEMIR SANCHEZ MUÑIZ JOSE FRANCISCO.
Elaboración de algoritmos usando lógica de programación
Un proceso ligero (thread o hebra) es un programa en ejecución que comparte la imagen de la memoria y otras informaciones con otros procesos ligeros.
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
UTFSM - Sistemas Operativos
UNIDAD V Bibliotecas de Funciones L.I. & M.S.C. OSCAR RAMÍREZ CORTÉS PROGRAMACIÓN DE SISTEMAS.
Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II.
3.2.1 Administración de almacenamiento
Paralelización de Análisis de Reglas de Asociación Andrés Villavicencio T.
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Lenguaje estructurado
TEMA: Tipos de Errores Integrantes del equipo : Chávez Cholula Gisela Ramírez Valerio Ángeles Docente: L.I. Fuentes Cortes Miguel INSTITUTO TECNOLÓGICO.
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
SISTEMAS DISTRIBUIDOS II DESEMPEÑO. DESEMPEÑO Cuando se ejecuta una aplicación en un sistema distribuido no debe parecer peor que su ejecución en un único.
Gestión de Memoria – Parte 2
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Transcripción de la presentación:

Análisis y Diseño de Algoritmos Algoritmos Paralelos Otro modelo de computación es cuando tenemos más de un procesador, digamos p procesadores. En este caso, la memoria puede ser compartida o distribuida. Memoria : Compartida Misma máquina distribuida Distribuida Distintas máquinas

Análisis y Diseño de Algoritmos En general, cuando se trata de máquinas distribuidas lo óptimo es minimizar el número de mensajes. Objetivo de un buen algoritmo paralelo: Paralelizar al máximo Tp* =T1/Tp p: procesadores Esto no siempre es posible, así que se define : SpeedUp= T1/Tp ≤ p ; Factor de paralelización La idea es poder balancear la carga en los procesadores (que todos hagan el mismo trabajo)

Análisis y Diseño de Algoritmos Sin embargo, el poder obtener un buen balance de carga es una tarea compleja, esto requiere de una buena a) sincronización y coordinación. En general podríamos decir que el tiempo en paralelo, está conformado de la siguiente manera: Tiempo = Tiempo de Procesamiento + Tiempo de Coord. Paralelo Simultaneo Sincronización

Análisis y Diseño de Algoritmos En el tiempo de sincronización y coordinación va implicado el tamaño y número de mensajes que se envían los procesadores entre si, en un modelo distribuido.

Análisis y Diseño de Algoritmos El paralelismo está determinado por las estrategias de paralelización, el compilador y el sistema operativo (por ejemplo : procesos, hebras (threads)).

Análisis y Diseño de Algoritmos Memoria Compartida En este caso puede haber acceso concurrente de varios procesadores a un lugar de memoria para leer o escribir. Es decir pueden haber varios procesadores escribiendo en la memoria, leer no es problema. La lectura concurrente en general no es un problema.

Análisis y Diseño de Algoritmos a) Escritura Exclusiva: Sólo un procesador puede escribir al mismo tiempo. Una forma de resolver esto es utilizar semáforos cuando uno de los procesadores se encuentre escribiendo. Aquí el balance de carga es un problema, ya que existen procesadores esperando para poder escribir. Si todos escriben lo mismo no hay problema, el problema es cuando todos los procesadores escriben cosas diferentes.

Análisis y Diseño de Algoritmos b) Escritura Concurrente: Sólo uno tiene éxito al escribir. Este modelo se llama PRAM y dependiendo de la concurrencia tenemos: CREW PRAM (escritura exclusiva) Más usado CRCW PRAM (escritura concurrente) EREW (todo exclusivo)

Análisis y Diseño de Algoritmos Problema: Buscar una palabra de largo m en un texto de largo n. Dividimos el texto en p partes, cada uno busca en su parte. Este es un problema altamente paralelizable, lo que hacemos es dividir el texto en p pedazos y cada procesador busca en un texto de largo n/p+m-1 ( esto es, por si la palabra cae en 2 pedazos).

Análisis y Diseño de Algoritmos Tp=T1(n/p+m-1)= k*(n/p+m) (usamos un algoritmo lineal con largo k, en el peor caso) Por lo que el factor de paralelización: SpeedUp: kn/k*(n/p+m) =p/(1+(mp)/n =p(1-(mp)/n), donde mp/n es menor que 1