• 検索結果がありません。

1. TSUBAME2.0 通常実行まで 1.1. 環境設定 (MPI ライブラリ & コンパイラ ) 最新の Open MPI と Intel コンパイラを使用するため,${HOME}/.bashrc 等で環境変数 ( パス等 ) を設定します. ~ 設定例 ~ export SELECT_MPI

N/A
N/A
Protected

Academic year: 2021

シェア "1. TSUBAME2.0 通常実行まで 1.1. 環境設定 (MPI ライブラリ & コンパイラ ) 最新の Open MPI と Intel コンパイラを使用するため,${HOME}/.bashrc 等で環境変数 ( パス等 ) を設定します. ~ 設定例 ~ export SELECT_MPI"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

プロファイルツール実行例 アプリ「ntchem-rimp2」 2013 年 9 月 3 日 日本電気株式会社

0. はじめに

本ドキュメントでは,アプリ「ntchem-rimp2」におけるプロファイルツール連携の作業履歴を記 載します.

目次

1. TSUBAME2.0‐通常実行まで ... 2 1.1. 環境設定(MPI ライブラリ&コンパイラ) ... 2 1.2. コンパイルとソース修正 ... 2 1.2.1. config_mine の修正 ... 2 1.2.2. config/makeconfig の修正 ... 3 1.3. バッチジョブ実行 ... 4 1.4. 実行結果の確認 ... 5 2. TSUBAME2.0‐Scalasca 連携実行 ... 6 2.1. Scalasca 環境設定 ... 6 2.2. Scalasca 連携‐コンパイル ... 7 2.2.1. コンパイラの設定 ... 7 2.3. Scalasca 連携‐プログラム実行... 8 2.4. Scalasca 連携‐実行結果の表示(可視化) ... 9 2.5. その他(※未完了項目) ... 10

(2)

1. TSUBAME2.0‐通常実行まで

1.1. 環境設定(MPI ライブラリ&コンパイラ)

最新の Open MPI と Intel コンパイラを使用するため,${HOME}/.bashrc 等で環境変数(パス等)を 設定します. ~設定例~ export SELECT_MPI=/usr/apps/openmpi/1.6.3/intel export PATH=${SELECT_MPI}/bin:$PATH export LD_LIBRARY_PATH=${SELECT_MPI}/lib:$LD_LIBRARY_PATH ※2013 年 8 月現在,デフォルトの Intel コンパイラの ver.は 13.0 です. 1.2. コンパイルとソース修正 TSUBAME2.0 環境におけるプログラム移植のための修正を記載します. 1.2.1. config_mine の修正 システムに合わせて Makefile 一式を作成する’config_mine’を修正します.TSUBAME2.0 環境に合 わせて,「LINUX64 mpif90(ifort) (For Tsubame2)」と書かれたブロックをベースに編集します.

※ 数学ライブラリの指定は,「-mkl=parallel」で並列版の MKL を使用します. ※ 「--scratch」で実際に存在するディレクトリを指定します.

~修正後:config_mine~

# LINUX64 mpif90(ifort) (For Tsubame2) ./configure \ --lapack= \ --blas= \ --atlas=-mkl=parallel \ --scratch=/work1/t2g-hp120261/12IH0187/hpci_fs2013_t/fsapp_2nd/ntchem-rimp2/mk_scr \ linux64_mpif90_omp_intel_tsubame2 編集完了後,「./configure_mine」で実行します.

(3)

1.2.2. config/makeconfig の修正

config_mine によって作成された Makefile 一式では,プログラムの実行時にセグメンテーショ ンフォルト(SIG SEGV)が発生する恐れがあります.これは,Intel コンパイラ ver.13.0 固有の問 題で,「-heap-arrays」オプションが不具合発生のスイッチとなっています.

コンパイルオプションの設定箇所から削除して,「-heap-arrays」オプションを使用せずコンパ イルするよう修正しました.

~修正前:config/makeconfig(33 行目付近)~ F77C = mpif77

F77FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -heap-arrays -w95

F77FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -heap-arrays -w95

F90C = mpif90

F90FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -heap-arrays -w95

F90FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -heap-arrays -w95

~修正後:config/makeconfig(33 行目付近)~ F77C = mpif77

F77FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F77FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F90C = mpif90

F90FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F90FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

※ Intel コンパイラ ver.13.0 の「-heap-arrays」オプションに関する補足

Ø 一般的に,stack 領域が不足した場合の改善を目的として使用されています.

Ø 他にも原因に応じて,システム側の stack サイズ拡張(ulimit -s 等)や,OpenMP スレ ッド毎の stack サイズ拡張(環境変数 OMP_STACKSIZE)等で回避が可能です.TSUBAME2.0 の計算ノードでは,予めシステム側の stack サイズが「unlimited」となっています. Ø

