La directiva TEMPLATE permite crear un gran arreglo de índices que relacionan otros arreglos más pequeños sin que el primero ocupe espacio real en memoria, por ejemplo:
!HPF$ PROCESSORS procs(2,2) ! Arreglo de procesadores
!HPF$ TEMPLATE indices(10,10) ! Arreglo de indices
REAL, DIMENSION(8,8) :: SI, & ! Esquina Superior Izquierda
SD, & ! Esquina Superior Derecha
II, & ! Esquina Inferior Izquierda
ID ! Esquina Inferior Derecha
!HPF$ DISTRIBUTE indices(BLOCK,BLOCK) ONTO procs
!HPF$ ALIGN (i,j) WITH indices (i,j) :: SI
!HPF$ ALIGN (i,j) WITH indices (i,j+2) :: SD
!HPF$ ALIGN (i,j) WITH indices (i+2,j) :: II
!HPF$ ALIGN (i,j) WITH indices (i+2,j+2) :: ID
...
La distribucion de los datos se puede observar el la siguiente figura:

Además se puede utilizar para expresar relaciones complejas entre arreglos o para crear el arreglo base para las directivas DISTRIBUTE.