Está en la página 1de 8

LECTURA 1 : CREACION DE TAREAS Y

TERMINACION (ASYNC,FINISH)

Que es programación paralela??


• Especificación de operaciones que puedan ser ejecutadas
en paralelo.

• Un programa paralelo esta descompuesto en instrucciones


secuenciales(tareas)

• Creación, terminación, interacción de tareas; ejm: java


pero la interacción aun no porque se ejecutaron
independiente.

Ejemplo DE PROGRAMA SECUENCIAL:CALCULO DE LA SUMA DE


ELEMENTOS DE UN ARREGLO
*no importa si sumas del primero al último
o alrevez
grafo en computación
*el grafo muestra q todas las operaciones
se deben ejecutar secuencial

estrategia paraleliza2 core: lo q hicimos


antes tomamos la primera mitad luego la otra
-descomponer en 2 tarea
- combinar para la repuesta
-patrón paralelo de divide y conquista
DECLARACION ASYNC Y FINISH PARA LA CREACION Y TERMINACION DE
TAREAS(SEUDOCODIGO)
2 construcciones para manejar este tipo problema async y finish luego usaremos habanero

ASYNC (s): crear tarea q se lanzaran en paralelo (crea una nueva tarea secundaria)
FINISH (S): esperar la terminación de dichas tareas(ejecuta s pero espera q todos los asyncs en el
alcanze de S hayan terminado)

async s crea una hija q ejecuta s;finish S executa s pero espera a q todos los asyncs en el bloq
terminen.

ejm:
hilo maestro T0
finish la S es el bloqur
dentro esta el async (STMT1 ) T1
tarea hija y entre seas llaves s se
crea una tarea q se ejecutara en
paralelo con stmt2 (bloq de
instrucciones)

en finish hay 2 hilos

el To inicia al encontrar async se instancia


otro hilo de ejec smt//smt2

end finish espera por la terminación de los


2 hilos
con este bloq se puede construir el algoritmo de la vez pasada,se puede pero las variables deberían
estar antes del async para q sean globales para smt1 smt2 y stm3 seria la suma e impresión

LA SUMA DE UN ARREGLO PARALELO EN 2 VIAS USANDO ASYN Y FINISH


TERMINA ASI:

HOJA DE TRABAJO 1: ENTREGAR AL FINAL CLASE


2) Multiplicar la matriz de paralelismo

Considere la versión secuencial de un algoritmo de matriz-multiplicación que se muestra a


continuación que calcula el producto de dos matrices NxN A y B en una matriz C de NxN,
suponiendo que todas las entradas en C se inicializaron a ceros. (Las matrices se representan
como matrices 2D en Java).

Inserte anotaciones async y finish el pseudocódigo para maximizar el paralelismo, para q


asegure que la versión paralela siempre calcule mismo resultado que la versión secuencial.
Presta atención al alcance del async y finish

Donde pondrías el async??

Afuera del primer for esta bien,xq el 3 er for calcula un elemento de cada matriz, no puede ir
dentro x q hay una dependencia cij con cij tanto la entre y salida entra en conflicto con la
entre y salida de la siguiente ,afuera la tarea secuencial seria

for (int k = 0 ; k < N ; k++) {


C[i][j] = C[i][j] + A[i][k] * B[k][j];
} // for-k

Que se ejecutaría n veces evidentemente esa son n instrucciones secuenciales; no hay


paralelismo pero jhay N*N tareas de ese tipo(for 3ro ) ;la cantidad de tarea q se
ejecutaran en paralelo será N*N y cada tarea secuencial tendría longitud N

LECTURA 2: GRAFO DE COMPUTACION Y


PARALELISMO IDEAL
UNA POSIBLE SOLUCION PARA EL PROBLEMA1 hoja de trabajo
1 (sin reordenar declaraciones)
1. finish {
2. async { Watch COMP 322 video for topic 1.2 by 1pm on Wednesday
3. Watch COMP 322 video for topic 1.3 by 1pm on Wednesday
4. }
5. async Make your bed
6. async { Clean out your fridge
7. Buy food supplies and store them in fridge }
8. finish { async Run load 1 in washer
9. async Run load 2 in washer }
10. async Run load 1 in dryer
11. async Run load 2 in dryer
12. async Call your family
13. }
14. Post on Facebook that you’re done with all your tasks!

OTRA POSIBLE SOLUCION PARA EL PROBLEMA1 hoja de


trabajo 1(con reordenamiento)
1. finish {
2. async Call your family
3. async Make your bed
4. async { Clean out your fridge
5. Buy food supplies and store them in fridge }
6. async { Run load 1 in washer
7. Run load 1 in dryer }
8. async { Run load 2 in washer
9. Run load 2 in dryer }
10. Watch COMP 322 video for topic 1.2 by 1pm on Wednesday
11. Watch COMP 322 video for topic 1.3 by 1pm on Wednesday
12. }
13. Post on Facebook that you’re done with all your tasks!

