インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
インテル® Cilk™ Plus は古い機能 (非推奨) です。代わりに、OpenMP* またはインテル® TBB を使用してください。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」 (英語) を参照してください。
用語集では、本ガイドで使用されている重要な用語の簡単な説明と定義をリストしています。
アトミック分割できないもの。任意の時点において、命令シーケンスの命令がまったく実行されていないか、あるいはそのすべての命令が実行されているようにほかのストランドから見える場合、ストランドによって実行されるその命令シーケンスはアトミックです。
チップ・マルチプロセッサー1 つのマルチコアチップに搭載された汎用マルチプロセッサー。
cilk_for反復を並列で個別に実行することができる for ループを示すキーワード。
cilk_spawn指定したサブルーチンを個別に、呼び出し元と並列で実行できることを示すキーワード。
cilk_synccilk_sync の後の文を実行する前に、現在の関数内でスポーンされたすべての関数が完了していなければならないことを示すキーワード。
可換演算型 (T) の演算 (op) は、型 T の 2 つのオブジェクト a と b に対して a op b = b op a の場合、可換であるといえます。整数加算やセットの和集合は可換ですが、文字列結合は可換ではありません。
コンカレント・エージェントその他同様のコンカレント・エージェントと同時にプログラム命令を実行する可能性のあるプロセッサー、プロセス、スレッド、その他のエンティティー。
コアマルチコアチップにおけるシングル・プロセッサー・ユニット。"プロセッサー" および "CPU" という用語は、業界によっては、"コア" と同義語として使用されます。
CPUCentral Processing Unit。"コア" と同義語です。マルチコアチップの 1 プロセッサーを指します。
クリティカル・セクションロックを保持している間に、ストランドによって実行されるコード領域。
クリティカル・パスの長さスパンの説明を参照してください。
データ競合共通ロックを保持していない 2 つ以上の並列ストランドが同じメモリー位置にアクセスし、そのうちの少なくとも 1 つのストランドが書き込みを行う場合に発生する競合状態。決定性競合と比較してみてください。
デッドロック2 つ以上のストランドが互いに相手がリソースを解放するのを待機していて、どのストランドも先に進めない状態。
決定性競合2 つの並列ストランドが同じメモリー位置にアクセスして、そのうちのどちらかが書き込みを行う場合に発生する競合状態。
決定性同じ入力で複数回実行した際に、どの実行でもプログラムが同じ動作をすること。通常、決定性プログラムは、デバッグが簡単です。
分散メモリー複数のプロセッサー間で分割されているコンピューターの記憶域。分散メモリー・マルチプロセッサーとは、プロセッサーがリモート・プロセッサーのメモリーにアクセスするために、リモート・プロセッサーにメッセージを送信する必要があるマシンのことです。共有メモリーと対照的です。
実行時間特定のシステムでプログラムの実行にかかる時間。
フォルス・シェアリング2 つのストランドが同じキャッシュブロックの異なるメモリー位置にアクセスする場合に発生するキャッシュブロックの競合状態。
グローバル変数すべてのローカルスコープの外側に属する変数。非ローカル変数も参照してください。
ハイパーオブジェクトインテル® Cilk™ Plus ランタイムで使用されるオブジェクト。並列ストランドのスポーンと同期に関連するデータ構造の作成、使用、破棄を管理します。ハイパーオブジェクトにはレデューサーとホルダーが含まれます。
命令プロセッサーにより実行される単一の操作。
直線的なスピードアッププロセッサー数に比例したスピードアップ。完全に直線的なスピードアップも参照してください。
ロックリソースへの同時アクセスを制限することでアトミック操作を提供するための同期メカニズム。ロックに関する重要な操作として、取得 (ロック) と解放 (アンロック) があります。多くのロックは、常に 1 つのストランドだけがロックを保持できる mutex として実装されます。
ロック競合複数のストランドが同じロックを奪い合う状態。
マルチコア2 つ以上のプロセッサー・コアを集積した半導体チップ。
マルチプロセッサー複数の汎用プロセッサーを搭載したコンピューター。
mutex同時に 1 つのストランドだけが取得できる "相互排他" ロック。同時に 1 つのストランドだけが mutex で保護されたクリティカル・セクションを実行できるようにします。Windows* は、CRITICAL_SECTION を含むいくつかの種類のロックをサポートしています。Linux* は、Pthreads の pthread_mutex_t objects をサポートしています。
非決定性同じ入力で複数回実行した際に、実行ごとにプログラムの動作が異なること。通常、非決定性プログラムは、デバッグが困難です。
非ローカル変数使用される関数、メソッド、クラスのスコープの外側に属するプログラム変数。インテル® Cilk™ Plus プログラムでは、cilk_for ループの外側にスコープがある変数を表します。
並列ループすべての反復を個別に並列で実行可能な for ループ。並列ループを指定するための cilk_for キーワード。
並列性ワークとスパンの比率。プロセッサー数が無制限な場合に、アプリケーションで可能な最大のスピードアップを示します。
ペディグリー最大ストランドを一意に識別するための 64 ビット整数のシーケンス。
完全に直線的なスピードアッププロセッサー数とスピードアップが同じ。直線的なスピードアップも参照してください。
プロセス自身のアドレス空間を持ち、オペレーティング・システムにより管理されるコンカレント・エージェント。メモリーは、明示的なオペレーティング・システムの呼び出しによってのみプロセス間で共有できます。
プロセッサープロセッサーは、プログラムの命令をシーケンシャルに実行するためのロジックを実装します。同義語として "コア" が使用されます。
競合状態非決定性の原因。それぞれのストランドの命令を実行するタイミングや順序によって、同時に実行した計算の結果が異なります。
レシーバー関数呼び出しの結果を受け取る変数。
レデューサー通常の変数の代わりに使用されるハイパーオブジェクト。データ競合を引き起こすことなく、算術和、文字列結合、リスト作成などの結合操作を並列に行えるようにします。
応答時間ユーザーが入力してから結果を取得するまでの計算の実行にかかる時間。
特定のシステムでプログラムの実行にかかる時間。
スケールダウン並列アプリケーションが 1 つまたは少数のプロセッサー数でも効率的に実行できること。
スケールアウトアプリケーションの複数のコピーを多数のプロセッサーで効率的に実行できること。
スケールアップ並列アプリケーションが多数のプロセッサー数でも効率的に実行できること。直線的なスピードアップも参照してください。
順序一貫性共有メモリーにおけるコンカレント・エージェントによる操作が、エージェントがそれぞれ実行された場合と矛盾しないような形で、全体的な秩序を保ちながら相互に実行される、並列処理におけるメモリーモデル。
シリアル実行インテル® Cilk™ Plus プログラムのシリアル化の実行。
シリアル・セマンティクスシリアル化と同じ結果になる決定性のあるインテル® Cilk™ Plus プログラム。"シリアル・セマンティクス" と呼ばれます。
シリアル化インテル® Cilk™ Plus プログラムからインテル® Cilk™ Plus キーワードを除いた C/C++ プログラム。cilk_spawn と cilk_sync は取り除かれ、cilk_for は通常の for ループに置換されます。シリアル化はデバッグに使用できます。また、変換された C/C++ プログラムは、オリジナルの C/C++ プログラムと同じ動作になります。一部の文献では、"シリアライズ" という用語が使用されています。
共有メモリー複数のプロセッサー間で共有されているコンピューターの記憶域。共有メモリー・マルチプロセッサーとは、各プロセッサーが任意のメモリー位置に直接アクセスできるマシンのことです。分散メモリーと対照的です。
スパン無制限のプロセッサー数で並列プログラムを実行した場合の理論上の最小実行時間です (通信とスケジュールにかかるオーバーヘッドは考慮されません)。通常、文献では T∞ と表されます。クリティカル・パスの長さとも呼ばれます。
スポーン通常の呼び出しのように関数が戻るのを待たずに、関数を呼び出すこと。呼び出し元は、呼び出した関数と並列で実行を継続できます。cilk_spawn も参照してください。
スピードアッププログラムを並列で実行した際に、1 つのプロセッサーで実行した場合よりもどれだけ速く実行されるかを示す値。スピードアップは、プログラムを P 個のプロセッサーで実行したときの実行時間 T P を 1 個のプロセッサーで実行したときの実行時間 T1 で割った値です。
ストランドspawn やその他の並列制御からのスポーン、同期、リターンが含まれていない一連のシリアル命令。
同期続行する前に、スポーンされた関数のセットがリターンするのを待機すること。現在の関数は、スポーンされた関数に依存していて、それらと並列に続行することができません。cilk_sync も参照してください。
スレッドアドレス空間を同じプロセス内のほかのスレッドと共有するコンカレント・エージェント。通常、スレッドのスケジュールは、オペレーティング・システムによって管理されます。
スループット単位時間あたりに実行される演算の数。
ビュー特定のストランドから見たハイパーオブジェクトの状態。
ワークシングル・プロセッサーでプログラムを実行した場合の実行時間。T1 と表されることもあります。
ワークスチールそれぞれのプロセッサーでローカルに並列作業を行い、ローカルの作業がなくなったら、別のプロセッサーから作業を移動してくるスケジュール手法。ワーク・スチール・スケジューラーは、並列処理が十分にある場合、通信や同期にオーバーヘッドがかからないため効率的です。インテル® Cilk™ Plus のランタイムシステムは、ワーク・スチール・スケジューラーを使用します。
ワーカー別のワーカーが並列ストランドで命令を実行するのと同時に 1 つのストランドの命令を実行する可能性のあるコンカレント・エージェント。ワーカーは、インテル® Cilk™ Plus ランタイムシステムのワーク・スチール・スケジューラーにより管理されます。ワーカーは、オペレーティング・システム・スレッドとして実装されます。