Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4 並列実行モデル

並列ループの実行はスレッドによって行われます。プログラムの初期実行を行うスレッドをマスタースレッドといいます。マスタースレッドは並列ループを検出すると、マスタースレッド自体と複数のスレーブスレッドで構成されるスレッドチームを作成します。ループの反復がチャンクに分割され、チャンクがチーム内のスレッドに分散されます。スレッドによるチャンクの実行が完了すると、チームの残りのスレッドと同期が行われます。この同期はバリアと呼ばれます。すべてのスレーブスレッドが並列ループでの処理を完了し、バリアに達するまでは、マスタースレッドはプログラムの残りの部分を実行できません。バリアの終わりで、マスタースレッドは別の並列ループを検出するまで、引き続きプログラムを順次実行します。

この処理中に、次に関連するオーバーヘッドなどのさまざまなオーバーヘッドが発生する可能性があります。

  • スレッドの作成

  • 作業配布

  • バリア同期

並列ループの中には、実行される有用な作業の量が少ないためにオーバーヘッドを正当化できないものもあります。このようなループでは、実行速度が並列化よりも大きく低下することがあります。ループでの有用な作業の量がそれほど多くない場合、ループを並列実行することでプログラムの速度が向上します。