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 y esquema maestro esclavo Domingo Giménez (Universidad de Murcia) Curso 2015-2016 1 / 35 Sesión 4 Descomposición del trabajo: Paralelismo de datos. Particionado de datos. Algoritmos relajados. De paralelismo basado en dependencias de datos: Paralelismo sı́ncrono. Dependencias en árbol o grafo. Pipeline. De paralelización de esquemas secuenciales: Divide y Vencerás. Programación Dinámica. Recorridos de árboles: Backtracking y Branch and Bound. De múltiples tareas o trabajadores: Bolsa de tareas. Granja de procesos. Maestro-Esclavo. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 2 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 3 / 35 Árboles de soluciones Problemas de búsqueda en un espacio de posibles soluciones. Problemas de distintos tipos: búsqueda de una única solución, de todas las soluciones, de la solución óptima, etc. Esquemas tı́picos de recorrido del árbol: Backtracking, Branch and Bound, etc. Se descompone el espacio de búsqueda en subespacios más pequeños y se asignan a distintos componentes computacionales (hilos, procesos). La generación de subproblemas puede ser estática o dinámica: todas las tareas se generan inicialmente, o se generan nuevas tareas durante el recorrido del árbol. La asignación de tareas puede ser estática o dinámica: se decide inicialmente qué subproblemas resuelve cada elemento de proceso, o se asigna trabajo según la velocidad de cada elemento de proceso. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 4 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 5 / 35 Ejemplo - Subconjunto que suma una cantidad Problema: Dado un conjunto de n enteros, C = {a0 , a1 , . . . , an−1 }, y un entero V , P se quiere encontrar un subconjunto S ⊆ C tal que si ∈S si = V . Representación de soluciones: n-tupla X de valores 0 o 1, con ai ∈ S sı́ y sólo sı́ xi = 1. Árbol de soluciones: Árbol binario. Cada nivel representa un elemento de C , y cada nodo tiene dos hijos que corresponden a los valores xi = 0 y xi = 1. Son solución los nodos terminales en los que Domingo Giménez (Universidad de Murcia) Pn−1 i =0 xi ai = V . Curso 2015-2016 6 / 35 Backtracking - Subconjunto que suma una cantidad Domingo Giménez (Universidad de Murcia) Curso 2015-2016 7 / 35 Backtracking - Subconjunto que suma una cantidad Domingo Giménez (Universidad de Murcia) Curso 2015-2016 8 / 35 Backtracking - Subconjunto que suma una cantidad Domingo Giménez (Universidad de Murcia) Curso 2015-2016 9 / 35 Backtracking - Subconjunto que suma una cantidad Domingo Giménez (Universidad de Murcia) Curso 2015-2016 10 / 35 Backtracking - Subconjunto que suma una cantidad Domingo Giménez (Universidad de Murcia) Curso 2015-2016 11 / 35 Backtracking paralelo Generación secuencial inicial de un número fijo de tareas. Distribución de tareas: ◮ ◮ Estática. Balancear la distribución. Si se sabe el coste de cada tarea se puede calcular distribución óptima (problema NP). Si no se sabe, se pueden generar más tareas que procesos y asignarlas aleatoriamente o cı́clicamente. Dinámica. Más difı́cil la gestión. Memoria Compartida, acceso en exclusiva a descriptores de las tareas. Paso de Mensajes, proceso que gestiona la bolsa de tareas (Maestro), y coste alto de la gestión por comunicaciones. Generación dinámica de tareas: se generan tareas y al tratarlas se generan nuevas tareas. Coste de gestión de la bolsa de tareas. La granularidad de las tareas debe ser alta. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 12 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 13 / 35 Branch and Bound - ideas generales En problemas de búsqueda en un espacio de soluciones. Normalmente problemas de optimización. Se trata de obtener la solución óptima explorando la menor cantidad posible de nodos. Se mantiene una Lista de Nodos Vivos. Se van extrayendo nodos de la LNV y se generan sus hijos. Para cada nodo se generan cota inferior, cota superior y estimación del beneficio (coste) de la solución óptima a partir de él. Ramificación: Los nodos de la LNV se van extrayendo con un criterio que puede estar basado en la estimación del beneficio. Poda: Un nodo se poda si su Cota Superior es menor que la mayor Cota Inferior de los nodos generados. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 14 / 35 Branch and Bound - paralelismo 1 Búsqueda paralela usando diferentes algoritmos en diferentes procesos: diferentes formas de calcular las cotas y la estimación del beneficio, y distintos criterios de selección. Se repiten nodos pero hay pocas comunicaciones. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 15 / 35 Branch and Bound - paralelismo 1 2 Búsqueda paralela usando diferentes algoritmos en diferentes procesos: diferentes formas de calcular las cotas y la estimación del beneficio, y distintos criterios de selección. Se repiten nodos pero hay pocas comunicaciones. Expansión en paralelo de cada nodo. Se necesita que la expansión de cada nodo sea costosa: gran número de hijos, alto coste de los cálculos de cada hijo. Gestión de la lista de nodos vivos centralizada ⇒ muchas comunicaciones. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 15 / 35 Branch and Bound - paralelismo 1 2 3 Búsqueda paralela usando diferentes algoritmos en diferentes procesos: diferentes formas de calcular las cotas y la estimación del beneficio, y distintos criterios de selección. Se repiten nodos pero hay pocas comunicaciones. Expansión en paralelo de cada nodo. Se necesita que la expansión de cada nodo sea costosa: gran número de hijos, alto coste de los cálculos de cada hijo. Gestión de la lista de nodos vivos centralizada ⇒ muchas comunicaciones. Evaluación paralela de subproblemas: Se asignan a cada proceso varios nodos de la LNV. Posibilidades de distribución: Estática: pocas comunicaciones, se pueden difundir las cotas para podar; la asignación de los nodos puede ser balanceada o ponderada. Dinámica con bolsa de tareas: más comunicaciones. La actualización de la bolsa puede ser inmediata o pospuesta. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 15 / 35 Branch and Bound - Subconjunto que suma una cantidad Domingo Giménez (Universidad de Murcia) Curso 2015-2016 16 / 35 Branch and Bound - comunicación de las cotas Comunicar las cotas puede contribuir a podar más, pero conlleva comunicaciones. ¿Cuándo y cómo comunicarlas? Domingo Giménez (Universidad de Murcia) Curso 2015-2016 17 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 18 / 35 Conceptos generales Una serie de elementos de proceso que constituyen una Granja de procesos y que pueden ser del mismo tipo (Trabajadores replicados). Normalmente trabajan resolviendo tareas que se encuentran en una estructura que contiene la definición de las tareas a realizar: Bolsa de tareas. Y la gestión de la bolsa la hace un proceso distinguido (Maestro), que atiende las peticiones y los envı́os de otros procesos (Esclavos). Se tiene ası́ el paradigma Maestro-Esclavo. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 19 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 20 / 35 Trabajadores replicados Se mantiene una bolsa central de tareas. Los trabajadores: ◮ ◮ Toman tareas de la bolsa. Posiblemente generan otras nuevas. Acaba la computación cuando la bolsa está vacı́a y todos los trabajadores han acabado (problema de detección de terminación). Útil en problemas combinatorios: búsqueda en árbol. La asignación dinámica de trabajos se hace para balancear la computación. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 21 / 35 Bolsa de tareas Bolsa de tareas: conjunto de descriptores de tareas; cada descriptor especifica una computación. En Memoria Compartida: una estructura centralizada de la que los trabajadores toman trabajos y posiblemente depositan otros nuevos. Acceso en exclusión mutua. En Paso de Mensajes: la estructura está en la memoria de uno o varios procesos, la petición y depósito de tareas conllevan comunicación. Tener en cuenta: ◮ ◮ ◮ Contención: Por ser la bolsa de tareas centralizada. Cuantos más procesadores mayor contención. Balanceo: Si se descentraliza la bolsa hay mayor desbalanceo y menor contención ⇒ compromiso entre contención y balanceo. Terminación: El test de terminación es global ⇒ sincronización. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 22 / 35 Ejemplo - Algoritmo de Dijkstra de camino más corto Grafo con matriz de adyacencia Pasos del algoritmo: paso inicial 1 2 3 4 5 cola 1 2,3 4,3 3,5 5 ∅ distancias 0 0 0 0 0 0 ∞ ∞ 4 4 4 4 4 8 7 7 7 7 ∞ ∞ 5 5 5 5 ∞ ∞ ∞ 15 12 12 ¿Cómo paralelizar?: Pasos independientemente: Paralelización Sı́ncrona. Procesos tomando elementos de la cola, pero genera nuevos elementos para la cola y modifica el vector de distancias ⇒ regiones crı́ticas, que limitan el paralelismo. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 23 / 35 Esquema de trabajadores replicados con bolsa de tareas en OpenMP inicializar bolsa de tareas; inicializar tareas ; omp set num threads(trabajadores ); acabados = trabajadores ; #pragma omp parallel private(fin,n) { fin=FALSO; Mientras no fin hacer #pragma omp critical { Si tareas = 0 y acabados = trabajadores entonces fin=VERDADERO; sino Si tareas , 0 entonces acabados = acabados − 1; tareas = tareas − 1; tomar tarea de la bolsa; finsi } Si tomada tarea entonces resolver tarea y generar n nuevas tareas; #pragma omp critical { tareas = tareas + n; acabados = acabados + 1; insertar las n tareas en la bolsa; } finsi finmientras } Domingo Giménez (Universidad de Murcia) bolsa de tareas y variables tareas y acabados son globales. Inicialmente 1 tarea y todos los trabajadores inactivos (acabados = trabajadores ). Los hilos trabajan mientras queden tareas u otros hilos trabajando (pueden generar nuevas taareas). No es necesario un Maestro. Todos los hilos hacen el mismo trabajo. Es necesario acceder en exclusión mutua a las variables compartidas. Curso 2015-2016 24 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 25 / 35 Maestro-Esclavo - esquema centralizado Comunicaciones entre el maestro y los esclavos. El maestro conoce la condición de fin y la comunica a los esclavos. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 26 / 35 Esquema Maestro-Esclavo con número fijo de trabajos y distribución dinámica de trabajo // Se dispone de p procesos esclavos // y de t tareas Si proceso maestro entonces asignar un trabajo a cada esclavo; t = t − p; Mientras t,0 hacer Recibe(resultado ); Envia(trabajo , esclavo del que ha recibido ); t = t − 1; finmientras Mientras p,0 hacer Recibe(resultado ); Envia(marca de fin, esclavo del que ha recibido ); p = p − 1; finmientras sino Recibe(trabajo , maestro ); resolver trabajo ; Envia(resultado , maestro ); Recibe(trabajo o marca de fin, maestro ); Mientras no recibida marca de fin hacer resolver trabajo ; Envia(resultado , maestro ); Recibe(trabajo o marca de fin, maestro ); finmientras finsi Domingo Giménez (Universidad de Murcia) Suponemos que inicialmente hay tareas para todos los esclavos. El Maestro recibe resultados y envı́a nuevos trabajos. Cuando no le quedan más trabajos manda señales de fin a todos los esclavos. Los Esclavos reciben tareas, las resuelven, mandan el resultado y reciben nuevas tareas, hasta que reciben la señal de fin. Curso 2015-2016 27 / 35 Esquema Maestro-Esclavo con generación de nuevos trabajos por los esclavos Si proceso maestro entonces generar tareas iniciales; asignar un trabajo a cada esclavo; // solicitudes representa el número de solicitudes de trabajo que ha recibido el maestro y que no ha atendido solicitudes = 0; Mientras solicitudes,p hacer Recibe(resultado trabajos o solicitud ); Si recibidos trabajos entonces incluir trabajos en la bolsa; Para cada esclavo esperando hacer Si trabajo disponible entonces Envia(trabajo , esclavo ); solicitudes = solicitudes − 1; finsi finpara finsi Si recibida solicitud entonces solicitudes = solicitudes + 1; Si trabajo disponible entonces Envia(trabajo , esclavo del que ha recibido ); finsi finsi finmientras enviar señal de fin a todos los esclavos; sino Recibe(trabajo , maestro ); resolver trabajo ; Envia(resultado y trabajos , maestro ); Recibe(trabajo o marca de fin, maestro ); Mientras no recibida marca de fin hacer resolver trabajo ; Envia(resultado y trabajos , maestro ); Recibe(trabajo o marca de fin, maestro ); finmientras finsi Domingo Giménez (Universidad de Murcia) Curso 2015-2016 28 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 29 / 35 Problemas del esquema de bolsa de tareas centralizado La bolsa de tareas puede convertirse en un cuello de botella: muchas comunicaciones entre el Maestro y los Esclavos. Se puede intentar mejorar: ◮ ◮ ◮ ◮ Aumentando la granularidad de las tareas: asignar varias tareas a la vez. Pero esto puede empeorar el balanceo. Quedándose los esclavos con tareas que han generado. Haciendo petición anticipada de tareas. Con una jerarqı́a de maestros. Dificulta la detección de fin. Se puede intentar solventar el problema descentralizando la bolsa de tareas. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 30 / 35 Bolsa de tareas descentralizada Mucho más compleja de gestionar. ¿A quién se hacen las peticiones? ¿Cómo se sabe que no quedan tareas por resolver? Domingo Giménez (Universidad de Murcia) Curso 2015-2016 31 / 35 Solicitud cı́clica de trabajo Los procesos solicitan trabajos cı́clicamente. ¿Cuándo se acaba? Puede pasar que pida a todos y ninguno tenga trabajo, pero que mientras estaba haciendo las peticiones otro proceso que ya habı́a evaluado genere nuevos trabajos. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 32 / 35 Algoritmo de Dijkstra de detección de fin Al hacer la petición se manda un testigo Blanco. Si por el camino pasa por un proceso que mandó trabajo a otro el testigo pasa a Negro. Si vuelve el testigo Blanco se acaba. Si vuelve Negro puede volver a pedir. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 33 / 35 Contenido 1 Recorrido de árboles Backtracking Branch and Bound 2 Trabajadores replicados Bolsa de tareas Maestro-Esclavo Esquemas descentralizados 3 Prácticas Domingo Giménez (Universidad de Murcia) Curso 2015-2016 34 / 35 Más ejemplos en el capı́tulo 6 del libro de Introducción a la Programación Paralela. Hay un ejemplo del Problema de las reinas con esquema maestro-esclavo con generación de nuevas configuraciones. También ejemplos de Backtracking en el Concurso de Programación Paralela: 2011, problema E. 2012, problema D. 2013, problemas F y G. El mismo con Memoria Compartida y Paso de Mensajes. 2014, problemas F y G. El mismo con Memoria Compartida y Paso de Mensajes. En la práctica se pedirá la implementación de alguno de ellos en OpenMP y MPI, puede que pidiendo una implementación concreta (maestro-esclavo, bolsa centralizada, asignación estática o dinámica...) o bien seleccionando el alumno la técnica a usar. Domingo Giménez (Universidad de Murcia) Curso 2015-2016 35 / 35
© Copyright 2025