Paralelismo en la ordenación por mezcla

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Paralelismo en la ordenación por mezcla"

Transcripción

1 Paralelismo en la ordenación por mezcla

2 Índice MergeSort secuencial. MergeSort paralelo : descomposición en tareas. Descomposición funcional. Descomposición recursiva. Descomposición de dominio. Grafo de dependencias y asignación de tareas. Pseudoalgoritmo. Pensando en la implementación.

3 MergeSort secuencial Entrada : una secuencia de n números desordenada. Salida : secuencia de n números ordenada. La ordenación por mergesort, se basa en obtener un vector ordenado de n números a partir de uno desordenado; ello lo consigue aplicando el esquema algorítmico divide y vencerás, mediante el cual descompone un vector de tamaño n en dos subvectores de tamaño n/ 2 sucesivamente, hasta que el tamaño del vector obtenido sea lo suficientemente pequeño como para considerar que está ordenado (tamaño 1); una vez obtenido este vector mínimo, recuperaremos el vector original mezclando los resultados, los cuales se volverán a mezclar recursivamente hasta obtener un vector de tamaño n ordenado.

4 MergeSort paralelo : descomposición en tareas Para poder resolver de forma paralela el problema de la ordenación por mezcla es necesario descomponer de alguna forma el algoritmo en una serie de subtareas. A continuación presento una serie de posibles descomposiciones acompañadas con un pequeño estudio y conclusiones: Descomposición funcional : la cual se realizará mediante la versión pipeline. Descomposición recursiva : utilizando el esquema algorítmico del mergesort secuencial. Descomposición de dominio, centrada en los datos de entrada : aprovecharemos la independencia de los datos de entrada para dividirlos directamente entre los procesos.

5 Descomposición funcional Leer Ordenar Mezclar La idea de esta descomposición, es descomponer el algoritmo en una serie de módulos, de modo que la ejecución de los mismos se solape de un paso al siguiente. Vamos a ver cuánto tardaría esta descomposición en resolver un problema de tamaño n; para simplificar los cálculos consideraremos el tiempo en el peor caso: T (Leer ) = n, T (Ordenar ) = n/b * log ( n/b ), T(Mezclar ) = k * n/b + n/b Donde b = número de bloques y k = paso del algoritmo. El siguiente paso es inferir el coste del algoritmo a partir de observar el comportamiento en unos pocos pasos. Supongamos que el número de bloques b es igual a 3, el funcionamiento sería el siguiente: T (Mezcla 1 ) = T (leer) + T (Ordenar, b) + T(Mezclar,1,b) = n/b + n/b * log (n/b) + n/b T (Mezcla 2 ) = T (leer) + T (Ordenar, b) + T(Mezclar,2,b) = n/b + n/b * log (n/b) + 2*n/b T (Mezcla 2 ) = T (leer) + T (Ordenar, b) + T(Mezclar,3,b) = n/b + n/b * log (n/b) + 3*n/b Dado que la ejecución de los módulos se solapa de un paso al siguiente, sólo es necesario quedarnos con los pasos más costosos, quedando la siguiente solución: 4n/b + 2 n/b * log (n/b) + (n/b log n/b ó 2 n/b ) -- En función de si log n/b es mayor o no que 2. Supongamos por simplicidad que log n/b es siempre mayor que el número de paso, en ese caso, para un algoritmo de b pasos tardaríamos: (b+1) * n/b + b * n/b log ( n/b) Que si nos quedamos con el mayor término sería t(b) = n * log ( n / b )

