Generalmente los arreglos de un programa estan relacionados entre sí, por lo que al momento de distribuirlos a los distintos procesadores puede ser importante que las partes de los arreglos que estén relacionadas queden en el mismo procesador. Para indicarle al compilador la existencia de estas relaciones se utiliza la directiva ALIGN.
Para ilustrar considere 2 matrices que contiene información sobre 2 variables de estados, temperatura y presión, de los elementos que las componen. Para calcular la evolución de cada uno de los elementos es conveniente que los ambas matrices se encuentren distribuidas de la misma forma en los procesadores para que la información sobre la temperatura y la presión de uno de cada uno de los elementos estén en el mismo procesador.
REAL, DIMENSION(100,100) :: temperatura, presion ! Matrices de estados !HPF$ PROCESSORS procs(2,2) ! 2x2 procesadores !HPF$ DISTRIBUTE (BLOCK,BLOCK) :: temperatura ! Distr la temperatura !HPF$ ALIGN WITH temperatura :: presion ! Distr la presion
La última línea le indica al compilador que la matriz presión debe ser distribuida según como esté distribuida la matriz temperatura.
La sintaxis de la directiva ALIGN es muy amplia para permitir expresar distintos tipos de relaciones, por ejemplo las siguientes directivas son equivalentes:
!HPF$ ALIGN presion(:,:) WITH temperatura (:,:) !HPF$ ALIGN (i,j) WITH temperatura (i,j) :: presion !HPF$ ALIGN (:,:) WITH temperatura (:,:) :: presion !HPF$ ALIGN WITH temperatura :: presion