Task parallelism is expressed in HPF by mapping data objects onto subsets of processors and adding assertions that allow concurrent execution of different code blocks on different processor subsets. A data object is mapped to a processor subset by distribution onto a subsection of a processors arrangement. Execution on a subset of processors is specified by using an ON directive. This section introduces a TASK_REGION directive that allows the user to specify that disjoint processor subsets can execute blocks of code concurrently.
A TASK_REGION directive is used to assert that a block of code satisfies the following set of constraints. All lexically outermost ON blocks inside a task region must have a RESIDENT attribute implying that all data accessed inside them is mapped to the corresponding active processor subset. Further, the code inside two such ON blocks must not have interfering I/O. Under these constraints, two such ON blocks can safely execute concurrently if they execute on disjoint processor subsets.