Sun Studio 12 Update 1: Fortran ユーザーズガイド

3.4.5 -autopar

ループの自動並列化を使用可能にします。

マルチプロセッサで並列処理の対象に適するループを探し、そのループを並列化します。内部反復データに依存するループを解析し、ループを再構築します。最適化レベルが -O3 以上に設定されていない場合は、自動的に -O3 に設定されます。

-autopar などの並列化オプションを使用している場合は、-stackvar オプションも指定します。-autopar を使用している場合は、-stackvar オプションを使用した方がパフォーマンスが改善される場合があります。これは、オプティマイザが並列化する機会をより多く検出できるようになるためです。メインスレッドおよびスレーブスレッドのスタックサイズを設定する方法については、-stackvar オプションの説明を参照してください。

プログラム中に libthread スレッドライブラリへの明示的な呼び出しがある場合は、-autopar は使用しないでください。「3.4.56 -mtの注釈を参照してください。

-autopar オプションは、シングルプロセッサのシステムには適していません。シングルプロセッサのシステムでこのオプションを付けてコンパイルを行うと、通常は実行速度が低下します。

並列化されたプログラムをマルチスレッド環境で実行するには、実行前に PARALLEL (または OMP_NUM_THREADS) 環境変数を設定しておく必要があります。これにより、プログラムで作成できる最大スレッド数を実行時システムに設定します。デフォルトは 1 です。一般的に、PARALLEL 変数または OMP_NUM_THREADS 変数には、ターゲットプラットフォーム上の利用可能な仮想プロセッサ数を設定します。この数は、Solaris の psrinfo(1) コマンドを使用して特定することができます。

-autopar を使用してコンパイルとリンクを一度に行う場合、マルチスレッド処理ライブラリとスレッド対応の Fortran 実行時ライブラリが自動的にリンクされます。-autopar を使用してコンパイルとリンクを別々に行う場合は、適切なライブラリにリンクするために、-autopar を使用してリンクを行う必要があります。

-reduction オプションは、-autopar オプションと組み合わせて使用することもできます。

並列化についての詳細は、『Fortran プログラミングガイド』を参照してください。明示的にユーザーが制御して並列化を行う場合は、OpenMP 指令および —xopenmp オプションを使用します。