Análisis de rendimiento y optimización de algoritmos paralelos Best-First Search sobre multicore y cluster de multicore
Autor Principal: | |
---|---|
Otros autores o Colaboradores: | , |
Formato: | Tesis |
Lengua: | español |
Datos de publicación: |
2014
|
Temas: | |
Acceso en línea: | http://catalogo.info.unlp.edu.ar/meran/getDocument.pl?id=2549 Consultar en el Cátalogo |
Descripción Física: | 1 archivo (3,3 MB) : il. col. |
Tabla de Contenidos:
- Resumen
- Contenido
- Capítulo 1: Introducción
- 1.1 Motivación
- 1.2 Objetivos y contribuciones
- 1.3 Publicaciones derivadas
- Capítulo 2: Algoritmos Secuenciales de Búsqueda
- 2.1 Construcción del espacio de estados del problema
- 2.2 Algoritmos de búsqueda
- 2.2.1 Propiedades y complejidad algorítmica
- 2.2.2 Algoritmos de búsqueda no informada
- 2.2.2.1 Estrategia Depth-First
- 2.2.2.2 Estrategia Breadth-First
- 2.2.2.3 Iterative Deepening Depth-First
- 2.2.2.4 Búsqueda de costo uniforme
- 2.2.3 Algoritmos de búsqueda informada
- 2.2.3.1 A
- 2.2.3.2 Iterative Deepening A (IDA)
- 2.2.3.3 Frontier Search A
- 2.3 Discusión y conclusiones
- Capítulo 3: Caracterización del Caso de Estudio
- 3.1 Definición del problema
- 3.2 Solubilidad
- 3.2.1 Algoritmo para la detección de solubilidad
- 3.3 Funciones heurísticas para el problema del Puzzle
- 3.3.1 Suma de las Distancias de Manhattan (SDM)
- 3.3.2 Conflictos Lineales
- 3.3.3 Últimos Movimientos ("Last Moves")
- 3.3.4 Fichas de las Esquinas del Puzzle ("Corner Tiles")
- 3.4 Discusión y conclusiones
- Capítulo 4: Arquitecturas Paralelas y Herramientas de Programación
- 4.1 Clasificación de arquitecturas paralelas
- 4.2 Arquitectura tipo Cluster
- 4.3 Evolución hacia la arquitectura multicore
- 4.4 Bibliotecas para el desarrollo de aplicaciones paralelas
- 4.4.1 MPI
- 4.4.2 Pthreads
- 4.5 Discusión y conclusiones
- Capítulo 5: Algoritmos Paralelos Best-First Search
- 5.1 Análisis de rendimiento. Causas de degradación de rendimiento de un sistema paralelo
- 5.1.1 Métricas: Speedup y Eficiencia
- 5.1.2 Escalabilidad
- 5.1.3 Métricas para Algoritmos de Búsqueda Paralela Best-First
- 5.2 Estrategia Centralizada: A Paralelo con Estructuras de Datos Globales
- 5.3 Estrategia Distribuida: A Paralelo con Estructuras de Datos Locales
- 5.4 Algoritmos para la Detección de Terminación de Aplicaciones con Cómputo Distribuido
- 5.4.1 Modelo del sistema
- 5.4.2 Algoritmo de terminación de Dijkstra
- 5.4.3 Algoritmo de terminación de Mattern de los 4 contadores
- 5.5 Importancia de la Biblioteca de Gestión de Memoria Dinámica
- 5.6 Discusión y conclusiones
- Capítulo 6: Implementaciones
- 6.1 Algoritmo secuencial A
- 6.2 Algoritmos Paralelos
- 6.2.1 HDA para memoria distribuida
- 6.2.1.1 Síntesis
- 6.2.1.2 Variables
- 6.2.1.3 Procesamiento
- 6.2.1.4 Ineficiencias para arquitecturas de memoria compartida
- 6.2.2 HDA para memoria compartida
- 6.2.2.1 Síntesis
- 6.2.2.2 Variables compartidas por los threads
- 6.2.2.3 Variables Locales al thread
- 6.2.2.4 Procesamiento
- 6.2.2.5 Consideraciones sobre Mutex lock, Spin lock y Semáforos
- 6.2.2.6 Gestión de memoria dinámica con Jemalloc
- 6.3 Discusión y conclusiones
- Capítulo 7: Resultados
- 7.1 A secuencial
- 7.1.1 Efecto de la heurística
- 7.1.2 Efecto de la biblioteca de gestión de memoria dinámica
- 7.1.3 Efecto de la técnica "Memory pool"
- 7.2 HDA para memoria compartida (HDA Pthreads)
- 7.2.1 Efecto en el rendimiento de la espera pasiva y espera activa
- 7.2.2 Efecto en el rendimiento de la técnica Memory Pool
- 7.2.3 Efecto en el rendimiento de los parámetros LNPI y LNPT
- 7.2.3.1 Límite de Nodos Procesados Por Iteración (LNPI)
- 7.2.3.2 Límite de Nodos Por Transferencia (LNPT)
- 7.2.4 Desvío Estándar del Tiempo de Ejecución
- 7.2.5 Análisis de rendimiento
- 7.2.5.1 Factores de overhead
- 7.3 HDA para memoria distribuida (HDA MPI)
- 7.3.1 Comportamiento sobre multicore
- 7.3.1.1 Impacto de los parámetros LNPI y LNPT sobre el rendimiento
- 7.3.1.1.1 Límite de Nodos Procesados Por Iteración (LNPI)
- 7.3.1.1.2 Límite de Nodos Por Transferencia (LNPT)
- 7.3.1.2 Desvío Estándar del Tiempo de Ejecución
- 7.3.1.3 Análisis de rendimiento
- 7.3.1.3.1 Factores de Overhead
- 7.3.2 Comportamiento sobre cluster de multicore
- 7.3.2.1 Impacto de los parámetros LNPI y LNPT sobre el rendimiento
- 7.3.2.1.1 Límite de Nodos Procesados Por Iteración (LNPI)
- 7.3.2.1.2 Límite de Nodos Por Transferencia (LNPT)
- 7.3.2.2 Desvío Estándar del Tiempo de Ejecución
- 7.3.2.3 Análisis de Rendimiento
- 7.3.2.3.1 Factores de Overhead
- 7.4 Comparación del consumo de memoria de HDA Pthreads y HDA MPI sobre máquina multicore
- 7.5 Comparación del rendimiento de HDA Pthreads y HDA MPI sobre máquina multicore
- 7.6 Discusión y conclusiones
- Capítulo 8: Algoritmo Paralelo HDA Híbrido
- 8.1 Aplicaciones Paralelas Híbridas
- 8.2 Algoritmo HDA Híbrido
- 8.2.1 Síntesis
- 8.2.2 Esquema de comunicación vía mensajes
- 8.2.3 Esquema de comunicación vía variables compartidas
- 8.2.4 Detección de terminación local y Detección de terminación global
- 8.2.5 Variables globales a los threads de un proceso
- 8.2.6 Variables locales a cada thread de un proceso
- 8.2.7 Procesamiento
- 8.3 Discusión y conclusiones
- Capítulo 9: Conclusiones y Líneas de Trabajo Futuro
- Apéndice A: Correctitud del Algoritmo de Verificación de Solubilidad para el N2-1 Puzzle
- A.1 Configuraciones legales e ilegales
- A.2 Fórmula de solubilidad
- A.2.1 Proposición para N par
- A.2.2 Proposición para N impar
- A.3 Conclusiones
- Apéndice B: Función de Zobrist
- Apéndice C: Configuraciones Utilizadas del 15-Puzzle
- Bibliografía