ARQ_AvCap3
Transcript of ARQ_AvCap3
PRINCIPIOS DE DISEÑO DE ALGORITMOS PARALELOS
PRELIMINARES: DESCOMPOSICION, TAREAS Y GRAFICOS DE DEPENDENCIA
- El primer paso en el desarrollo de un algoritmo paralelo es descomponer el problema en tareas que pueden ser ejecutadas concurrentamente
- Las tareas pueden ser del mismo tamaño, diferentes o incluso indeterminante.- Una descomposición se puede ilustrar en forma de un grafico dirigido con nodos
correspondientes a las tareas y los bordes que indican que el resultado de una tarea se requiere para procesar la siguiente. Esta grafica se llama gráfico de dependencia de tareas.
Ej. MULTIPLICACION DE UNA MaTRIZ DENSA con un VECTOR
- Calculo de cada elemento del vector de salida y es independiente a otros elementos. Basados en esto, un producto de matriz-vector denso se puede descomponer en n o varias tareas
Ej. PROCESAR CONSULTAs EN LA BASE DE DATOS
- La ejecución de la consulta se puede dividir en subtareas de diversas maneras- Cada tarea solicitada puede ser la generación de un intermedio de tablas de entrada que
satisfacen una clausula particular - Tener en cuenta que el mismo problema ses puede descomponer en subtareas de otra
manera tmabien.- Diferentes descomposiciones de tareas puede dar lugara diferencias significativas con
respecto a su rendimiento en paralelo virtual
GRANULIDAD DE DECOMPOSICIONES DE TAREA
- El numero de tareas en que se descompone un problema determina su granulidad- En Gran numero de tareas: granulidad fina; pequeño número: granulidad gruesa
GRADO DE CONCURRENCIA
- El número de tareas que pueden ser ejecutadas en paralelo es el grado de concurrencia de una descomposición
- Dado q el num de tareas q sse pueden ejecutar en paralelo puede cambiar con la ejecución del programa, el grado máximo de concurrencia es el número máximo de tareas en cualquier momento de la ejecución
- El grado medio de concurrencia es el número medio de las tareas que puede ser procesado en paralelo a través de la ejecución del programa
- El grado de aumento de concurrencia como la descomposcion ses vuelve mas fino en granularidad y viceversa.
LONGITUD DE TRAYECTORIA (ruta) CRÍTICA
- Una trayectoria dirigida en la tarea del grafico de la dependencia representa una secuencia de tareas que deben ser procesadas una después de otra
- La trayectoria más larga determina el tiempo más corto en que el problema puede ser ejecutado en paralelo
- La longitud de la trayectoria más larga de un gráfico (en un gráfico) de un grafico de la dependencia de tarea, se llama longitud de camino critico (ruta critica)
LIMITES DEL RENDIMIENTO EN PARALELO
- El tiempo paralelo puede hacerse arbitrariamente pequeño al hacer más fina la descomposición de la granulidad
- La solución de la relación entre granulidad de una descomposición y los costos generales asociados a menudo determina los límites de rendimiento
LOS GRAficOS DE TAREAS DE ITERACION
- El gráfico de tareas (nodos) y sus iteraciones/intercambio de datos (bordes) se le conoce como grafico de iteración de tarea
- Estos representan dependencias de datos, los graficos de dependencias de tareas representan dependencias de control
LOS GRAFiCOS DE TAREAS DE ITERACION, GRANULIDAD Y COMUNICACIÓN
- Si la granulidad de una descomposición es más fina, la sobrecarga asociada aumenta (c0omo la relación de trabajo útil asociada a una tarea)
PROCESAMIENTO Y MAPEO
- En general el número de tareas en una descomposición es superior al número de elementos de procesamiento disponibles
- Por esta razón, un algoritmo paralelo debe proporcionar una asignación de tareas a los procesos
- Los gratos de dependencia de tareas se pueden utilizar para garantizar que el trabajo se extendió por igual en todas los procesos en cualquier punto
- La Asignacion adecuada de las tareas a los procesos es crítica para el funcionamiento en paralelo de un algoritmo.
- Las asignaciones están determinadas tanto por la dependencia entre tareas y los graficos de interacción de tareas
- Graficos de dependencia de tareas se puede utilizar para garantizar que el trabajo se extiende por igual en todos los procesos en cualquier punto (minimo ralentí y el equilibrio optimo de la carga)
- Graficos de tareas de interaccion pueden ser usados para asegurarse de que los procesos necesitan interaccion minima con otros procesos de comunicación.
- Una Asignacion adecuada debe minimizar el tiempo de ejecución en paralelo a través de :o Asign de tareas independientes para diferentes procesoso Asign de tareas en la ruta critica para procesos tan pronto como estén disponibleso Reducir al minimo la interaccion entre los procesos mediante la asignación de
tareas con interacciones densas a el mismo proceso.
TECNICAS DE DESCOMPOSICION (diapositva 21
- Descomposición recursiva: Se adapta a los problemas que se resuelven mediante el divide y vencerás
- Descomposición de datos: induce una descomposición del problema. Los datos pueden dividirse en diversas formas, esta impacta críticamente el rendimiento del sistema.
- Descomposición por salida de datos: Una descomposición a través de la salida de tareas descompone el problema en forma natural
PARTICIONAMIENTO DE DATOS DE ENTRADA
- Esta es la descomposición natural ya que la salida no se conoce claramente a priori- Una tarea se asocia con cada partición de datos de entrada
PARTICION DE DATOS DE E/S
- La entrada y salida de descomposición de datos se pueden combinar para un mayor grado de simultaneidad
PARTICIONAMIENTO DE DATOS INTERMEDIOS
- A menudo el cálculo puede ser visto como una secuencia de transformación de los datos de entrada a los de salida
EL PROPIETARIO CALCULA REGLAS
- En el proceso se asigna un elemento particular de datos, este es responsable de todo lo asociado a el
DESCOMPOSICION EXPLORATORIA
- Estos problemas implican típicamente la exploración de un espacio de estados de soluciones
DESCOMPOSICION ESPECULATIVA
- Enfoques conservadores: identifican las tareas independientes solo cuando están diseñados para no tener dependencia
- Enfoques optimistas: programar tareas cuando potencialmente pueden ser erróneas
DESCOMPOSICION HIBRIDA
- Mezcla de descomposición de datos y especulativo pueden funcionar bien- Para problemas simples como la búsqueda de un mínimo de una lista de números, una
mezcla de datos y recursiva funciona bien
CARACTERISTICAS DE LAS TAREAS
- Generación de tareas o Tareas recurrentes pueden ser identificadas a priorio Dinámica: las tareas se generan mientras se lleva a cabo la programación
- Tamaño de tareaso Uniforme: todas las tareas son del mismo tamaño
o No uniforme: los tamaños se pueden estimar a priori o no- Tamaño de los datos asociados a las tareas
o Pequeño: el contexto de una tarea implica que un algoritmo puede comunicar fácilmente esta tarea a otros procesos de forma dinámica
o Grande: enlazar el contexto de la tarea a un proceso, o alternativamente, un algoritmo puede intentar reconstruir el contexto en otros procesos en lugar de comunicar el contexto de la tarea
CARACTERISTICAS DE LAS ITERACIONES DE TAREAS
- Las estáticas: son conocidas a priori. Estas son relativamente sencillas de código en los programas
- Dinámicas: no es posible determinar a priori, estas son más difíciles de codificar- Periódicas: patrón definido- Regulares: no tienen bien definida la topología
TECNICAS DE MAPEO
- Una vez que el problema se ha descompuesto en tareas concurrentes, estas deben ser comparadas con los procesos
- Las asignaciones deben reducir al mínimo los gastos generales
TECNICAS DE MAPEO: CORRELACION PARA VACIO MINIMO
- Mapeo simultáneamente debe minimizar el vacío y el equilibrio de carga- Mapeo estático: las tareas se asignan a los procesos a priori. Se debe de tener una buena
estimación del tamaño de cada tarea- Mapeo dinámico: las tareas se asignan a los procesos en ejecución. Las tareas se generan
en tiempo de ejecución, su tamaño no es conocido
LOS ESQUEMAS DE ASIGNACION ESTATICA
- Asignaciones basadas en la partición de datos: podemos combinar la partición de datos en el cálculo de la regla del propietario para dividir el cálculo en subtareas
- Esquema de bloque matriz de distribución: se puede generalizar a dimensiones más altas- Ciclos y distribución de bloques de ciclos: el régimen de distribuciones de bloques puede
ser usado para aliviar la carga de desequilibrio y problemas de vacío- Los bloques se asignan a los procesos de una manera round-robin para cada proceso tiene
varios bloques no adyacentes- Bloque-ciclo de distribución por eliminación Gaussiana: mediante la asignación de bloques
en forma de bloque ciclo, cada procesador recibe bloques de partes diferentes de la matriz- Bloque-distribución cíclico: una distribución cíclica es un caso especial en el que el tamaño
de bloque es uno- Gratico de descomposición partición de datos dispersas: En el caso de matrices dispersas
la descomposición de bloques son más complejos
ASIGNACION VASADOS EN REPARTICION DE TAREAS
- Particionar una tarea dada la dependencia del gratico a través de los procesos. La determinación de una asignación óptima para una tarea general de la dependencia del grafo es un problema NP-completo
- Partición de tareas: asignación de un grato de árbol binario de dependencia: el grafo de dependencias de una vista rápida de tipo y la forma en que se pueden asignar a los procesos en un hipercubo
- Partición de tareas: asignación de una grafo disperso: para el cálculo de una matriz dispersa – producto vector y su asignación
ASIGNACIONES JERAQUICAS
- A veces, una técnica de mapeo única es insuficiente. Por esta razón, el mapeo de tarea se puede utilizar en el nivel superior y dentro de cada nivel la partición de datos
ASIGNACION DE MAPEO DINAMICO
- Se conoce también como balanceo de carga dinámica, ya que el equilibro de carga es la principal motivación para la asignación dinámica
ASIGNACION DINAMICA CENTRALIZADA
- Los procesos son designados como maestros o esclavos- Cuando se aumenta el número de procesos, el maestro puede llegar a ser el cuello de
botella- Para contrarrestar el cuello de botella, un proceso puede recoger un número de tareas de
una sola vez. Esto se denomina programación de Chunk
ASIGNACION DINAMICA DISTRIBUIDA
- Cada proceso puede evitar o recibir el trabajo de otros procesos
MINIMIZAR GASTOS GENERALES DE ITERACION
- Maximizar la localidad de datos: reutilizar datos intermedios- Minimizar el volumen de intercambio de datos: hay un costo asociado con cada iteración- Reducir al mínimo la frecuencia de las iteraciones: hay un costo inicial asociado con cada
iteración- Minimizar la contención y puntos críticos: utilizar técnicas descentralizadas, replicar datos
cuando sea necesario- Superposición de los cálculos de iteraciones: usar sin bloqueo de comunicación, multihilos
y ocultar las latencias de pre búsqueda- La replicación de datos o cálculos- Uso de comunicación de grupo en lugar de primitivas punto a punto- Superposición de iteraciones con otras iteraciones
MODELOS DE ALGORITMOS PARALELO
- En paralelo: las tareas son estáticamente asignadas a los procesos
- Gráfico: a partir de un grafo de dependencias de tareas, las interrelaciones entre estas se utilizan para promover la localidad o para reducir los costos de iteración
- Maestro-Esclavo: generan uno o más procesos de trabajo y se asignan- Pipeline/Productor-Consumidor: un flujo de datos se pasa a través de una sucesión de
procesos, cada uno de los cuales realiza una tarea- Híbridos: puede estar compuesto por cualquiera de los varios modelos aplicados
jerárquicamente o aplicar múltiples modelos secuencialmente a las diferentes fases de un algoritmo paralelo