Es correcta esta solución PROBLE 2 DE LA HOJA TRABAJO 1?


Esta no es un solucion hay error de condición de carrera
El orden de lecturas / escrituras en la ubicación C [0] [0] provoca un error
¿resultado? Suponga que N es 2

UNA POSIBLE SOLUCION PROBLEMA 2 EN HOJA DE TRAB 1


Este programa genera N^2 tareas paralelas asincronas, una para calcular cada elemento C [i] [j]

de la matriz de salida. El paralelismo adicional se puede explotar dentro del bucle k interno,

pero eso requeriría más cambios que insertar async y finishr.


Otra posible SOLUCION
Este programa genera tareas asíncronas paralelas N + N^2, pero genera la misma cantidad de

paralelismo entre instancias de la declaración S6 como antes.

¿Qué declaraciones pueden ejecutarse potencialmente? En paralelo el


uno con el otro? Grafo de dependencia
A//B1//B2; B3 PUEDE // CON A PERO
NECESITA Q B1Y B2 TERMINE

El 2do finish tiene 3 hilos 2 asygnados a


b12 y uno q es el maestro

Idea clave: si dos sentencias, X e Y,

no tienen un camino de vertices


dirigidos desde

uno al otro, entonces pueden correr en

paralelos entre sí.(recuerda q es g


dirigido no se puede retroceder )

graf computacion= grafo de dependencia la misma cosa


*captura la ejecución dinámica de un programa paralelo para una entrada especifica
* son “pasos” en la ejecucion de un programa ; un paso es una tarea secuencial o subtarea
secuencial dentro de cualquier async,begin -finish o end finish operations

*los edeges o vertices del grafo representan las restriciones de orden,


continue defiene la secuencia de pasos dentro de una tarea;(NEGRO)
spawm conecta las tareas q se van a crear,
join conecta el final de cada tarea hija para continuar el flujo de ejecucion
*Los grafos deben ser aciclicos (no pueden depender de si mismo) ejemplos de grafos acíclicos
dirigidos (DAG’S)

Medidas de complejidad para grafos:


NOTACION ASINTOTICA es importante.
*TIME(N):tiempo de ejecución del nodo N(ósea a cada nodo se le asigna un nodo)
*WORK(g):EL TRABAJO (suma de todos los nodo N en el grafo)del grafo es la suma de la
ejecución secuencial de una tarea suponiendo q a,b1,b2,b3 duran 1 la duración del algoritmo si fura
secuencial seria 4.

CPL(G):LONGIITUD CAMINO CRITICO DEL es la longitud del camino mas largo en el grafo
cuando agregamos los tiempos de ejecución de todos los nodos en el caimo
ejm:
suponiendo que f1.. son 0
*el camino f1 a f1 end =1
*camino f1 f2 f2 b3 f1=1 no posible por que debe ir por b1 y b2 :
f1 f2 b1 f2 end b3 f1en=2
f1f2 b2 f2 b3 f1en=2
el camino mas chico el primero f; a f1
el mayor es q va b1 y pasa b3 y b2 pasa b3 .=2

el tiempo de ejecución para el grafo es el mayor tiempo de ejecucion del camino critico
entonces el camino critico es b1 b3 o el otro; por q a no es el camino critco pues por q de todas
maneras debes esperar a q acabe b3.El menor t de ejecuion es el maximo camino critico

Se define el paralelismo ideal como la tasa:


Work(G)/cpl(G)

work=tiempo total del algo(ejecucion


secuencial)
cpl=su ejecucion en paralelo.

*el para le ideal depende del grafo y es la


aceleracion q puedes obtener cuando un
nmro ilimitado de procesadores es el q
tienes.

WORK :26 si sumamos todos los nodos


cpl:es el tiempo mayor de los caminos
entonces ele tiempo mínimo q se va demorar son 11unida
si lo ejecutaramos y tuvieramos ilimitad procesadores ;ganamos 2.36 tasa aceleración

QUE GRAFO TIENE MAS PARALELISMO IDEAL??


O sea secuencialmente ambos
se demoran 10;pese a q el
primeo usa 4 paralelo el mejor
es el q tenga +aceleracion EL
ES MEJOR el segundo
CONDICION DE CARRERA
ocurre si :
1)s1 no depende de s2 y viceversa (quiere decir ambos se pueden ejecutar en paralelo )

2)ambos leen o escriben en una posición memoria l y al menos uno de los accesos es de escritura

También podría gustarte