(*)診断情報は、「バイナリ名.optrpt」ファイルに出力されます。-qopenmpOpenMP指示行を有効にします。(-qopt-report[=n]は省略可)OpenMP並列化の診断情報を出力します。n=1:正常に並列化されたループ、領域、セクション、タスクを出力します。宣言子などを示す診断メッセージを出力します。-qopt-reportに変わりました。-opt-report、-openmp-reportもお使い頂けますがワーニングメッセージが出力されます。locationmxm2.optrptファイルに診断情報が出力されます。-parallelと-qopenmpを同時に指定したときコンパイラは全ループに対して並列化可能か否かの解析を行い、可能であれば並列化します。OpenMP指示行が指定されたループは、-qopenmpによって並列化さます。locationmxm3.optrptファイルに診断情報が出力されます。3行目と9行目のループが自動並列化され、8行目のOpenMP指示行が有効になります。9行目のループは自動並列化とOpenMPの両方から並列化されますが、環境変数OMP_NESTED=falseがデフォルトで設定されているため、環境変数OMP_NUM_THREADSで指定したスレッド数で実行されます。OMP_NESTED=falseは入れ子になった並列処理を無効にします。OMP_NUM_THREADSについては、「自動並列化/OpenMPプログラムの実行スレッド数」を参照下さい。環境変数OMP_NUM_THREADSに実行スレッド数を指定します。OMP_NUM_THREADS=4ジョブスクリプト、ジョブ投入方法については、「利用方法」を参照下さい。†EICシステムでは、「ファーストタッチ」を採用しています。データは、最初にそのデータにタッチ(書き込みまたは読み込み)したプロセスのローカルメモリに配置されるというものです。配列(配列Aとする)を初期化しているループが並列化されていないと1CPUコア実行であるために、配列Aはある1つのノードに配置されます。配列Aを処理する並列実行領域では、複数のプロセッサが1つのノードへアクセスすることになります。このような状況ではプログラムの性能向上は望めません。可能なかぎり初期化ループも並列化してください。各ユーザが使用可能なスタックサイズの上限を6GBに設定しています(メモリ使用量の上限ではありません)。関数や手続きの中で宣言されるローカル変数がスタック領域にアロケーションされます。上限を越えてスタックに領域を確保しようとすると、AddressErrorまたは、SegmentationFaultでプログラムは終了します。この場合、データを静的にアロケーションするために、COMMONブロックでデータ(配列)を宣言して下さい。環境変数KMP_STACKSIZEには自動並列化/OpneMPプログラムのスレーブスレッドが使用できるスタック領域の最大容量を指定します。スレーブスレッドのプライベート変数が対象です。共有変数、マスタースレッドのプライベート変数は対象ではありません。デフォルトでは2GBが設定されています。単位として、k(キロバイト)、m(メガバイト)、g(ギガバイト)、t(テラバイト)が使えます。シリアル実行で実行できたプログラムが、自動並列化/OpenMP並列化したときにエラー終了してしまったというような場合にはスレッドのスタック領域が不足している可能性がありますので、KMP_STACKSIZEを増やしてください。†コマンド行の末尾にMPIライブラリのリンクを指示してください。-lmpi実行時にはmpiexec_mptコマンドを使ってジョブを起動してください。ジョブスクリプト、ジョブ投入方法については、「利用方法」を参照下さい。MPIのデータ型FortranプログラムでのMPIのデータ型とそれに対応するFortranでのデータ型は以下の通りです。1CプログラムでのMPIのデータ型とそれに対応するCでのデータの型は以下の通りです。並列化を有効にするコンパイルオプションを指定して、リンク時にMPIライブラリをリンクします。-lmpi実行時には環境変数OMP_NUM_THRAEDSで実行スレッド数を指定し、mpiexec_mptコマンドを使ってジョブを起動してください。ジョブスクリプト、ジョブ投入方法は、「利用方法」」を参照ください。オプションの指定でスレーブスレッドまでの解析が可能です。psrunコマンドと共に自動並列化/OpenMPプログラムを実行すると、OMP_NUM_THREADSで指定した数のスレッドの他に1つの管理スレッドが起動されます。そのため解析結果ファイルも実行スレッド数+1個作られます。管理スレッドの解析結果ファイルには情報はありません。オプションを指定してください。ファイルがカレントディレクトリに作られます。ls*.xmla.out.3.4032.eich1.xmla.out.2.4032.eich1.xmla.out.4.4032.eich1.xmla.out.1.4032.eich1.xmla.out.0.4032.eich1.xml(解析結果ファイル名はバイナリ名.スレッド番号.PID.ホスト名.xmlです。)psprocessコマンドで整形してください。a.out.0.4032.eich1.xml(*)解析結果ファイルを複数指定して、全スレッドの解析結果を表示するということはできません。オプションを指定し、並列化のために自動並列化オプション指定します。L_jacobi__202__par:himeno_omp.f:216MPIプログラムMPIプログラムを解析するときはpsrunコマンドに-fオプションを指定してください。ハイブリッドプログラムハイブリッドプログラムを解析するときは、psrunコマンドに-fオプションと-pオプションを指定してください。MPInside(MPIの通信時間を測る)MPInsideを使ってMPI関数の実行回数や、通信時間を知ることができます。コマンド名はMPInsideです。"mpinside_stats"というファイルが作成されます。0.2360......エクセルへコピーして面グラフで表示します。横軸がランク番号、縦軸が経過時間を表します。MPIルーチンの実行時間が色分けされます。上図では、計算部分とMPI_Alltoallvの時間が大部分を占めていることがわかります。