6 Consideraciones sobre la anterior descomposición La versión anterior es bastante mala, como se puede observar en el cálculo del speed-up cuando n tiende a infinito: Lim Speedup = n* log n / ( n * log (n/b) ) = log n / ( log n log b ) = 1 Haciendo aproximaciones podemos observar cómo, en el mejor de los casos, no tenemos ninguna mejora significativa respecto del algoritmo secuencial, y eso que no hemos considerado el coste de las comunicaciones... Esta mala eficiencia del algoritmo se debe a los siguientes factores: No aparece por ningún lado el factor número de procesadores (p), el cual se supone que tiene que ser 3 (un mayor número no mejoraría el tiempo de ejecución). No está balanceado el tiempo de cada operación, claramente el tiempo que el algoritmo tardará en leer va a ser mucho menor que el tiempo que tarda en ordenar e incluso el tiempo que tarda en mezclar. Granularidad muy elevada : los bloques en que hemos descompuesto el algoritmo, siguen siendo muy grandes, con lo que no aprovecharemos las ventajas de la computación paralela, aunque al menos, el coste de las comunicaciones que no hemos considerado, no será muy elevado.

7 Descomposición recursiva : :... Siguiendo la lógica de la versión secuencial de la ordenación por mezcla, podemos idear una versión palalela donde cada subtarea puede ser ejecutada por un procesador. El nodo raíz leerá los datos y los repartirá equitativamente entre sus dos hijos, los cuales repartirán sus datos entre sus respectivos dos hijos... hasta llegar a un tamaño de los datos a partir del cual no nos interese descomponer más; llegados a este punto, los nodos receptores de la fracción mínima de datos, los ordenarán y los enviarán a uno de sus vecinos (determinado por el paso de la mezcla) para que procedan a mezclar los datos ordenados. El tamaño mínimo de datos determina la granularidad de la descomposición, la cual va a depender directamente del número de procesadores de los que dispongamos; tendremos por tanto, un tamaño mínimo de los datos de n/p antes de empezar a ordenar. Para el estudio de la eficiencia de esta versión sí que vamos a tener en cuenta las comunicaciones, así que distinguimos los siguientes tipos de tiempo: T(Leer) = n T(Dividir) = constante T(Ordenar) = ( n / p ) * log ( n / p ) T(Envío ) = variable y dependiente de n/p T(Mezcla ) = variable y dependiente de n/p

8 Estudio de la descomposición recursiva Al igual que antes, vamos a partir de un problema, sencillo y a partir del mismo inferiremos el coste para problemas más complejos. Supongamos una lista de tamaño n y un número de procesadores = 4. El límite de datos a descomponer es por tanto n/4, lo que implica que solo descompondremos los datos 2 veces (logaritmo en base 2 de p ). T(Raíz) = T ( Leer ) + T (Dividir) + T (Enviar,n/2) = n + (despreciable) + 2* (ts + tw * n/2 ) (dos envíos de la mitad de la lista de valores) = n + 2 ts + 2 tw * n/2 = n + 2ts + tw * n T(Repartir nivel 1 ) = T(Dividir) + T(Enviar, n/4 ) = 2 * ( ts + tw * n/4) (Los nodos hermanos de un nivel son capaces de ejecutar sus tareas en paralelo, de modo que el tiempo de las mismas en cada uno de ellos se solapa y podemos simplificar el cálculo a las tareas llevadas a cabo por solo uno de ellos). T(Repartir nivel 2) = T(Ordenar) = (n/p) * log (n/p) (Igual que antes, esta tarea también se solapa en los hermanos). T(Mezcla paso 1) = T (Enviar, n/4) + T (Mezclar, n / 4 ) = ts + tw * n/4 + 2 * n/4 T(Mezcla paso 2) = T(Enviar, n/2) + T(Mezclar, n/2 ) = ts + tw * n/2 + 2 * n/2 Y finalmente tendremos nuestro vector ordenado. Podemos generalizar el tiempo de la siguiente forma: T(n,p ) = T Leer T Raíz T hijo nivel i T Mezcla paso i T Ordenar Lo cual, tras eliminar expresiones que no dependen de n y haciendo unos pocos redondeos que no afectarán prácticamente nada para tamaños de n muy grandes, nos queda en : 2 n 1/2 2/log p tw n 1/2 2/log p n/ p log n/ p Donde se puede observar que el término de mayor orden es n/p * log (n/p).