(4)

エラーに関する参考情報(URL):http://software.intel.com/en-us/articles/intel-1.3. バッチジョブ実行 コンパイルして作成した実行モジュール「rimp2.exe」と,配布されたデータ一式を使用して,バ ッチジョブを実行します. 4 種類あるデータの内,1 つを実行しました. ~使用ケース~ データ名 taxol 並列数 32ノード(MPI 64プロセス×OpenMP 6スレッド ~バッチジョブスクリプト(go.sh)~ #!/bin/bash cd ${PBS_O_WORKDIR} export OMP_NUM_THREADS=6

mpirun -np 64 --report-bindings -bysocket -cpus-per-proc 6 -bind-to-core -x OMP_NUM_THREADS -hostfile ${PBS_NODEFILE} ./rimp2.exe >& ./log.mpi

・ 作業ディレクトリと同じパス(PBS_O_WORKDIR)に移動し,mpirun を実行します. ・ 環境変数 OMP_NUM_THREADS は,mpirun の「-x」オプションで全プロセスに渡します. ・ TSUBAME2.0(westmere)は,6 コア*2 ソケットの計 12 個の物理的 CPU 構成となっています.

bind に関する記述は Open MPI のオプションであり,ハイブリッド実行時の各プロセスをソ ケット毎に割り当てる設定となります.

※ その他,バッチジョブの詳細については省略します(詳細はマニュアルにて)

~バッチジョブ投入方法~

% t2sub -q S -W group_list=t2g-hp120261 -l walltime=00:30:00 -l select=32:ncpus=6:mpiprocs= 2:mem=50gb -l place=scatter ./go.sh

・ 「-q」でキュー名,「-W group_list」でグループ名を指定します(ワークショップ用リソー ス,およびアプリ FS の課題番号の情報に基づいて設定します) ・ 「-l select=32:ncpus=6:mpiprocs=2:mem=50gb -l place=scatter」で,2 プロセス&50GB のチャンクを 32 個分確保します.結果的に,32 ノード,MPI 64 プロセスの実行の設定と なります.使用時間(上限)は,「-l walltime」で設定します. ※ その他,バッチジョブの詳細については省略します(詳細はマニュアルにて)

(5)

1.4. 実行結果の確認

バッチジョブのログ(OTHERS.e*,OTHERS.o*)と mpirun の実行ログ(log.mpi)を確認し,プログラ ムが問題なく動作していることを確認しました.

~実行ログ(log.mpi)抜粋~ :

SCF energy = -2912.07578182458 MP1 energy = 0.000000000000000E+000 MP2 energy (Singlet corr ) = -6.75799573369710 MP2 energy (Triplet corr ) = -2.49726273967200 MP2 energy (Total corr ) = -9.25525847336910 SCS-MP2 energy (Total corr ) = -8.94201579366052 Total MP2 energy = -2921.33104029795 Total SCS-MP2 energy = -2921.01779761824 ... CPU time (3/3k 2cints comm) : 7.63 ... CPU time (4c Ints ) : 316.72 ... CPU time (EMP2 corr. ) : 8.44 ... WALL time (3/3k 2cints comm) : 1.34 ... WALL time (4c Ints ) : 53.92 ... WALL time (EMP2 corr. ) : 0.31 ... CPU time (RIMP2_RMP2Energy) : 333.73 ... WALL time (RIMP2_RMP2Energy) : 55.91 ... CPU time (RIMP2_Driver ) : 384.44 ... WALL time (RIMP2_Driver ) : 68.17 MPI has been terminated

(6)

2. TSUBAME2.0‐Scalasca 連携実行

2.1. Scalasca 環境設定 Scalasca は,アプリ FS 共用にインストールしたパッケージを使用します.節 1.1 の環境設定に加 えて,${HOME}/.bashrc 等で環境変数(パス等)を設定します. ~設定例~ export PATH=/work1/t2g-hp120261/fs_share_tool/scalasca-1.4.3/bin:${PATH} export PAPI_ROOT=/work0/GSIC/apps/papi-5.0.0 export PATH=${PATH}:${PAPI_ROOT}/bin export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${PAPI_ROOT}/lib export LIBRARY_PATH=${LIBRARY_PATH}:${PAPI_ROOT}/lib export FPATH=${FPATH}:${PAPI_ROOT}/include export CPATH=${CPATH}:${PAPI_ROOT}/include export MANPATH=${MANPATH}:${PAPI_ROOT}/man ※2013 年 8 月現在,Scalasca は ver.1.4.3 がインストールされています. ※HW カウンタの情報は,PAPI を利用して採取しています.PAPI の環境設定は不要ですが,異なる PAPI の ver.を設定している場合には,削除する必要があります.

(7)

