インテルの以前のタスク用に、囲まれた task プラグマに指定された作業単位をキューイングする while ループの環境を指定します。
#pragma intel_omp_taskq[clause[[,]clause]...] |
structured-block |
clause |
次のいずれかです。
|
intel_omp_taskq プラグマは、囲まれた作業 (タスク) 単位が実行される環境を指定します。最初に、intel_omp_taskq プラグマを実行するすべてのスレッド間の中から、1 つのスレッドが選択されます。
概念的には、intel_omp_taskq プラグマは、選択したスレッドを実行する空のキューを生成し、次に、taskq ブロック内のコードがシングルスレッドとして実行されます。他のすべてのスレッドは、この概念キューに作業がキューイングされるのを待ちます。
intel_omp_task プラグマは、潜在的に異なるスレッドで実行される作業単位を指定します。taskq ブロック内に task プラグマが存在すると、task ブロックの内側のコードは、taskq に関連付けられている概念キューにキューイングされます。キューイングされたすべての作業が終了し、taskq ブロックの最後に達すると、概念キューはなくなります。
このプラグマは、Qopenmp (Windows*) または qopenmp (Linux* および macOS*) オプションによって行われる並列化に影響を与えます。OpenMP* を使用するオプションは、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーの両方で利用可能ですが、両者では結果が異なります。両者の結果が異なる可能性のある OpenMP* 構造および機能の主なリストは次のとおりです: ロック (内部的なものおよびユーザーが利用可能なもの)、SINGLE 構造、バリア (暗黙的および明示的)、並列ループ・スケジュール、リダクション、メモリーの割り当て、スレッド・アフィニティー、バインド。