Clearly, must be able to map array-valued FUNCTION results,
MODULE Block_Dist_1D_Template_Onto_P !HPF$ PROCESSORS, DIMENSION(2) :: P !HPF$ TEMPLATE, DIMENSION(4) :: T !HPF$ DISTRIBUTE (BLOCK) ONTO P :: T END MODULE Block_Dist_1D_Template_Onto_p FUNCTION ArF(A,B) USE Block_Dist_1D_Template_Onto_P IMPLICIT NONE REAL, INTENT(IN) :: A(:), B(:) REAL, DIMENSION(SIZE(A)) :: ArF !HPF$ ALIGN A(:) WITH *T(:) !HPF$ ALIGN B(:) WITH *T(:) !HPF$ ALIGN ArF(:) WITH T(:) ... END FUNCTION ArF
An explicit interface should always be given containing all mapping information relating to dummy arguments and the function result.
For more information, click here