El HPF exige que la forma como se hace la distribución de los datos debe estar conforme con el arreglo lógico de los procesadores, por ejemplo:
!HPF$ PROCESSORS procs1(2,2) ! matriz de procesadores !HPF$ PROCESSORS procs2(4) ! vector de procesadores INTEGER DIMENSION(100,100) :: a ! Arreglo bidimensional INTEGER DIMENSION(10,10,10) :: b ! Arreglo tridimensional !HPF$ DISTRIBUTE (BLOCK,CYCLIC) ONTO proc1 :: a ! Conforme !HPF$ DISTRIBUTE (CYCLIC,*,*) ONTO proc2 :: b ! Conforme
Aquí las directivas PROCESSORS y DISTRIBUTE están conformes porque la distribución tiene el mismo rango que el arreglo lógico de los procesadores, pero las directivas siguientes no están conformes:
!HPF$ DISTRIBUTE (BLOCK) ONTO proc1 :: a ! No Conforme !HPF$ DISTRIBUTE (*,BLOCK,BLOCK) ONTO proc2 :: b ! No Conforme
La palabla ONTO le indica al compilador cual arreglo de procesadores va a utilizar para distribuir los datos.