タスク宣言子

インテル® コンパイラーによって実装されるタスクモデルは、OpenMP* でより広範囲のアプリケーションを並列化できるようにします。タスクに使用される宣言子は次のとおりです。

TASK および END TASK

TASK 宣言子および END TASK 宣言子は、次のように明示的なタスク領域を定義します。

!$OMP TASK

  ! explicit task region

!$OMP END TASK

タスク領域のバインド・スレッド・セットは、現在の並列チームです。タスク領域は、最内の囲まれた PARALLEL 領域にバインドします。スレッドがタスク構造に到達すると、その構造内で囲まれた構造化ブロックからタスクが生成されます。到達スレッドは、ただちにタスクを実行するか、または実行を保留します。タスク構造は、外側のタスクの中に入れ子されることがありますが、内側タスクのタスク領域は、外側タスクのタスク領域の一部ではありません。

使用される節

TASK 宣言子には、オプションで指定した節をカンマ区切りのリストで指定できます。タスクのデータ環境は、タスク構造上のデータ共有属性節と適用されるデフォルトに従って作成されます。節は次のとおりです。

次の例では、1 つのスレッドで N タスクを生成し、それらのタスクを並列チーム内のスレッド群で実行する方法を示しています。

!$OMP PARALLEL SHARED(DATA)

  !$OMP SINGLE PRIVATE (I)

    DO I = 1, N

      !$OMP TASK FIRSTPRIVATE(I), SHARED(DATA)

        CALL WORK(DATA(I))

      !$OMP END TASK

    END DO

  !$OMP END SINGLE

!$OMP END PARALLEL