• No se han encontrado resultados

En su trabajo [Kha12] proponen al algoritmo denominado Constrained Earliest Finish Time (CEFT), algoritmo para planicación de tareas en sistemas heterogéneos usando el concepto de caminos críticos restringidos (constrained critical paths, denominado CCP en adelante). Segun los autores, el algoritmo toma en cuenta una visión más amplia del grafo en entrada. Además, con los CPP generados estaticamente se puede realizar la planicación de tareas con mayor eciencia que otras propuestas.

El camino crítico es el camino mas largo desde el nodo de inicio hasta el nodo nal de todo el grafo que representa a la aplicación. La longitud de un camino es calculado como el promedio de la suma de los costos de ejecución y costos de comunicación de todo el camino. Intuitivamente, una efectiva planicación será producida cuando la tarea que pertenece al camino crítico es planicada primero. Sin embargo, todas las tareas del camino crítico podrían no estar listas para ser planicadas. Siguiendo la idea plasmada anteriormente, una tarea en la cual todos sus predecesores han sido planicados es denominada tarea lista. La colección de tareas que comprende solo tareas listas para ser planicadas formarán un camino crítico restringido o tambien denominado CCP. Cada CCP puede ser asignado a un procesador basado en el tiempo de término de sus tareas.

Siguiendo el orden de la ejecución, una tarea es considerada lista para ser planicada cuando sus precedesores han sido planicados. Para la planicación, el grafo se recorre inicialmente y se encuentran los caminos críticos basado en los costos promedio de ejecución y los costos de comunicación. El grafo posteriormente es podado de los nodos que constituyen un camino crítico. Los recorridos posteriores del grafo podado producirán los caminos críticos restantes.

Mientras los nodos del grafo de tareas son eliminanados, se agregan pseudo-aristas al grafo, de modo que los nodos del grafo se mantengan conectados. Para un nodo que se haya convertido en un nodo libre (que no existe en ningun camino desde el nodo de inicio hasta el nodo de salida) después de la poda, se agrega una pseudo-arista al nodo de inicio si no tiene predecesores. De forma similar, se agrega una pseudo-arista al nodo de salida si el nodo no tiene sucesores. Posteriormente, los CCP se forman seleccionando nodos listos en los caminos críticas en una forma round-robin [Kha12].

3.3 ALGORITMO CEFT 15

Para entender mejor el algoritmo CEFT, los autores en el trabajo [Kha12] especican grácamente el proceder del algoritmo. Considere el grafo con los nodos A, B, C, D, E,yF, el cual es mostrado en la Figura3.1. El primer camino crítico calculado a partir de los costos de ejecución y costos de comunicación, desde el nodo start hasta el nodo exit contiene a los nodosA, B,yF. Estos nodos serán podados (eliminados) del grafo junto con las aristas de los mismos. Posteriormente pseudo-aristas son adicionadas al grafo podado de la siguiente forma: (i) desde el nodo start hasta el nodo C; (ii) desde el nodoC hasta el nodo exit; y (iii) desde el nodo E hasta el nodo exit. Esto asegura que para cada nodo siempre se tenga el nodo start y el nodo exit. Resultado de este proceso se muestra en la Figura3.2a.

Figura 3.1: Ejemplo de un grafo: nodos de A - F etiquetados con el promedio del costo de ejecución y aristas etiquetadas con los costos de comunicación. Esquema adaptado de [Kha12].

(a) Grafo despues de la poda del primer ca- mino crítico A−B−F

(b) Grafo despues de la poda del segundo camino críticoD−E

Figura 3.2: Esquema del grafo durante la generación de CCPs. Esquema adaptado de [Kha12].

Continuando de la misma forma, los nodos D y E del segundo camino crítico serán re- movidos para producir el grafo mostrado en la Figura 3.2b. El tercer camino crítico, por lo tanto, unicamente tendrá al nodoC.

Tabla 3.1: Caminos críticos encontrados usando el promedio de costos de ejecución

CRITICAL PATHS A-B-C

D-E C

Tabla 3.2: CCPs correspondientes a los caminos críticos

CONSTRAINED CRITICAL PATHS A-B

D-E C F

Las Tablas3.1y3.2muestran el camino crítico y el CCP encontrado a partir del ejemplo. El primer CCP contiene los nodosAyB porque dichos nodos pueden comenzar la ejecución. Desde que no exista nodos en el camino crítico, el segundo camino crítico es usado para producir el segundo CCP, el cual contiene a los nodosDyE. De forma similar, el tercer CCP contiene al nodoCtomado a partir del tercer camino crítico. Continuando en una forma round-robin, se obtiene el nodoEpara producir el cuarto CCP.

Para todas las tareas en un CCP, un procesador es asignado. Considerar a todas las tareas de un CCP no solo reduce el costo de comunicación, sino que tambien ofrece una visión amplia del grafo de tareas. Por esta razon, se produce mejores resultados en la planicación en comparación con otros enfoques de planicación para sistemas heterogeneos.

3.3.1. Constrained Earliest Finish Time [Kha12]

