A TEMPLATE declaration has a combined form:
!HPF$ TEMPLATE, DIMENSION(100,100), & !HPF$ DISTRIBUTE(BLOCK,CYCLIC) ONTO P :: T !HPF$ ALIGN A(:,:) WITH T(:,:)
this is equivalent to
!HPF$ TEMPLATE, DIMENSION(100,100) :: T !HPF$ ALIGN A(:,:) WITH T(:,:) !HPF$ DISTRIBUTE T(BLOCK,CYCLIC) ONTO P
The combined declaration format is more concise and intuitive. The distribution method is an attribute of the TEMPLATE and not of the arrays that are aligned to the template.