9 Consideraciones sobre la descomposición recursiva Este método parece bueno, vamos a observar el speed-up cuando n tiene a infinito para confirmarlo. Para este cálculo solo vamos a considerar del tiempo obtenido anteriormente, el factor de mayor orden. n n lim t n /t n/ p =lim n log n / n / p log n / p = p El resultado es p, lo cual significa que con tamaños de n MUY grandes, conseguiremos un speed-up de p (número de procesadores), lo cual es bastante prometedor. A grandes rasgos, la descomposición es bastante buena, sin embargo, presenta algunos problemas que deben ser comentados: Este algoritmo realiza una gran cantidad de comunicaciones y en el estudio hemos asumido que todos los mensajes se envían correctamente a la primera. Qué hace el procesador que envía sus datos ordenados al que realiza la mezcla? En principio, no hace nada, y es trabajo que estamos desperdiciando.

10 Descomposición de dominio... El esquema es bastante parecido a la descomposición recursiva, únicamente cambiamos el procedimiento de división de los datos, siendo los procedimientos de mezcla y ordenación los mismos que en el anterior esquema. El árbol generado en este caso tiene solamente profundidad 1 y el número de hijos generados, en vez de 2, es n/p; la idea de esta nueva versión es que, si conocemos de antemano el número de datos, el número de procesadores, y, por tanto, el número de divisiones que tenemos que hacer.. por qué no las hacemos directamente? Aunque esta idea puede parecer buena, en realidad, a priori es peor que la descomposición recursiva, debido a que aunque reduzcamos ligeramente el número de comunicaciones necesarias, ahora no se solaparán durante la división de los datos. Así pues, como sabemos que el coste de las comunicaciones va a incrementar, vamos a calcularlo para ver si nos tiene que preocupar: T (Envíar datos ) = p * (ts +tw * n/p) = p * ts + tw * n El término de mayor orden es de orden n,el cual es menor que en la ordenación,que es n/p*log(n/p) Por tanto, para tamaños de n muy grandes, el coste será aproximadamente el mismo. Este tipo de descomposición hereda los problemas de la descomposición recursiva, pero hay 2 puntos positivos: Dado que es el servidor el que centraliza el envío de los datos, podría existir una función que haga mas eficiente el envío de los mismos. El coste de programación de esta solución es menor.

11 Grafo de dependencias y asignación de tareas La solución que voy a implementar es la basada en al descomposición del dominio, a continuación presento el grafo de flujo de un mergesort para p=4 para mostrar la asignación de tareas que voy a utilizar: Leer Coste = n Procesador 1 Ordenar Coste = n/p * log (n/p) Dividir Coste = cte Coste = ts + tw * (n/p) Procesador 2 Coste = ts + tw* (n/p) Procesador 3 Camino crítico Ordenar Ordenar Ordenar Mezclar Coste=2*n/p Coste = ts + tw * ( 2 n/p) Mezclar Procesador 4 Mezclar Coste = 2 * 2 * n/p L = n + cte + ts + tw *(n/p) + + (n/p)*log(n/p) + ts + tw * (n/p)+2*n/p + + ts + tw * (2*n/p) + 2*2*n/p CosteTotal = n+cte+p*(ts+tw(n/p))+ +p*n/p log(n/p) + + 2*ts+ tw*(n/p)+2*2*2n/p+ +ts + tw*(2*n/p) +2*2*n/p M = (despreciando constantes y coste de las comunicaciones ) = = log (n/4) / ( ¼ * log ( n/4)) = 4 Lo cual significa que para n muy grande y comunicaciones despreciables, tendremos aproximadamente 4 tareas ejecutándose en paralelo.

12 Pseudoalgoritmo Tras las consideraciones anteriores, presento una versión muy general del algoritmo que resolverá el problema de ordenación por mezcla paralelo con un número de procesadores potencia de 2: Si ( procesador == 1 ) vectorelementos = Leer Datos miparte = trocear(vectorelementos,0,vectorelementos.tamaño/numprocesadores) Para i = 2 hasta numprocesadores Hacer posini = (i 1 ) * vectorelementos.tamaño/numprocesadores; posfin = i * vectorelementos.tamaño/numprocesadores; enviar(trocear(vectorelementos,posini,posfin),i) FinPara Sino recibir (miparte,1); FinSi ordenar(miparte); numpaso = 2 Mientras ( numpaso <= numprocesadores ) Hacer Si ( procesador % numpaso == 0) recibir(partedeotro, ((procesador-numpaso/2)%numprocesadores)) miparte=mezclar(miparte,partedeotro) Sino Si (procesador % numpaso == numpaso/2) enviar(miparte, (procesador+numpaso/2) % numprocesadores) FinSi numpaso = numpaso*2 FinMientras Si ( procesador == numpaso) devolver miparte FinSi

