cc301_teo3

download cc301_teo3

of 49

description

cc

Transcript of cc301_teo3

  • Teo 3: Principios de diseo de Algoritmos paralelosAlgoritmos paralelosGlen Rodrguez

  • IntroduccinAlgoritmos secuenciales: secuencia de pasos. El orden de la ejecucin se puede conocer de antemano (a menos que haya aleatoriedad en el algoritmo)Algoritmos paralelos: hay el detalle extra de la concurrencia (que pasos se pueden hacer en paralelo) y el no determinismo del orden de ejecucin.

  • Un algoritmo paralelo no trivial necesita:Definir que porciones del algoritmo se pueden hacer en paraleloMapear esas porciones en los CPUs correspondientesDistribuir la data (input, output y variables intermedias) entre CPUs y/o memorias.Administrar el acceso a la data compartida entre varios CPUs.Sincronizar los procesos cuando convenga.

  • Qu se puede y qu no se puede paralelizar?La suma de dos matrices es fcilmente paralelizable

    Pero se puede paralelizar esto?A=B+CD=A+E+A=B+CD=A+EA=B+CD=A+E

  • Dependencia de data y de flujoRelacin de bloqueo: write after readF=G+DG=H+ISi i>j, el output de la oper.j es el input de la oper.iSe puede solucionar usando variables auxiliares:AUX=GF=AUX+DG=H+IDependencia de flujo: if A>B then C=D+E. Primero hay que hacer la comparacin antes de tocar C. Si antes alguna operacin modificaba A B, debe ser antes tocar C.SI NO hay ninguna de estas dependencias, se puede paralelizar a lo bestia y funcionar bien. Por que entonces no hay carreras por la data localidad

  • Descomposicin de y=Ab

  • Ejemplo: descomponer un queryMODEL="Civic" AND YEAR="2001" AND (COLOR="Green" OR COLOR="White")

  • Grafo de Dependencia 1

  • Grafo de dependencia 2

  • GranularidadEs determinada por el nmero de tareas (=CPUs trabajando) y el tamao del problema asignado a cada tarea.Fine-grained (grano fino): muchas tareas, pequeos problemasCoarse-grained (grano grueso): pocas tareas ms grandes.

  • Grado de concurrenciaEs el mximo nmero de tareas que corren en paralelo en un algoritmo.Puede ser menor que nmero de CPUs asignadas, por dependencia de las tareas.Grado promedio de concurrencia: nmero promedio de tareas en paralelo en un momento dado.Generalmente, grano fino ms concurrencia

  • Conc.promedio= (4*10+2*6+1*11)/27=2.33 Conc.Promedio=(4*10+6+11+7)/34=1.88

  • Ruta crtica y grafo de interaccin de tareasRuta crtica: es la ms larga ruta entre nodos iniciales y finales del grafo. En el ejemplo anterior (a) 10+9+8=27 (b) 10+6+11+7=34En el grafo, los nodos representan tareas y las aristas conectan tareas que interactan unas con otras.Pesos de los nodos: tiempo de cmputo. Pesos de aristas: costo de interaccin (ej.: comunicacin).

  • Ejemplo: multiplicacin vector x matriz dispersa (sparse)Computar:

    Solo para los A[i,j] 0. Suponer que hay n CPUs y se reparten lasfilas de A y los valores de b (ej.: CPU0 es duea de b[0])

  • MapeoEs el mecanismo por el que las tareas se asignan a los procesosUn proceso: proceso como se entiende en sistemas operativos, o parte de un proceso (hilo)Generalmente 1 proceso 1 CPU/ core

  • Ejemplo

  • Tcnicas de descomposicinMs conocidas:Descomposicin RecursivaDescomposicin de datosDescomposicin ExploratoriaDescomposicin EspeculativaLas 2 primeras son ms generales.

  • D. RecursivaDivide y vencers, en forma recursivaEj. quicksort

  • Ej: hallar mnimo nmero de un array A de n elementosSerial o secuencial:1. procedure SERIAL_MIN (A, n) 2. begin 3. min = A[0]; 4. for i := 1 to n - 1 do 5. if (A[i] < min) min := A[i]; 6. endfor; 7. return min; 8. end SERIAL_MIN

  • Reformado : divide y vencerasEj: A={4,9,1,7,8,11,2,12}

  • Cambiado a recursivo1. procedure RECURSIVE_MIN (A, n) 2. begin 3. if (n = 1) then 4. min := A[0]; 5. else 6. lmin := RECURSIVE_MIN (A, n/2); 7. rmin := RECURSIVE_MIN (&(A[n/2]), n - n/2); 8. if (lmin < rmin) then 9. min := lmin; 10. else 11. min := rmin; 12. endelse; 13. endelse; 14. return min; 15. end RECURSIVE_MIN

    A un CPUA otro CPU

  • D. De datosPrimero se particiona la data Luego se usa esa particin de la data para inducir la particin de las computaciones en tareas.Lo ideal sera que ambas particiones sean parejas en tamao (cada proceso / CPU / core con data parecidas en tamao y tareas parecidas en tiempo de cmputo)

  • Ej: multiplicacin de matricesParta cada factor en 4 submatrices. El resultado tambin. Cada submatriz del resultado se puede calcular por separado.Y que pasa si tengo 8 CPUs?

  • Ej: calcular frecuencias de itemsets en una tabla

  • Particionando data intermedia

  • D. exploratoriaSe usan en problemas de bsqueda (ej.: en rboles)Se parte el espacio de bsquedas en subespacios ms pequeos.Ej: puzzle de 15 cuadrados

  • D. especulativaCuando en un algoritmo hay ramas que dependen de un IF (si es verdadero se hace una operacin, si es falso se hace otra), se puede paralelizar ambas tareas ANTES de poder evaluar el IF, ejecutando ambas operaciones y esperar al IF para eliminar una y mantener la otra.

  • Ejemplox=valoresPropios(matriz A)IF max(x)
  • TareasCaractersticas de las tareas:Generacin: esttica o dinmicaTamao: uniforme o no uniformeConocimiento del tamao: se puede conocer de antemano o no?Tamao de la data asociada a las tareas

  • Interacciones entre tareasCaractersticas:Estticas vs DinmicasRegular vs IrregularRead-only vs. Read-Write1-way vs 2-way. Todas las read only son 1-way, pero las read-write pueden ser de cualquier tipo.

  • Ej. Regular: gradiente de una imagen para ver bordes

  • Mapeo para balance de cargaDos objetivosReducir tiempo de interaccin entre procesosReducir el tiempo ocioso de los procesosMutuamente excluyentesMapeo esttico vs dinmico

  • Esquemas de mapeo estticoMapeos basados en la particin de data para arrays:Bloques 1-D, 2-D, 3-DCiclicosAleatorios en bloqueBasados en grafos:

  • Bloques

  • Cclicos

  • Grafo de un lago, mapeo en 8 procesos

  • Mapeos basados en dependencia de tareas

  • Mapeo dinmicoCentralizado: un master reparte las tareas a los procesos segn su criterio. Tareas de una en una, o en chunks (pedazos)Distribuido: un proceso puede enviar o recibir las tareas de otro. Si P3 tiene mucha carga, delega algunas tareas a P7 que esta libre.

  • LocalidadGrado en el que la data que reside en memoria de un CPU basta para el trabajo de esa CPU. Mientras ms tenga que usar data ajena, menos localidad hay.En otros ramos de Computer Science tiene otros significados

  • Paralelismo y Localidad en SimulacinProblemas fsicos tienen paralelismo y localidad:Muchos objetos operan independientemente unos de otros.Los objetos generalmente dependen ms de otros objetos cercanos que de los lejanos.Dependencia en objetos lejanos se puede simplificar.Algunos modelos cientficos pueden crear paralelismo:Cuando un problema continuo se discretiza, la dependencia en el tiempo se limita a time steps cercanos.Efectos lejanos se pueden ignorar o aproximar.Puede haber paralelismo en varios nivelesEj.: varios circuitos se pueden simular a diferentes niveles, desde el de todo un aparato, hasta los componentes bsicos individuales.

  • Algunas clases bsicas de simulacinSistemas de eventos discretos:Ejs: Game of Life, circuitos lgicos. Sistemas de partculas:Ejs: bolas de billar, dispositivos semiconductores, galaxias.Variables agregadas que dependen de param. continuos:EDOs, ej: simulacin de circuitos (Spice), estructuras mecnicas, cintica qumica.Variables continuas que dependen de param. continuos:EDPs, ej: calor, elasticidad, electrosttica.

    Muchas simulaciones combinan varias tcnicas.

  • ResumenEventos discretosTiempo y espacio discretosPartculasCaso especial de sistema agregadoEc. Diferenciales ordinarias (EDOs)Sistemas agregadosEntidades o posiciones discretas, tiempo continuoEc. Diferenciales parciales (EDPs)Tiempo y espacio es continuo

    Identificar problemas comunes y sus solucionesdiscretocontinuo

  • Maximizando localidad de dataMinimizar el volumen de intercambio de data. Ej.: gradiente, partir en 4 procesos como cuatro cuadrados pequeos vs 4 tiras largasMinimizar la frecuencia de interacciones. Ej.: multiplicacion vector matriz dispersa, con nm.CPUs
  • Minimizar congestin y hot spotsSi 2 o ms procesos quieren usar la misma data a la vez, donde por lo menos 1 de ellos quiere escribir: contencin. Mientras ese lea+escriba, los otros no deberan correr.Cambiar el patrn de acceso (orden de las operaciones)

  • Que coincidan computaciones e interaccionesEj: mientras P0, P1 computan, P2 lee y/o escribe la variable x. Luego le tocara a P0.Otro ej.: usar comunicacin asncrona

  • Modelos de algoritmos paralelosModelo data-parallel: ej.sumatoriaModelo grfico de tareas: ej. Multp. Vector matriz dispersaModelo de pool de tareas: mapeo dinmico de un loop es muchos sub-loopsModelo master-slave. Ej: montecarlo maestro esclavoModelo pipeline o productor-consumidorHbridos

    Not all problems solved on parallel machines involve simulation, but many do