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.