13 Pensando en la implementación El último paso de la práctica es implementarla, con las limitaciones que ello conlleva. La implementación se realizará haciendo uso del modelo de paso de mensajes (MPI) y el modelo de memoria compartida (OpenMP). Consideraciones con MPI: Las funciones de comunicación MPI_Send y MPI_Receive son bloqueantes, así que en este modelo a priori no tenemos ningún problema de sincronización. Para hacer mas eficiente el reparto de los datos de la raíz a todos los subprocesos, se puede utilizar la función MPI_Scatter. Consideraciones con OpenMP: Una vez leídos los datos,los procesadores pueden trabajar independientemente hasta el procedimiento de mezcla; necesitaremos colocar barreras justo antes del comienzo de esta etapa para asegurarnos de que los vectores que mezclamos están ordenados. Un proceso no utilizará datos de la porción asignada a otro proceso, hasta el proceso de mezcla; afortunadamente, gracias a la barrera anterior, evitaremos además problemas relacionados con lectura/escritura de un mismo bloque de memoria por parte de varios procesos. Por este motivo, y considerando la anterior barrera, ya que por el diseño del algoritmo no presentaremos conflictos de memoria, no será necesario hacer ninguna copia del vector principal de elementos y todos los procesos podrán leer y escribir en él sin problemas.

Algoritmos en Árbol y Grafo Computación Pipeline

Algoritmos en Árbol y Grafo Computación Pipeline Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Algoritmos en Árbol y Grafo Computación Pipeline Domingo Giménez (Universidad

Más detalles

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados

Más detalles

Divide y Vencerás Programación Dinámica

Divide y Vencerás Programación Dinámica Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Divide y Vencerás Programación Dinámica Domingo Giménez (Universidad de Murcia) 1 /

Más detalles

Relación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática.

Relación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática. 1. Por qué el modelo de programación que se sigue al programar con MPI es independiente de la asignación? 2. Describir gráficamente una solución eficiente para realizar una operación de reducción global

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.

Más detalles

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM UNIDAD II Metodología de programación paralela UNIDAD II: Metodología de programación paralela Metodología de programación paralela Algunos conceptos que nos ayudarán a entender mejor el tema. Modelos

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos

Programa de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Tema 2. Divide y vencerás.

Tema 2. Divide y vencerás. Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones especificaciones. 2. Conjuntos diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica. 1. Análisis

Más detalles

3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS

3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS 3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS Uno de los ingredientes más importantes para el procesamiento paralelo son sin duda los algoritmos paralelos que tienen un considerable interés en su desarrollo.

Más detalles

Diseño de algoritmos paralelos

Diseño de algoritmos paralelos Diseño de algoritmos paralelos Curso 2011-2012 Esquema del capítulo Visión general de algunos algoritmos serie. Algoritmo paralelo vs. Formulación paralela Elementos de un Algoritmo paralelo Métodos de

Más detalles

Tema 9. Recursividad

Tema 9. Recursividad Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

Esquema de Dividir y Vencer

Esquema de Dividir y Vencer Esquema de Dividir y Vencer Amalia Duch Barcelona, marzo de 2006 Índice 1. Esquema general 1 2. Búsqueda binaria (binary search) 2 3. Ordenación por fusión (merge sort) 2 4. Ordenación rápida (quick sort)

Más detalles

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Divide y vencerás Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones

Más detalles

PARTE II: ALGORÍTMICA

PARTE II: ALGORÍTMICA Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones.. Conjuntos y diccionarios.. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis

Más detalles

Paralelismo Relajado Paralelismo Síncrono

Paralelismo Relajado Paralelismo Síncrono Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelismo Relajado Paralelismo Síncrono Domingo Giménez (Universidad de Murcia) 1

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias

Más detalles

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia)

