複数のタスクを同時に処理すると、プログラムの実行速度が上がり、パフォーマンスも改善されます。自動並列化の対象となるのは、プログラム中で繰り返し使用されているループです。これは、ループの反復によって、アプリケーションの実行時間に影響が出ることがあるからです。並列化を行うと、ループでの計算作業を複数のプロセッサに分散させるために、ソースプログラムを書き換える必要がありません。
アプリケーションを並列化 (またはマルチスレッド化) すると、コンパイル済みのプログラムがマルチプロセッサシステムを最大限に活用できるようになります。また、ループなどのシングルタスクが複数のプロセッサで実行されるため、実行速度を飛躍的に短縮することができます。
FORTRAN 77、Fortan 90、C の各コンパイラを使用すると、ソースコードを解析して、反復して使用されているループの中から、それぞれ独立していて並列化しても安全性が損なわれないループを特定することができます。
FORTRAN 77、Fortan 90、C の各コンパイラを使用すると、いったん構造化されたコードが自動的に拡張構造化されるため、より高度なループレベルの並列化を行うことができます。コンパイラでは、こうした変換を行うために、次の手法を採用しています。
ループ分散 - 並行処理が可能な文と不可能な文を区別する
ループ融合 - 複数の隣接する小規模なループを結合して 1 つの並列ループにし、実行時のオーバーヘッドを削減する
ループ交換 - 入れ子になっているループを 1 つのループに変換し、並列化して、オーバーヘッドを大幅に削減する
スカラー変数および配列変数の固有化 - データ依存性のあるループの並列処理に、スカラー変数や配列変数の複数のコピーを使用する
並行処理を行うことが有益かどうかを、コンパイラだけでは判断できない場合があります。このような場合、並列化指令 (プラグマ) コメント行を使用して、この指令の次のループを並列化するかどうかをコンパイラに指示することができます。