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

Estructuras FORALL y DO

Los lazos en los programas pueden ser paralelizables o no, por ejemplo:

  DO i = 3, n                       DO i = 3, n
    a(i) = b(i-1) + b(i-2)            a(i) = a(i-1) + a(i-2)
  END DO                            END DO

el código de la izquierda es paralelizable porque el valor de a(i) no depende de cálculos hechos en iteraciones anteriores, en cambio en el código de la derecha no es paralelizable porque el valor de a(i) depende de valores calculados en iteraciones anteriores.

Además de la estructura DO, el HPF tiene la estructura FORALL que permite realizar las asignaciones en variables multidimensionales de forma paralela.

FORALL(i=3r:,n) a(i) = b(i-1) + b(i-2) ! Asignacion en una dimension
FORALL(i=1:n,j=1:n) m(i,j) = 1.0/(i+j) ! Asignacion en dos dimensiones
FORALL(i=1:n,b(i)>0) a(i) = log(b(i))  ! Se pueden utilizar funciones





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