自動並列化のプログラミング

自動並列化機能は、ワークシェアリング構造 (PARALLEL DO ディレクティブ) などの OpenMP* のいくつかのコンセプトを取り入れています。ワークシェアリング構造については、「OpenMP によるプログラミング」を参照してください。ここでは、自動並列化について説明します。

効率的な自動並列化の使用方法のガイドライン

次の場合、ループは並列化が可能です。

コンパイラは、コンパイル時に定数ではないループ・パラメータを持つ parallel for ループで、実行するメリットを検証するためにランタイム・テストを生成します。

コーディング・ガイドライン

次のコーディング・ガイドラインにより自動パラレライザの威力と効率を強化することができます。

自動並列化のデータフロー

自動並列化の処理では、コンパイラは次のステップを実行します。

データフローの解析 ---> ループの分類---> 依存性の解析 ---> 高度な並列化 --> データのパーティショニング ---> マルチスレッド・コードの生成

これらのステップには次のものが含まれます。

- 依存性のグラフを解析し、並列で実行できるループを決定します。

- ランタイムの依存性を計算します。

- ループのパラメータを修正します。

- スレッドタスクごとに入口/出口を生成します。

- スレッド生成と同期化の並列ランタイム・ルーチンへの呼び出しを生成します。