Más detalles

Diseño de Algoritmos Paralelos Prof. Gilberto Díaz

Diseño de Algoritmos Paralelos Prof. Gilberto Díaz Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Diseño de Algoritmos Paralelos Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Modelado y autooptimización en esquemas paralelos de backtracking

Modelado y autooptimización en esquemas paralelos de backtracking Modelado y autooptimización en esquemas paralelos de backtracking Manuel Quesada y Domingo Giménez Universidad de Murcia XX Jornadas de Paralelismo A Coruña, 18 Sept 2009 Índice 1 Introducción 2 Técnica

Más detalles

TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA

TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA Relación de Ejercicios Programación Distribuida y Paralela. 4 o de Ingeniería Superior en Informática. Departamento de Lenguajes y Sistemas Informáticos TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA

Más detalles

1. Planteamiento general

1. Planteamiento general Algoritmos de tipo Divide y Vencerás 1. Planteamiento general 2. Determinación del caso base 3.1. Búsqueda binaria 3.3. Problema de la selección 3.4. Multiplicación de matrices de Strassen 1. Planteamiento

Más detalles

Problema de las N Reinas. Resolución paralela

Problema de las N Reinas. Resolución paralela Problema de las N Reinas Resolución paralela Indice Introducción al problema Representación y Soluciones Resolución secuencial Resolución paralela Conclusiones Bibliografía 2 3 Introducción Introducción

Más detalles

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez Análisis y Complejidad de Algoritmos Arboles Binarios Arturo Díaz Pérez Arboles Definiciones Recorridos Arboles Binarios Profundidad y Número de Nodos Arboles-1 Arbol Un árbol es una colección de elementos,

Más detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del

Más detalles

Algoritmos sobre Listas

Algoritmos sobre Listas TEMA 6 Algoritmos sobre Listas V1.1 Manuel Pereira González Agenda Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de

Más detalles

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela

Más detalles

5. ESTRUCTURAS DE REPETICIÓN

5. ESTRUCTURAS DE REPETICIÓN 5. ESTRUCTURAS DE REPETICIÓN Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones () en varias ocasiones. El número de veces que el bloque

Más detalles

Conceptos. Generales ALGORITMOS

Conceptos. Generales ALGORITMOS Conceptos 1 Generales ALGORITMOS Que es un Algoritmo? 2 Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos

Más detalles

Granularidad y latencia

Granularidad y latencia Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación

Más detalles

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing. Primera Parte Resolución de Problemas y Algoritmos Ing. En Informática e Ing. En Computación Primer Cuatrimestre 2017 1 Lenguajes Algorítmicos Los algoritmos pueden describirse, en mayor o menor detalle,

Más detalles

ORGANIZACIÓN DE COMPUTADORAS DRA. LETICIA FLORES PULIDO

ORGANIZACIÓN DE COMPUTADORAS DRA. LETICIA FLORES PULIDO ORGANIZACIÓN DE COMPUTADORAS DRA. LETICIA FLORES PULIDO FACTOR DE VELOCIDAD Sabemos que p se identifica como el número de procesadores o procesos Multiprocesador será entonces el término que se puede utilizar

Más detalles

168 Capítulo 4. Representación de conjuntos mediante árboles

168 Capítulo 4. Representación de conjuntos mediante árboles 16 Capítulo. Representación de conjuntos mediante árboles En cuanto al tiempo de ejecución, básicamente podemos aplicar el mismo análisis que en la inserción. El tiempo total para una supresión será proporcional

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos

Más detalles

Divide-y-vencerás, backtracking y programación dinámica

Divide-y-vencerás, backtracking y programación dinámica Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel

Más detalles

Métodos de Ordenamiento. Unidad VI: Estructura de datos

Métodos de Ordenamiento. Unidad VI: Estructura de datos Métodos de Ordenamiento Unidad VI: Estructura de datos Concepto de ordenación La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden

