Skip to content

Task Type

bprail edited this page Oct 10, 2014 · 1 revision

This page will explain further details about each of the four types of tasks.

  • Create / Join - These tasks indicate any number of contexts either beginning or ending. The start and end times are set to the max of all predecessor end times and the min of all successor start times.
  • Barrier - These task represent barriers, whereby a set of contexts must wait for all members to reach the barrier task. In effect, this creates an all to all dependency relation. The start and end times are set to the max of all predecessor end times and the min of all successor start times. Individual contexts may be examined to find the waiting time. Barrier's contain a single memory action that is the address of the barrier.
  • Sync - These tasks represent atomics, OMP singles, locks, condition variables, etc. The tasks have an additional type, sync_type to help distinguish between the different underlying implementations. The task will also have a memory action that is the address, if available or else NULL, that corresponds to the lock, etc.
  • Basic Block (or Work) - These tasks contain actual work executed by the program. Work tasks may be empty (no actions) to separate two non-work tasks. In general, work tasks contain a sequence of actions that can be iterated over. The raw actions will be basic block and then a sequence of memory actions, or one can iterate on basic blocks and request its memory actions, or one can just iterate on the memory actions.