next up previous
Next: Causula NEW Up: Facilidades para el Paralelismo Previous: Interpretación del FORALL

Directiva INDEPENDENT

Si la asignación de cada uno de los elementos de una variable multidimensional es independiente no tiene sentido sincronizar los pasos del FORALL o secuencializar los del DO. Como el compilador no está en capacidad de determinar cuales lazos son independientes y cuales no lo son, el programador dispone de la directiva INDEPENDET, por ejemplo para los códigos:

  !HPF$ INDEPENDET                !HPF$ INDEPENDENT
  a = (/ 4, 2, 5 /)               a = (/ 4, 2, 5/)
  DO i=1,4                        FORALL(i=1:3) b(i) = 1.0/a(i)
    b(i) = 1.0/a(i)
  END DO

El gráfico de presedencia, esencialmente el mismo para ambos códigos, se muestra en la siguiente figura:

figure75

La directiva INDEPENDET no debe ser usada cuando un elemento es escrito en una iteración y leido o escrito en otra. Tampoco debe usarse cuando se esten acumulando datos parciales en cada iteración, por ejemplo para sumar todos los elementos del arreglo. Para este último caso existen funciones intrínsecas optimizadas del HPF que realizan este tipo de operaciones como SUM o PRODUCT. Otra restricción en el uso del INDEPENDET es que el lazo no puede ser interrumpido por un EXIT, PAUSE, STOP o GOTO.



Kay A. Tucci K.
Tue Apr 13 11:25:14 GMT-0400 1999