Más detalles

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia) 1 / 31

Más detalles

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A. Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario

Más detalles

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

PARADIGMA y LENGUAJES DE PROGRAMACIÓN CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre

Más detalles

Definición recursiva de los árboles

Definición recursiva de los árboles Árboles Un árbol es una estructura de datos jerarquizada ada dato reside en un nodo, y existen relaciones de parentesco entre nodos: padre, hijo, hermano, ascendiente, descendiente, etc. Ejemplo: apítulos

Más detalles

Recursión como herramienta en resolución de problemas computacionales

Recursión como herramienta en resolución de problemas computacionales Recursión como herramienta en resolución de problemas computacionales Modularidad! Es común dividir los algoritmos en módulos! Cada módulo lleva a cabo cierta funcionalidad! Muchas veces los módulos sirven

Más detalles

Tema 2 Fundamentos de Complejidad Algorítmica

Tema 2 Fundamentos de Complejidad Algorítmica Tema 2 Fundamentos de Complejidad Algorítmica Pablo Sánchez Dpto. Matemáticas, Estadística y Computación Universidad de Cantabria Santander (Cantabria, España) p.sanchez@unican.es Pablo Sánchez (MATESCO)

Más detalles

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que: Instituto Universitario de Tecnología Industrial Rodolfo Loero Arismendi I.U.T.I.R.L.A. ÁRBOLES Sección 3DA Asignatura: Estructura de Datos Lenguaje (C). Ciudad Bolívar _ abril_ 2006. Introducción El siguiente

Más detalles

José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES

José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES MÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICA Diciembre 2010 Introducción Por qué utilizar Matlab paralelo? MATLAB es

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

Más detalles

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017 Primera Parte Fund. de la Informática Int. a la Programación Int. a la Computación Resolución de Problemas y Algoritmos Segundo Cuatrimestre 2017 1 Etapas en el proceso de resolver un problema: 1- Comprender

Más detalles

Unidad I: Introducción a las estructuras de datos

Unidad I: Introducción a las estructuras de datos Unidad I: Introducción a las estructuras de datos 1.1 Tipos de datos abstractos (TDA) Los tipos de datos abstractos (TDA) encapsulan datos y funciones que trabajan con estos datos. Los datos no son visibles

Más detalles

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i)

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i) Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (i) Eficiencia y notación asintótica. Introducción Para resolver un problema pueden existir varios algoritmos. Por tanto, es lógico

Más detalles

EVALUACIÓN DE MÉTODOS DE ORDENACIÓN: QuickSort vs. QuickSort con pseudomediana

EVALUACIÓN DE MÉTODOS DE ORDENACIÓN: QuickSort vs. QuickSort con pseudomediana EVALUACIÓN DE MÉTODOS DE ORDENACIÓN: QuickSort vs. QuickSort con pseudomediana Enero 1998 Pedro Pablo Gómez Martín Marco Antonio Gómez Martín GENERALIDADES El programa MEDICION, que se ejecuta con MEDICION,

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Lógica de programación

Lógica de programación Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta La característica fundamental

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional

Más detalles

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS En este capítulo, se realiza la evaluación y comparación de los métodos de paralelización de recurrencias descritos y propuestos en este trabajo. Los resultados

Más detalles

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Modelado analítico de programas paralelos Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

Sistemas Operativos Distribuidos

Sistemas Operativos Distribuidos Contenidos del Tema Gestión de procesos Modelos de sistema Asignación de procesadores Estrategias dinámicas Estrategias estáticas Ejecución remota de procesos Modelos de sistema Organización de los procesadores

Más detalles

RECORDAR TIPOS DE DATOS

RECORDAR TIPOS DE DATOS RECORDAR TIPOS DE DATOS VARIABLES: OBJETO CUYO valor cambia: A510 nombres NOTAS Int A=0; float B=1; CONSTANTES: OBJETO cuyo valor no cambia PI= 3.14159 LAS COMAS NO SE PERMITEN Int PI=3.1415 EXPRESIONES:

Más detalles

