Algoritmos Paralelos - Ciencias Computacionales

Anuncio
Algoritmos Paralelos
(Parallel Algorithms)
DR. JESÚS A. GONZÁLEZ BERNAL
CIENCIAS COMPUTACIONALES
INAOE
Introducción
2
y Objetivo
{ Mejorar el tiempo de ejecución
{ Distribuir el procesamiento en varios procesadores
y Consideraciones
{ Cómo accesar y controlar los procesadores
Instrucciones (sencillas o múltiples)
Ù Memoria local
Ù
{
Acceso a memoria global
Utilizada para sincronización
Ù Conflictos por acceso a memoria
Ù
Algunas Máquinas
3
y
y
y
y
y
y
Sequent (8 procesadores, múltiples instrucciones, memoria
compartida)
Hypercube (8 procesadores, memoria distribuída, topología
de hipercubo)
CM2 (64,000 procesadores, instrucción sencilla)
CM5 (32,000 procesadores, instrucción sencilla para cada
uno de 8000 procesadores)
Intel Paragon (1,028 procesadores, topología de malla 2D)
nCUBE (128 procesadores, memoria distribuída MIMD,
topología de hipercubo)
Modelos
4
y RAM
{ Random Access Machine
y PRAM
{ Parallel Random Access Machine
Modelo PRAM
5
y P procesadores seriales: P0, P1, P2, …, Pp-1
y Utilizan memoria global compartida
{
{
Todos los procesadores leen o escriben a la memoria global en paralelo
Asume acceso unitario a memoria (todo acceso a memoria ocupa una unidad)
y Los procesadores pueden también ejecutar operaciones en paralelo
y Tiempo de ejecución se mide como número de accesos a memoria
en paralelo que un algoritmo hace
y El tiempo de acceso a memoria crece al aumentar el número de
procesos en la computadora paralela
{
Generalmente accesos a memoria a través de una Red (acceso muy lento)
y Cada procesador ejecuta la misma instrucción al mismo tiempo
Modelo PRAM
6
p0
p1
p2
pp-1
Shared
memory
Accesos a Memoria
7
y
Concurrent Read (CR)
{
y
Concurrent Write (CW)
{
y
Los más utilizados
EREW
{
y
Son todos modelos PRAM
EREW, CRCW
{
y
No hay dos procesadores que escriban a la misma ubicación de memoria al mismo tiempo
EREW, CREW, ERCW, CRCW
{
y
No hay dos procesadores que lean de la misma ubicación de memoria al mismo tiempo
Exclusive Write (EW)
{
y
Procesadores múltiples escriben a la misma ubicación de memoria al mismo tiempo
Exclusive Read (ER)
{
y
Procesadores múltiples leen de una misma ubicación de memoria al mismo tiempo
Fácil de implementar (restricciones a mantener por el programador)
En el modelo CRCW
{
Necesario determinar que hacer cuando dos o más procesadores escriben en le misma ubicación
Ù
Ù
Ù
Ù
Arbitrario – seleccionar el valor a escribir arbitrariamente
Prioridad – escribir el valor del procesador con el índice más bajo
Combinado – escribir alguna combinación de valores (suma, máximo)
Común – los procesadores deben (todos) escribir el mismo valor
Sincronización y Control
8
y Los procesadores ejecutan las mismas instrucciones al mismo
tiempo
y En el modelo PRAM asumimos que los procesadores están sincronizados
y Las condiciones de paro dependen del estado de todos los
procesadores
y Los procesadores se encuentran interconectados de alguna manera
y Tiempo de propagación
{
Uso de la red para sincronizar a los procesadores
y CRCW PRAM puede utilizar escrituras concurrentes para
determinar condiciones de terminación
Saltos con Apuntadores (pointer jumping)
9
y Algoritmo para calcular la distancia al final de la lista
para cada objeto en una lista de n-objetos en un
tiempo de O(lg n)
y Algoritmo para calcular prefijo paralelo en una lista
de n-objetos en tiempo de O(lg n)
y Algoritmo para convertir problemas de árboles en
problemas de listas que se pueden resolver por
“pointer-jumping”
y Estos algoritmos son EREW
Ranqueo de Listas (List Ranking)
10
y
Para cada objeto en la lista hay que calcular la distancia al final de la lista
⎧0
d (i ) = ⎨
⎩d (next (i )) + 1
si next(i) = NIL
si next(i) ≠ NIL
Algoritmo serial: Θ(n)
y Algoritmo paralelo: O(lg n)
y Cómo trabaja:
y Repeat
y Pointer jump
y Add number of objects jumped to current distance
y Until all next(i) = NIL
y Ganancia en velocidad (Speedup):
y S = T(mejor algoritmo serial) / T(algoritmo paralelo)
y
S=
O ( n)
O(lg n)
Algoritmo
11
List-Rank(L)
Foreach processor i, in parallel
if next(i) = NILL
then d(i) = 0
else d(i) = 1
While next(i) != NIL for some i
foreach processor i, in parallel
if next(i) != NIL
then d(i) = d(i) + d(next(i))
next(i) = next(next(i))
3
1
3
2
3
4
3
5 /
4
1
6
1
4
2
6
2
4
4
6
3 /
4
4 /
6
3 /
;O(1)
; test
; O(1)
;synchronize
1
0
1
5
0 /
1
0
1 /
5
0 /
1
0
1 /
5
0 /
0
1 /
5
0 /
1
2
2 /
1
2 /
Algoritmo
12
y El algoritmo List-Rank parte a la mitad las longitudes de las listas en
cada paso, entonces pasa O(lg n) veces por el ciclo while
y El algoritmo tiene un tiempo de Θ(lg n)
Cálculos con Prefijos
13
y Se pueden utilizar saltos de apuntadores para realizar cálculos
con prefijos
y Algoritmo EREW para problema de prefijos corre en O(lg n)
en una lista con n objetos
y Cálculo prefijo
{
Dado un operador binario y asociativo ⊗ y una entrada x1 … xn,
calculamos una secuencia y1… yn tal que:
Ù
Ù
Ù
{
y1 = x1
yk = yk-1 ⊗ xk
= x1 ⊗ x2 ⊗ … ⊗ xk
Cada yk se obtiene multiplicando los primeros k elementos de la
secuencia de xk
Ù
Ù
De ahí viene el término de “prefijo”
Podemos utilizar saltos de apuntadores para cambiar [i,i] por [1,i]
Algoritmo List-Prefix(L)
14
LIST-PREFIX(L)
for each processor i, in parallel
do y[i] <-- x[i]
;; [i,i]
while there exists an object i such that next[i] ≠ NIL
do for each processor i, in parallel
do if next[i] ≠ NIL ;; [i,j] ⊗ [j+1,k] --> [i,k]
then y[next[i]] <-- y[i] ⊗ y[next[i]]
next[i] <-- next[next[i]] ;; pointer jump
Ejemplo List-Prefix(L)
15
y Valor de y inicializado a [k, k]
y b-d, valores de y y next antes de la prueba de la línea 3
y d, el resultado final, el valor de y para el k-ésimo objeto es
[1,k] para todo k
[1,1]
[2,2]
[3,3]
[4,4]
[5,5]
[1,1]
[1,2]
[2,3]
[3,4]
[4,5]
[1,1]
[1,2]
[1,3]
/
[1,4]
/
[1,3]
/
[1,4]
/
[1,1]
/
[1,2]
/
[6,6]
/
/
[5,6]
/
[2,5]
/
[3,6]
/
[1,5]
/
[1,6]
/
Análisis de List-Prefix(L)
16
y Igual que el de List Rank
y Serial
{
Θ(n)
y PRAM
{ O(lg n)
y Ganancia en velocidad (speedup)
{ S = n/lg n
y Eficiencia
{ E = 1 / lg n
y Trabajo
{ W = Θ(nlg n)
Programación en Paralelo
17
y Tipos de paralelismo
{
{
{
{
Nivel bit
Nivel instrucción
Nivel de datos
Nivel tareas
y Comunicación entre procesadores
{
{
{
Sincronización entre subtareas
Memoria
Paso de mensajes
y Software
{
Sistemas Operativos Distribuidos
Ù
{
{
Linda, Corba
PVM (ya no tan utilizado), MPI
Threads
y Reto: Paralelización Automática
Aplicaciones de la Programación en Paralelo
18
y Aprendizaje Automático y Minería de Datos
{ Análisis de información
y Algoritmos de visión por computadora
{ Muchos programados en FPGA’s (Field Programmable Gate
Array)
y Simulaciones de Monte Carlo
y Programación Dinámica
y Algoritmos para grafos (recorrido de grafos)
Presentaciones (cuenta 8%)
19
y Temas (11 equipos)
{ Cap. 5 – Probabilistic Analysis and Randomized Algorithms (11 Nov)
Ù
{
Cap. 9 – Medians and Order Statistics (11 Nov)
Ù
{
Javier Cabanillas, Gerardo Arellano
Cap. 33 - Computational Geometry (25 Nov)
Ù
{
Pavel Herrera, Omar Chávez
Cap. 32 - String Matching (25 Nov)
Ù
{
Aradí Rosales, Lázaro Bustio
Cap. 31 - Number-Theoretic Algorithms (20 Nov)
Ù
{
Laritza Hernández, Alejandro Mesa
Cap. 30 - Polynomials and the FFT (20 Nov)
Ù
{
Augusto Melendez, Antonia Ruíz
Cap. 29 - Linear Programming (18 Nov)
Ù
{
Victor Hugo Arroyo, Jorge Ocampo
Cap. 28 - Matrix Operations (18 Nov)
Ù
{
Dulce García, Rodolfo Luna
Cap. 27 - Sorting Networks (13 Nov)
Ù
{
Jorge Morales, Husein López
Cap. 17 – Amortized Analysis (13 Nov)
Ù
{
Abraham Bernardo, José Luis Hernández
Ana Tenorio, Gabriela Ramírez
Cap. 35 - Approximation Algorithms (27 Nov)
Ù
Saul Solorio, Fernando, Emmanuel Anguiano
y Tiempo
{ 2 por clase
Proyecto de Investigación
20
y Elección del artículo
{ Jueves 6 de Noviembre
{ 5 minutos para describir su artículo
{ Determinar si se acepta o no
y Entrega de proyecto de investigación
{ 2 de Diciembre
y Examen Final
{ 2 de Diciembre
Proyecto de Investigación
21
y La investigación consiste en buscar y seleccionar un
algoritmo (no sistema) de su interés y ya publicado,
con las siguientes características:
{
{
{
Publicado de 2004 en adelante
Debe haber sido reportado en revista o en algún congreso (no
se aceptarán borradores (drafts) obtenidos de internet)
Incluye un análisis de su desempeño al menos en tiempo,
aunque sería deseable que también se reporte en espacio.
Proyecto de Investigación
22
y Reporte
{ A partir del algoritmo seleccionado, se deberá hacer un reporte
por escrito de dos cuartillas (a 12 puntos con interlineado de
espacio y medio) con las siguientes secciones:
Descripción del problema
Ù Algoritmos previamente reportados
Ù Comentarios acerca del enfoque usado para diseñar el algoritmo
(voraz, divide y conquista, programación dinámica, etc.)
Ù Descripción del algoritmo
Ù Conclusiones del análisis del desempeño del algoritmo
Ù Referencia completa
Ù
Proyecto de Investigación
23
y Observaciones
{ Se debe anexar una copia del artículo al reporte
{ Se espera un trabajo de análisis propio en el que se haga uso de
los conceptos y técnicas vistos en el curso
{ Se penalizará mala redacción o errores de dedo, así como
plagios (copias/traducciones literales de parte del artículo).
Descargar