# TASKGROUP

OpenMP* Fortran Compiler Directive: Specifies a wait for the completion of all child tasks of the current task and all of their descendant tasks.

## Syntax

!$OMP TASKGROUP [clause[[,] clause] ... ]

loosely-structured-block

!$OMP END TASKGROUP

-or-

!$OMP TASKGROUP [clause[[,] clause] ... ]

strictly-structured-block

!$OMP END TASKGROUP

clause | Is one of the following: ALLOCATE ([allocator :] list) TASK_REDUCTION (reduction-identifier : list)
loosely-structured-block | Is a structured block (section) of statements or constructs. You cannot branch into or out of the block.
strictly-structured-block | Is a Fortran BLOCK construct. You cannot branch into or out of the BLOCK construct.

A TASKGROUP construct binds to the current task region. The binding thread set of the taskgroup region is the current team.

When a thread encounters a TASKGROUP construct, it starts executing the region. There is an implicit task scheduling point at the end of the TASKGROUP region. The current task is suspended at the task scheduling point until all child tasks that it generated in the TASKGROUP region and all of their descendant tasks complete execution.

Any number of reduction clauses can be specified in the TASKGROUP directive, but a list item can appear only once in reduction clauses for that directive.

Parent topic: T to Z

## See Also

OpenMP Fortran Compiler Directives
Syntax Rules for Compiler Directives
TASK
TASKWAIT
TASKYIELD
Parallel Processing Model for information about Binding Sets