5 Métodos de Ordenamiento. 5.1 Métodos de Ordenamiento Internos Burbuja Quicksort Heapsort Inserción Simple 5.1.

5 Métodos de Ordenamiento. 5.1 Métodos de Ordenamiento Internos Burbuja Quicksort Heapsort Inserción Simple 5.1. 5 Métodos de Ordenamiento 5.1 Métodos de Ordenamiento Internos 5.1.1 Burbuja 5.1.2 Quicksort 5.1.3 Heapsort 5.1.4 Inserción Simple 5.1.5 Shellsort 5 Métodos de Ordenamiento 5.1 Ordenamiento Interno 5.1

Más detalles

Programación Concurrente y Paralela. Unidad 1 Introducción

Programación Concurrente y Paralela. Unidad 1 Introducción Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el

Más detalles

Tema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 07: Backtraking M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Backtraking Búsqueda en profundidad

Más detalles

Tema 2. Fundamentos Teóricos de la. programación dinámica Teorema de Optimalidad de Mitten

Tema 2. Fundamentos Teóricos de la. programación dinámica Teorema de Optimalidad de Mitten Tema 2 Fundamentos Teóricos de la Programación Dinámica 2.1. Teorema de Optimalidad de Mitten El objetivo básico en la programación dinámica consiste en descomponer un problema de optimización en k variables

Más detalles

1. Introducción al análisis de algoritmos

1. Introducción al análisis de algoritmos 1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Brassard y Bratley, 97; capítulos

Más detalles

1. 1. Introducción al concepto de algoritmia

1. 1. Introducción al concepto de algoritmia 1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Básica: Aho, Hopcroft y Ullman,

Más detalles

TEMA 1: Algoritmos y programas

TEMA 1: Algoritmos y programas TEMA 1: Algoritmos y programas 1.1.-Introducción La razón principal para utilizar un ordenador es para resolver problemas (en el sentido más general de la palabra), o en otras palabras, procesar información

Más detalles

CIENCIA DE LA COMPUTACION

CIENCIA DE LA COMPUTACION CIENCIA DE LA COMPUTACION Docentes Profesor: Alejandro Rozenfeld Jefe de trabajos prácticos: Andrea L. Riera Sebastián Villar Ayudantes diplomados: Fabio Bucciarelli Marcelo Marchioni Ayudante Alumno:

Más detalles

Taller de Programación Paralela

Taller de Programación Paralela Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 17, 2008 Motivación Programar aplicaciones paralelas no es una tarea trivial. Paralelismo

Más detalles

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES Autor: A.P.U. Enzo Rucci Director: Ing. Armando E. De Giusti Co-Director: Lic. Franco Chichizola Tesina de

Más detalles

COMPUTACIÓN DE ALTA PERFORMANCE 2013

COMPUTACIÓN DE ALTA PERFORMANCE 2013 COMPUTACIÓN DE ALTA PERFORMANCE Curso 2013 Sergio Nesmachnow (sergion@fing.edu.uy) Santiago Iturriaga (siturria@fing.edu.uy) Grupo de Procesamiento Paralelo Aplicado Centro de Cálculo TEMA 3 PROGRAMACIÓN

Más detalles

Resolución de problemas en paralelo

Resolución de problemas en paralelo Resolución de problemas en paralelo Algoritmos Paralelos Tema 1. Introducción a la computación paralela (segunda parte) Vicente Cerverón Universitat de València Resolución de problemas en paralelo Descomposición

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Costos de Búsqueda en Árboles Binarios de Búsqueda Año 08 Introducción Ya hemos definido recursivamente un árbol binario de búsqueda y hemos planteado una manera de deducir

Más detalles

Paradigma de paso de mensajes

Paradigma de paso de mensajes Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:

Más detalles

Lógica de programación 1

Lógica de programación 1 Lógica de programación 1 Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Recurrencias DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción 2 Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir

Más detalles

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS La principal razón para que las personas aprendan lenguajes de programación es utilizar una computadora como una herramienta para la resolución de problemas. Cinco

