Cris Vivenes 19-0722
Para la materia: Análisis y Diseño de Algoritmos - UNIBE.
Un Algoritmo Paralelo es un Algoritmo que podría ser ejecutado por piezas en el mismo momento de tiempo por numerosas unidades de procesamiento, para al final juntar cada una de las piezas y obtener el resultado adecuado.
2. Algoritmos Paralelos
● Diseñar algoritmos paralelos no es tarea fácil y es un proceso altamente
creativo.
● Inicialmente se deben explorar los aspectos independientes de la máquina.
● Los aspectos específicos a la máquina deben ser dejados para más tarde.
3. ¿Qué son Algoritmos Paralelos?
● Es un Algoritmo que podría ser
ejecutado por piezas en el
mismo momento de tiempo
por numerosas unidades de
procesamiento, para al final
juntar cada una de las piezas y
obtener el resultado
adecuado.
4. Cuatro Etapas Del Diseño de Algoritmos Paralelos
El diseño involucra cuatro etapas las cuales se presentan como secuenciales pero que
en la práctica no lo son.
● Particionamiento: Los datos que se desean operar se descomponen en tareas.
● Comunicación: A través de estructuras y algoritmos de comunicación se
determina de el tipo de comunicación requerida para coordinar tarea.
● Agrupamiento: Se evalúa la eficiencia de los dos pasos anteriores y de ser
necesario se agrupan algunas tareas pequeñas en tareas más grandes.
● Asignación: Cada tarea es asignada a un procesador tratando de aprovechar los
recursos y reducir el costo de la comunicación.
6. Alto Rendimiento
● Los Algoritmos paralelos son claves en la computación de alto rendimiento
debido a que implica usar la potencia de cálculo para resolver problemas
complejos en ciencia, ingeniería y gestión.
● William D. Gropp un profesor de ciencias de la computación en la universidad
de Illinois en Urbana-Champaign aprovechó esto desarrollando y analizando
algoritmos paralelos escalables clave para métodos de descomposición de
dominios y refinamiento de mallas adaptativas, que ahora se utilizan
ampliamente en aplicaciones paralelas.
7. Artículo Algoritmo Paralelos
● Las menciones de honor para el premio de disertación doctoral ACM 2019 son para
Jakub Tarnawski, École polytechnique fédérale de Lausanne (EPFL) y JiaJun Wu, Instituto
de Tecnología de Massachusetts (MIT).
● La disertación de Jakub Tarnawski "Nuevos algoritmos gráficos a través de técnicas
poliédricas" hizo un progreso algorítmico innovador en dos de los problemas más
centrales en la optimización combinatoria: el problema de coincidencia y el problema del
viajante de comercio. El trabajo en algoritmos paralelos deterministas para el problema
de emparejamiento está motivado por uno de los misterios sin resolver de la informática:
¿ayuda la aleatoriedad a acelerar los algoritmos? La disertación de Tarnawski hace un
progreso significativo en esta pregunta al desautorizar casi por completo un algoritmo de
emparejamiento paralelo aleatorio de tres décadas de Ketan Mulmuley, Umesh Vaziriani y
Vijay Vazirani.
8. ● El segundo resultado principal de la disertación de Tarnawski se relaciona con el problema
del viajante de comercio: encontrar el recorrido más corto de n ciudades dadas. Ya en 1956,
George Dantzig et al. usó un programa lineal para resolver una instancia especial del
problema. Desde entonces, la fuerza de su programa lineal se ha convertido en uno de los
principales problemas abiertos en la optimización combinatoria. La disertación de Tarnawski
resuelve esta pregunta asintóticamente y proporciona el primer algoritmo de aproximación
de factor constante para el problema asimétrico del viajante de comercio.
9. Práctica Principios Algoritmos Paralelos
En la práctica, existen varios principios en el diseño de algoritmos paralelos:
● El Principio de Programación del Brent: Este principio permite reducir el número de procesadores
utilizados en los algoritmos paralelos existentes, sin aumentar la tiempo total de ejecución.
● El principio de canalización: la canalización se puede utilizar en situaciones en las que desea
realizar varias operaciones en una secuencia {P1, ..., Pn}
● El principio divide y vencerás: este es el principio de dividir un problema en varios componentes
independientes pequeños y resolverlos en paralelo.
● El principio del gráfico de dependencia: creamos un gráfico dirigido en el que los nodos
representan bloques de operaciones independientes y los bordes representan situaciones en las
que un bloque de operación depende del resultado de realizar otros bloques.
● Principio de condición de carrera: si dos procesos intentan acceder al mismo datos, pueden
interferir entre sí.