インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

__cilkrts_get_pedigree

インテル® Cilk™ Plus は古い機能 (非推奨) です。代わりに、OpenMP* またはインテル® TBB を使用してください。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」を参照してください。

__cilkrts_get_pedigree(void);

この関数は、現在のペディグリー (系図) の最下位ノードを返します。

インテル® Cilk™ Plus は、ペディグリー (そのストランドになる計算のスポーンと同期の履歴を反映する 64 ビット整数のシーケンス) における実行ストランドを識別します。2 つのストランドには常に別々のペディグリーが含まれます。ストランドの現在のペディグリーは cilk_spawncilk_sync、または cilk_for で変更され、cilk_for ループの粒度が異なります。現在のペディグリーは __clkrts_bump_worker_rank() の呼び出しの後にも変更されます。

ペディグリーは、ペディグリー・ノード (型 __cilkrts_pedigree) のリンクリストで表現されます。このリストはシングルリンクで、ペディグリー・ノードを逆順 (つまり、最下位のノードから最上位のノード) にストアします。各ペディグリー・ノードは、64 ビット整数ランクと次の (より上位の) ペディグリー・ノードへの const "親" ポインター (ノードがリストの最後の場合は null) が含まれる構造体です。この関数の戻り値は、現在のペディグリーの最下位ノード (つまり、リストの先頭) のコピーです。

プログラムのシリアル実行では、ペディグリーはストランドの移行ごとに辞書順で増加します。シリアル実行と同じストランド群を生成するプログラムの並列実行では、それぞれの実行で対応するストランドのペディグリーが一致する必要があります。

以下は、__cilkrts_get_pedigree() のガイドラインです。