Inicialmente, se encontrarán los caminos críticos usando el Algoritmo3.3. Usando los nodos del grafo en orden topológico, VT, la longitud del camino crítico es calculado en las lineas 5−22. De forma descendente, la suma del costo de ejecución promedio (AEC) es calculada para cada nodo. Los nodos a lo largo del camino en el grafo, que producen el valor más grande de la suma de los valores de AEC y el costo de comunicación forman el camino crítico CPcount. También se mantiene una lista de predecesores para realizar un seguimiento de los nodos en el camino crítico. Si dos caminos producen la misma longitud, el último camino (en el cruce topológico de los nodos) se selecciona como camino crítico. El grafo es podado de los nodos pertenecientes al camino crítico (lineas30−32). Las pseudo-aristas se agregan posteriormente al grafo de modo que siempre haya un

camino desde el nodo start hasta el nodo exit al atravesar cualquiera de los nodos del grafo (lineas

33−39). El procedimiento de búsqueda de caminos críticos se itera hasta que todos los nodos de

tareas hayan sido procesados.

El Algoritmo de planicación CEFT 3.4funciona en dos fases. En la primera fase, se en- cuentran los CCP que son representadas por colas de tareas que están listas para ser planicadas. Al principio, los caminos críticos se generan utilizando el métodogen_CP()dado en el Algoritmo3.3.

3.3 ALGORITMO CEFT 17

Algoritmo 3.3 Algoritmo gen_CP() para generar caminos críticos [Kha12].

1: //Sea Gtmp contiene vérticesVT en orden topológico y aristas E

2: count= 0; Gtmp= (VT, E)

3: while (Existan tareas en Gtmp) do

4: // Encontrar la longitud del camino crítico

5: InicializarL(vi) = 0, para cadavi ∈VT

6: for cadavi ∈VT do

7: for cada arista vi→wj do

8: AEC(wj) =

P|P|

k=1Tpk(wj)

|P|

9: // Sea Π(vi, wj) el peso de la aristavi →wj

10: if L(wj)≤L(vi) +AEC(wj) + Π(vi, wj)then

11: L(wj) =L(vi) +AEC(wj) + Π(vi, wj) 12: P redC(wj) =vi 13: end if 14: end for 15: end for 16: loc= 1,maxL= 0 17: fork= 1 hasta|VT|do 18: if L(vk)≥maxLthen 19: maxL=L(vk) 20: loc = k 21: end if 22: end for

23: Sea node=Vloc // último nodo del camino crítico

24: // Adiciona nodos al camino crítico actualCPcount

25: CPcount ={Vloc}

26: whilenode6=startdo

27: node=P redC(node)

28: CPcount=CPcount∪node

29: end while

30: // Podar el grafo y adicionar pseudo-aristas

31: G0 = (CPcount, ECP) // son las aristas de los nodos en elCPcount

32: Gtmp=Gtmp−G0

33: for cadauk ∈CPcount do

34: if |P red(uk)|== 0 then

35: Gtmp =Gtmp∪(null, start→uk))

36: else if |Succ(uk)|== 0 then

37: Gtmp =Gtmp∪(null, uk→exit)) 38: end if 39: end for 40: count+ = 1 41: end while 42: returnCP

Un nodo listo en un camino crítico es el que tiene todos sus predecesores procesados. Si no hay más nodos listos en un camino crítico, el CCP toma nodos del siguiente camino crítico siguiendo un recorrido round-robin de los caminos críticos.

En la segunda fase, los CCPs son asignados a los procesadores. Todas las colas basadas en CCP que contienen tareas listas para la planicación, se recorren en orden (linea 13). La EST de cada nodo w, mostrado en la ecuación 2.5, con respecto a cada procesador Pr es calculado. Correspondiente a un predecesor del nodow, el valor deEST es el máximo posible del tiempo de inicio y el tiempo de disponibilidad del recurso pr.

Algoritmo 3.4 Algoritmo para planicación CEFT [Kha12].

1: //Fase 1: Encontrar los constrained critical paths (CCPs)

2: //encontrar el conjunto de caminos críticos C

3: C=gen_CP()

4: j = 1

5: fori= 1 hasta|C|do

6: while existan nodos listos enCi do

7: insertar el nodo listo Vk en la Cola (Qj) // constrained critical path Queue

8: end while

9: j←j+ 1

10: i←i%|C| 11: end for

12: //Fase 2: Asignar y planicar tareas

13: forj={1,2, . . . ,|Q|}do

14: for cada procesadorPr ∈P do

15: for cada nodow∈Qj do

16: encontrar elEST de la tareaw, explicado en 2.5

17: encontrar elEF T de la tarea w, explicado en2.6

18: end for

19: encontrar el tiempo de nalización del camino crítico restringidosQj Epr(Qj) =max(EF T(w)∀w∈Qj)

20: end for

21: Asignar al procesador el camino crítico restrintigoQj que minimice el valorEpr(Qj)

22: Sea Px el procesador asignado, actualizar el tiempo de nalización actual

23: end for

El cálculo del EF T es motrado en la ecuación 2.6. Como un CCP puede contener vários nodos el tiempo de nalización del CCP es el mayor valor de los EF T s de las tareas del CCP utilizando el mismo procesador Pr. El procesador que minimice el tiempo de nalización del CCP se le asignarán las tareas (linea 21). Posteriormente, el actual tiempo de nalización de las tareas

se actualiza y el procesador seleccionado continua para todos los CCPs encontrados.

La complejidad del algoritmo CEFT para un grafo de tareas con n nodos y m aristas es O(n×|P|(n+m+degin)), donde|P|es el número de procesadores considerados para la planicación

Documento similar