HPF_CRAFT is built upon the fundamental execution model of HPF_LOCAL, augmented with data mapping and work distribution features from HPF. It is also augmented with explicit low-level control features, many taken from Cray Research's CRAFT language.
In HPF_CRAFT there is a single task on each processor and all tasks begin executing in parallel, with data defaulting to a private distribution, the same default distribution used in HPF_LOCAL. Each processor gets a copy of the data storage unless specified otherwise by the user. Consequently I/O works identically to I/O in HPF_LOCAL and message passing libraries are easily integrated.
Simply stated, the execution model is that of HPF_LOCAL.
To provide correct behavior when explicitly mapped data is involved, this model defines implicit barrier points at which the execution model requires that all processors must stop and wait for the execution of all other processors before continuing. These barriers add additional semantics to the HPF_LOCAL behavior. An implementation may remove any of these barriers that are deemed unnecessary, but every processor must participate in the barriers at each one of these points.
The points where there are implicit barriers are conceptually after
in which the processors in the HPF_CRAFT program are executing
cooperatively, as if in an HPF program (e.g., after
an INDEPENDENT loop). An HPF_CRAFT program treats
operations on explicitly mapped objects as if they were operations in
an HPF program and it treates operations on private data as if they
were executed within the HPF_LOCAL framework.
It is occasionally useful for an advanced programmer to indicate
to the compilation system where barriers are not needed; HPF_CRAFT
has syntax to allow this capability.