Más detalles

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas Paralelismo MPI Paso de mensajes Francisco García Sánchez Departamento de Informática y Sistemas Contenido Introducción 1) Uso de MPI 2) Multiplicación de matrices 3) Ordenación por mezcla 4) Programación

Más detalles

El Pseudo-código de PsInt

El Pseudo-código de PsInt El Pseudo-código de PsInt Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática de

Más detalles

Divide & Conquer. Herman Schinca. Clase de Junio de 2011

Divide & Conquer. Herman Schinca. Clase de Junio de 2011 Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.

Más detalles

Métodos de ordenamiento y búsqueda en vectores

Métodos de ordenamiento y búsqueda en vectores Métodos de ordenamiento y búsqueda en vectores Ordenación (clasificación) Es la operación de organizar un conjunto de datos en algún orden o secuencia específica, tal como creciente o decreciente para

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo. FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 3. Estructuras de Almacenamiento Básicas. Definición y Manejo. 1.- Búsqueda de Información. Definición de Clave. 2.- Definición y Manejo

Más detalles

Universidad Autónoma del Estado de México Facultad de Medicina

Universidad Autónoma del Estado de México Facultad de Medicina Universidad Autónoma del Estado de México Facultad de Medicina Licenciatura en Bioingeniería Médica Unidad de Aprendizaje: Algoritmos y programación básica Unidad 3: Estructuras de control de flujo en

Más detalles

Programación II Recursividad Dr. Mario Rossainz López

Programación II Recursividad Dr. Mario Rossainz López 5. RECURSIVIDAD 5.1. Introducción La recursividad es una técnica en la que una función o método se hace llamadas a sí misma en el proceso de la realización de sus tareas. La recursividad da al programador

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

Capítulo 3. Clasificación en Memoria Secundaria

Capítulo 3. Clasificación en Memoria Secundaria Capítulo 3. Clasificación en Memoria Secundaria INTRODUCCIÓN Las memorias secundarias (cintas magnéticas, discos duros, ) se caracterizan en general porque el acceso es secuencial. Es decir, en un instante

Más detalles

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)

Más detalles

Estructura de Datos Árboles Árboles 2-3

Estructura de Datos Árboles Árboles 2-3 Estructura de Datos Árboles 1-2-3 Árboles 2-3 Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2010 1 Arboles 1-2-3 Árbol n-ario ordenado de orden 3 Cada nodo tiene 1 ó 2 elementos 75 Nodo

Más detalles

Teoría Tema 4 Ampliación - Infinitésimos

Teoría Tema 4 Ampliación - Infinitésimos página 1/8 Teoría Tema 4 Ampliación - Infinitésimos Índice de contenido Qué son los infinitésimos?...2 Infinitésimo de la exponencial y el logaritmo para x 0...4 Infinitésimo de las funciones seno, coseno

Más detalles

Computación de Altas Prestaciones Sistemas computacionales

Computación de Altas Prestaciones Sistemas computacionales Computación de Altas Prestaciones Sistemas computacionales Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Motivación Problemas

Más detalles

1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos

1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos Introducción al estudio de algoritmos 1. Algoritmo, programa y pseudocódigo 2. Eficiencia y el principio de invarianza 3. Operaciones elementales 4. Casos mejor, peor y medio 5. Notación asintótica 6.

Más detalles

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios

Más detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS

ANÁLISIS Y DISEÑO DE ALGORITMOS ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 2005/2006 BOLETÍN DE PROBLEMAS: DIVIDE Y VENCERÁS Ejercicio 1 Dado un vector ordenado y rotado k veces: diseñar un algoritmo O(log n) que encuentre el elemento mayor

Más detalles

Algoritmo. Programa. Lenguaje algorítmico

Algoritmo. Programa. Lenguaje algorítmico ESCUELA DE EDUCACION SECUNDARIA TECNICA N 3 LENGUAJE ELECTRONICO PROFESOR: PAOLO, MARCOS GERMAN TEMA: ALGORITMOS Algoritmo Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y

Más detalles

Lógica de programación

Lógica de programación Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta Sentencias Repetitivas

Más detalles