2.2. Scalasca 連携‐コンパイル 2.2.1. コンパイラの設定 Scalasca を利 用し たコン パイ ルは ,基本 的には mpif90 等 コン パイ ラのコ マン ドの 前に 「scalasca -instrument」(もしくは短縮形「skin」)を追加するのみです.config/makeconfig の 該当部分を修正しました. ~修正前:config/makeconfig(32 行目付近)~ F77C = mpif77

F77FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F77FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F90C = mpif90

F90FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F90FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

:※中略※

LD = mpif90

LDFLAGS = -pc -intel -L$(LIB) LDFLAGS_NOMAIN = -nofor_main

~修正後:config/makeconfig(32 行目付近)~ F77C = skin mpif77

F77FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F77FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F90C = skin mpif90

F90FLAGS = $(DMACRO) $(INCMOD) -i8 -O2 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

F90FLAGSNOOPT = $(DMACRO) $(INCMOD) -i8 -O0 -ftz -auto -assume byterecl -vec-report 0 -cm -w95

:※中略※

(8)

2.3. Scalasca 連携‐プログラム実行

コンパイルして作成した実行モジュール「rimp2.exe」と,配布されたデータ一式を使用して,バ ッチジョブを実行します.使用するケースとジョブの投入方法は,節 1.3 の通常実行と同じです.

Scalasca を利用したプログラム実行は,実行モジュール(逐次)や mpirun(MPI 並列)コマンドの前 に「scalasca -analyze」(もしくは短縮形「scan」)を追加して行います.

TSUBAME2.0 のバッチジョブでの実行では,Scalasca と mpirun のオプションが正しく識別できな いため,mpirun のオプションを「”(ダブルクォーテーション)」で囲う必要があります.混同を避け るため,Scalasca 側のオプションを指定する場合は,設定ファイル(EPIK.CONF)に書くことをお勧め します. ~バッチジョブスクリプト(go.sh)~ #!/bin/bash cd ${PBS_O_WORKDIR} export OMP_NUM_THREADS=6

scan mpirun -np 64 "--report-bindings" "-bysocket -cpus-per-proc 6 -bind-to-core" "-x OMP_N UM_THREADS" "-hostfile ${PBS_NODEFILE}" ./rimp2.exe >& ./log.mpi

~設定ファイル(EPIK.CONF)の例~

EPK_TITLE=fs_ntchem ★アーカイブ名

EPK_METRICS=PAPI_SP_OPS:PAPI_DP_OPS:PAPI_VEC_SP ★メトリックの指定(PAPIプリセットイベント) ESD_BUFFER_SIZE=100000000 ★バッファサイズの指定

(9)

2.4. Scalasca 連携‐実行結果の表示(可視化) X-window が使用できるターミナルを立ち上げて,出力されたアーカイブ(epik_*)に対して. 「scalasca -examine」(もしくは短縮形「square」)を実行します. ~コマンド実行例~ % square epik_fs_ntchem ~表示画面~

(10)

2.5. その他(※未完了項目)

ワークショップでは,TSUBAME/Scalasca がターゲットだが,VampirTrace および京&FX10 の場合に ついても同様に執筆のつもり?

・ 本ドキュメントもしくは wiki で追加検討(汎用的な部分は Tips として wiki 掲載を励行) Ø 代表的な Scalasca のオプションやパラメータ(コンパイル時・実行時) Ø PAPI プリセットイベント(papi_avail 参照) Ø ユーザー区間指定(手動)の例 Ø PAPI のイベント指定は変更する可能性アリ Ø (東工大様への依頼分)各種結果からの分析方法,Vampir サーバーの使い方,全ツール の評価時間一覧表(オーバーヘッド)

参照

関連したドキュメント

SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux

(※)Microsoft Edge については、2020 年 1 月 15 日以降に Microsoft 社が提供しているメジャーバージョンが 79 以降の Microsoft Edge を対象としています。2020 年 1

[WebSAM JobCenter Media]を使用して JobCenter SV をローカルディスクへインストール します。JobCenter SV の動作環境や注意・制限事項については「WebSAM

既に使用している無線機のチャンネルとユーザーコードを探知して DJ-DPS70 に同じ設定をす る機能で、キー操作による設定を省略できます。子機(設定される側)が

設定支援ソフトウェアで設定したときは、データを付属の SD カードに保存した後、 FS-2500EP の設定操 作部を使って SD カードから

子炉建設計画を 持つ ため 環境試 料の 放 射性 核種測定を PINSTECHPakistan &Technologyに 1976〜1977年... particle

活用のエキスパート教員による学力向上を意 図した授業設計・学習環境設計,日本教育工

 地表を「地球の表層部」といった広い意味で はなく、陸域における固体地球と水圏・気圏の