HPF introduces some new intrinsic functions in addition to those defined in F90. The two most regularly used in parallel programming are the system inquiry functions PROCESSORS_SHAPE and NUMBER_OF_PROCESSORS . These functions gives the information about the number of physical processors on which the running program implements and processor configuration. General syntax of is
where dim is an optional argument. It returns the number of processors in the underlying array or, if the optional argument is present, the size of this array along a shows dimension.
General syntax of PROCESSORS_SHAPE is
It returns an one-dimensional array, whose ith element provides the size of the underlying processor array in its ith dimension.
Consider the call of the two intrinsic functions discussed above for a 32-Processor (4×8) Multicomputer:
The function call NUMBER_OF_PROCESORS () will return 32. The function call NUMBER_OF_PROCESORS (1) will return 4. The function call NUMBER_OF_PROCESORS (2) will return 8.
The function call PROCESSORS_SHAPE () will return an array with two elements 4 and 8.
We can use these intrinsic functions in tandem with array declarations and HPF directives, to give flexibility to the programmer to declare abstract processor arrays that match available physical resources. For example, the following statement! HPF$ PROCESSORS P(NUMBER_OF_PROCESSORS()) declares an abstract processor array P with size equivalent to the number of physical processors.