06:37:28)追加された行はこの色です。削除された行はこの色です。[#a8f1a4a1]parallelオプションの指定により、コンパイラがソースコード内の全ループに対して、並列化が可能か否かの解析を行います。-parallel--ソースファイル内の全てのループを解析し、安全に並列化できるループがあれば並列バイナリを生成します。自動並列化の性能向上の見込みのしきい値(確信度)を設定します。とき、ループは、計算量にかかわらず、並列化可能ならば常に自動並列化されます。とき、並列化が可能でかつ並列化による性能向上が見込まれる場合のみ自動並列化されます。(-qopt-reportは省略可)~自動並列化の診断情報を出力します。--n=1:並列化されたループを出力します。詳細に加えて、並列化されなかったループとその簡単な理由を出力します。して分類されているメモリー位置を出力します。詳細に加えて、並列化を妨げている依存関係を出力します。--デフォルトはn=2。-qopt-reportに変わりました。-opt-reportもお使い頂けますがワーニングメッセージが出力されます。mxm.optrptファイルに診断情報が出力されます。8行目のループが並列化されたことがわかります。mxm.optrptファイルに診断情報が出力されます。3行目と8行目のループが並列化されたことがわかります。-par-threshold100(デフォルト)の場合は、初期化ループ(3行目)には充分な処理量が無く、性能向上が確実ではないと判断し、並列化しません。-par-threshold0の場合は、性能向上の見込み値には関係なく、安全に並列化できるループは全て並列化します。[#bff9624d]qopenmpオプションの指定により、ソースコード内のOpenMP指示行を有効にします。使い頂けますがワーニングメッセージが出力されます。-qopenmp--OpenMP指示行を有効にします。(-qopt-reportは省略可)--OpenMP並列化の診断情報を出力します。--n=1:正常に並列化されたループ、領域、セクション、タスクを出力します。宣言子などを示す診断メッセージを出力します。--デフォルトはn=2。-qopt-reportに変わりました。-opt-reportもお使い頂けますがワーニングメッセージが出力されます。mxm2.optrptファイルに診断情報が出力されます。-qopenmpと-parallelを同時に指定したとき~コンパイラは全ループに対して並列化可能か否かの解析を行い、可能であれば並列化します。~OpenMP指示行が指定されたループは、-qopenmpによって並列化さます。mxm3.optrptファイルに診断情報が出力されます。3行目と9行目のループが自動並列化され、8行目のOpenMP指示行が有効になります。スレッド数で実行されます。OMP_NESTED=falseがデフォルトで設定されているため、環境変数OMP_NUM_THREADSで指定したスレッド数で実行されます。OMP_NESTED=falseは入れ子になった並列処理を無効にします。OMP_NUM_THREADSについては、[[「自動並列化/OpenMP並列化プログラムの実行」>#lafe8ab3]]を参照下さい。OMP_NUM_THREADSについては、[[「自動並列化/OpenMPプログラムの実行スレッド数」>#lafe8ab3]]を参照下さい。[#lafe8ab3]-環境変数OMP_NUM_THREADSに実行スレッド数を指定します。ジョブスクリプト、ジョブ投入方法については、[[「利用方法」>利用方法#w8339976]]を参照下さい。[#ke6c26fe]-EICシステムでは、「ファーストタッチ」を採用しています。データは、最初にそのデータにタッチ(書き込みまたは読み込み)したプロセスのローカルメモリに配置されるというものです。配列(配列Aとする)を初期化しているループが並列化されていないと1CPUコア実行であるために、配列Aはある1つのノードに配置されます。配列Aを処理する並列実行領域では、複数のプロセッサが1つのノードへアクセスすることになります。このような状況ではプログラムの性能向上は望めません。可能なかぎり初期化ループも並列化してください。[#zd84c197]-各ユーザが使用可能なスタックサイズの上限を6GBに設定しています(メモリ使用量の上限ではありません)。関数や手続きの中で宣言されるローカル変数がスタック領域にアロケーションされます。上限を越えてスタックに領域を確保しようとすると、AddressErrorまたは、SegmentationFaultでプログラムは終了します。この場合、データを静的にアロケーションするために、COMMONブロックでデータ(配列)を宣言して下さい。-環境変数KMP_STACKSIZEには自動並列化/OpneMPプログラムのスレーブスレッドが使用できるスタック領域の最大容量を指定します。スレーブスレッドのプライベート変数が対象です。共有変数、マスタースレッドのプライベート変数は対象ではありません。デフォルトでは2GBが設定されています。-単位として、k(キロバイト)、m(メガバイト)、g(ギガバイト)、t(テラバイト)が使えます。-シリアル実行で実行できたプログラムが、自動並列化/OpenMP並列化したときにエラー終了してしまったというような場合にはスレッドのスタック領域が不足している可能性がありますので、KMP_STACKSIZEを増やしてください。[#t936c9e4]コマンド行の末尾にMPIライブラリのリンクを指示してください。-lmpi実行時にはmpiexec_mptコマンドを使ってジョブを起動してください。-MPIのデータ型~FortranプログラムでのMPIのデータ型とそれに対応するFortranでのデータ型は以下の通りです。~|~MPIのデータ型|~Fortranのデータ型|~bit||MPI_DATATYPE_NULL|対応する型はありません|―||MPI_INTEGER|INTEGER|32||MPI_REAL|REAL|32||MPI_DOUBLE_PRECISION|DOUBLE_PRECISION|64||MPI_COMPLEX|COMPLEX|64||MPI_DOUBLE_COMPLEX|DOUBLE_COMPLEX|128||MPI_LOGICAL|LOGICAL|4||MPI_CHARACTER|CHARACTER|1||MPI_INTEGER1|INTEGER(KIND=1)|8||MPI_INTEGER2|INTEGER(KIND=2)|16||MPI_INTEGER4|INTEGER(KIND=4)|32||MPI_INTEGER8|INTEGER(KIND=8)|64||MPI_REAL2|REAL(KIND=2)|16||MPI_REAL8|REAL(KIND=8)|64||MPI_REAL16|REAL(KIND=16)|128||MPI_BYTE|BYTE|1|~CプログラムでのMPIのデータ型とそれに対応するCでのデータの型は以下の通りです。[#ka4a7d3a]並列化を有効にするコンパイルオプションを指定して、リンク時にMPIライブラリをリンクします。-lmpi実行時にはmpiexec_mptコマンドを使ってジョブを起動してください。~ジョブスクリプト、ジョブ投入方法は、[[「利用方法」>利用方法#w8339976]]」を参照ください。オプションの指定で子スレッドまでの解析が可能です。psrunコマンドと共に自動並列化/OpenMPプログラムを実行すると、OMP_NUM_THREADSで指定した数のスレッドの他に1つの管理スレッドが起動されます。そのため解析結果ファイルも実行スレッド数+1個作られます。オプションを指定してください。ファイルがカレントディレクトリに作られます。a.out.0.4032.eich1.xml(解析結果ファイル名はバイナリ名.スレッド番号.PID.ホスト名.xmlです。)~psprocessコマンドで整形してください。a.out.0.4032.eich1.xml~(*)解析結果ファイルを複数指定して、全スレッドの解析結果を表示するということはできません。オプションを指定し、並列化のために自動並列化オプション指定します。L_jacobi__202__par:himeno_omp.f:216--MPIプログラム~MPIプログラムを解析するときはpsrunコマンドに-fオプションを指定してください。dplaceのオプションは、-s2となります。~~--ハイブリッドプログラム~ハイブリッドプログラムを解析するときは、psrunコマンドに-fオプションと-pオプションを指定してください。~実行時にはomplaceコマンドを指定して下さい。omplaceコマンドのオプションは、psrunを指定しないときと変わりません。~~-''MPInside(MPIの通信時間を測る)''~~MPInsideを使ってMPI関数の実行回数や、通信時間を知ることができます。~コマンド名はMPInsideです。"mpinside_stats"というファイルが作成されます。