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

理化学研究所計算科学研究機構研究部門量子系分子科学研究チーム殿 hp170163: 有機半導体 有機分子発光材料の全自動探索シミュレーションシステムの開発 高度化支援作業 2017 年 9 6 ( R405 般財団法 度情報科学技術研究機構利 援部 1

N/A
N/A
Protected

Academic year: 2021

シェア "理化学研究所計算科学研究機構研究部門量子系分子科学研究チーム殿 hp170163: 有機半導体 有機分子発光材料の全自動探索シミュレーションシステムの開発 高度化支援作業 2017 年 9 6 ( R405 般財団法 度情報科学技術研究機構利 援部 1"

Copied!
20
0
0

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

全文

(1)

hp170163

「有機半導体・有機分子発光材料の全自

動探索 シミュレーションシステムの開発」

高度化支援作業

理化学研究所 計算科学研究機構 研究部門 量子系分子科学研究チーム 殿

2017年9⽉6⽇(⽔)@AICS R405 

⼀般財団法⼈ ⾼度情報科学技術研究機構 利⽤⽀援部

1

(2)

Outline

•  高度化支援の依頼内容

•  実行環境と計算条件

•  PWscf フロー図

•  各ライブラリを使用した場合のプログラム全体の実行時間の比較

•  Scalapack と ELPA の全実行時間の比較

•  electrons ルーチンの構造と実行時間の比較(Scalapack と ELPA)

•  固有値ライブラリ(

zhegv)部分の FAPP性能分析

•  固有値ライブラリ(zhegv)部分における MPI通信の経過時間

•  固有値ライブラリ(

zhegv)におけるMPIプロセスの中の計算の時間

•  固有値ライブラリ(zhegv)部分の 全演算数

•  固有値ライブラリ(

zhegv)部分の 各rankごとの演算数

•  実行時オプションの指定(

−nd 169)

•  まとめ

2

(3)

高度化支援の依頼内容 •  高度化支援のターゲットアプリ
 アプリ名: Quantum ESPRESSO
 バージョン: 6.1
 対象モジュール: PWscf(pw.x)
 •  依頼内容
 オープンソースの第一原理電子状態計算プログラムQuantum ESPRESSOの最新版v6.1のPWscfモ ジュール(pw.x)について、実行性能の阻害要因のひとつとなっている対角化計算に対して、EPLAライ ブラリ導入による高速化を行い、ライブラリ導入前の(ScaLAPACKを使用した)コードとELPAライブラリ 導入後のコードに対して並列実行時の並列効率、実行効率の測定を行い、性能特性の検証をしてい ただきたい。また、それぞれのコードについて性能阻害要因の特定を実施していただきたい。 3

(4)

実行環境と計算条件 表:実行環境 表:計算条件 計算対象物質 有機発光分子材料集合体 計算規模 単位セル当たり336原子 交換相関汎関数 rev-vdW-DF2 平面波カットオフエネルギー 64Ry k点 3x3x3 (irreducible k点:14 点) step数 1回 scf数 5回 PWscfを用いた構造最適化計算 コード名 Quantum ESPRESSO v 6.1 モジュール PWscf ハードウェア K computer 言語環境 K-1.2.0-22 (Released : 2017/4/8) 数値演算ライブラリ Scalapack version 2.0.2 (富士通汎用数値計算ライブラリSSLII) ELPA release 2016.11 (最新版 release 2017.05 )

コンパイルオプション Scalapack: FDFLAGS = -D__FFTW -D__MPI -D__PARA -D__SCALAPACK -D__OPENMP   FFLAGS = -O3 -Nsetvalue -Kopenmp –Kparallel,optmsg=2 -Nlst=t

  LDFLAGS = -Kfast -Kparallel,openmp

  ELPA_LIBS_SWITCH = disabled

    SCALAPACK_LIBS = -SSL2BLAMP -SCALAPACK -Kopenmp,parallel

  ELPA: FDFLAGS = -D__FFTW -D__MPI -D__PARA -D__SCALAPACK -D__OPENMP -D__ELPA_2016

  FFLAGS = -O3 -Nsetvalue -Kopenmp –Kparallel,optmsg=2 -Nlst=t

  LDFLAGS = -Kfast -Kparallel,openmp

    SCALAPACK_LIBS = /home/rist/r00065/lib/lib/libelpa_openmp.a -SSL2BLAMP
         -SCALAPACK -Kopenmp,parallel

(5)

PWscf フロー図(v6.1)

Start

read_input

Stop

run_pwscf stop_run init_run electrons forces stress punch mp_global iosys setup check_stop 計算のセットアップを行う。 電子状態をself-consistentに計算する。 原子に対する力を計算する。 系の応力を計算する。 environment plugin_arguments_bcast 5

(6)

1076.54 448.75 411.09 1107.99 664.21 580.89 25.27 25.28 25.19 228.81 229.53 231.1 2,443 1,371 1,252 0 500 1000 1500 2000 2500

lapack scalapack ELPA

経過時間

[sec]

ライブラリ

init_run electrons forces stress other 全実行時間

各ライブラリを使用した場合のプログラム全体の実行時間の比較 nodes (= MPI processes) : 192 [TOFU: 4x4x12] theareds : 8 最短 (注) Lapackのコンパイルオプション DFLAGS = -D__FFTW -D__MPI -D__PARA -D__OPENMP FFLAGS = -O3 -Nsetvalue -Kopenmp -Kparallel,optmsg=2 -Nlst=t バンド数:1976

•  各ライブラリ(Scalapack, ELPA, Lapack) の中で、ELPAが、全実行時間が、一番

短いことがわかった。 

à init_run と electrons の経過時間が主に短縮

1.1倍高速

(7)

1,371 449 664 1,252 411 581 0 200 400 600 800 1,000 1,200 1,400 全実行時間 init_run electrons 経過時間  [ se c ] scalapack elpa Scalapack と ELPA の全実行時間の比較 nodes (= MPI processes) : 192 [TOFU: 4x4x12] theareds : 8

•  init_run と electrons では、全実行時間に対して electrons部分の割合が大きく、

Scalapack と ELPA の実行時間の差も electrons の方が大きい 

à 今後 electrons の部分に注目

(8)

453 599 623 664 334 515 540 581 0 200 400 600 800 cdiaghg cegterg c-bands electrons 経過時間 [ sec ] elpa scalapack

electrons ルーチンの構造と実行時間の比較(Scalapack と ELPA)

•  electrons ルーチンの中で、Scalapack と ELPA の経過時間に差がある部分を グラフにした。
 àプログラム構造において、一番深い階層の cdiaghg ルーチン(固有値ライブラ リ zhpev を呼ぶ部分) が原因で他の部分にも差が出ていることがわかった。 à cdiaghg ルーチンの中の固有値ライブラリ zhpev 部分を詳しく調べる。 一番下の階層 時間の差が大 きい electrons     c-bands             cegterg                   cdiaghg                   zhpev_modu le.pzheevd_ drv                   elpa1_comput e.tridiag_com plex_double             nodes (= MPI processes) : 192 [TOFU: 4x4x12] theareds : 8 Scalapack と ELPA の 共通部分のルーチン ELPA だけのルーチン 8

(9)

1.10 0.68 0.00 0.20 0.40 0.60 0.80 1.00 1.20 scalapack (zhpev) ELPA (zhpev) 1 コ ー ル当た り の時間 [s] ライブラリ 381.20 234.47 0.00 50.00 100.00 150.00 200.00 250.00 300.00 350.00 400.00 scalapack (zhpev) ELPA (zhpev) 経過時間 [s] ライブラリ 固有値ライブラリ(zhegv)部分の FAPP性能分析(1) electrons で呼ばれている固有値ライブラリ(zhegv)部分だけの経過時間を測定 全実行時間から、electrons で呼ばれている固有値ライブラリだけの経過時間を分離した。 à 今後は、この部分の経過時間だけを調べる。 electrons で呼ばれている固有値ライブラリ(zhegv)部分の経過時間(全rankの中の最大値) 1.6倍高速 •  バンド数:1976

(10)

172.88 59.57 85.16 25.91 0.00 50.00 100.00 150.00 200.00 250.00 300.00 MPI 待ち MPI 通信 ELPA MAX MIN

Scalapack と ELPA における、固有値ライブラリ(zhegv)の経過時間の測定で、

rank(MPIプロセス)の中で、計算、MPI待ち、MPI通信の最大値(MAX)と最小値(MIN)をプロット

•  全rank(MPIプロセス)中の最大値(MAX)と最小値(MIN)の経過時間を調べると、

Scalapack と ELPA ともに、インバランンスがあることがわかった。

•  Scalapack と ELPA を比較すると、ELPAの方が、MPI待ちと、MPI通信の時間が、大きく

減少して、インバランスも緩和されていることがわかった。 固有値ライブラリ(zhegv)部分の FAPP性能分析(2) 318.75 283.02 62.04 31.65 0.00 50.00 100.00 150.00 200.00 250.00 300.00 MPI 待ち MPI 通信 Scalapack MAX MIN •  全rank(MPIプロセス)中の最大値(MAX)と最小値(MIN)の経過時間を調べると、 Scalapack と ELPA ともに、インバランンスがあることがわかった。

•  Scalapack と ELPA を比較すると、ELPAの方が、MPI待ちと、MPI通信の時間が、大きく

減少して、インバランスも緩和されていることがわかった。

à ELPA では、Scalapack と比べて、通信方法が大きく改善されていることがわかった。

(11)

固有値ライブラリ(zhegv)部分における MPI通信の経過時間 MPI Profile

•  scalapack: 主に MPI_Recv と MPI_Bcast に時間が かかっている

ELPA: 主に mpi_allreduce と mpi_bcast に時間が かかっている à 通信方法が違っている。 •  通信サイズ(scalapack:563,859,520バイト、ELPA: 378,760,928バイト)も、コール回数(scalapack: 556,588,288回、ELPA:361,255,968回)も、ELPAの 方が小さくなっている。 scalapack ELPA (全rankの合計の値) Elapsed(s) Wait(s) Byte Call   10,898 ---- 378,760,928 361,255,968 zhpev 119.98 104.14 5,429 847,912 mpi_allreduce_ 149.24 127.68 4,329 1,180,186 mpi_bcast_ 1.19 0 0 2,776 mpi_recv_ 0.02 0 3,562 4,511 mpi_send_           0 0 2,621 82 mpi_sendrecv_ 1.36 0 95,077 19,085 mpi_sendrecv_replace_ 0.82 0 0 1,575,380 mpi_comm_rank_ 0.75 0 0 1,575,380 mpi_comm_size_ 0.24 0 0 694 mpi_comm_split_ 0.01 0 0 694 mpi_comm_free_

Elapsed(s) Wait(s) Byte Call  

20,563 ---- 563,859,520 556,588,288 zhpev 4.31 2.21 3,909 48,459 MPI_Allreduce 319.56 310.83 18,444 631,840 MPI_Bcast 266.98 0 12,970 2,238,168 MPI_Recv 7.18 0 10,931 837,592 MPI_Send           0.05 0 16 43,601 MPI_Irecv 1.37 0 13,417 401,833 MPI_Isend 0.1 0 0 51,929 MPI_Op_create 0.08 0 0 51,929 MPI_Op_free 0.55 0 0 401,833 MPI_Pack 0.2 0 0 401,833 MPI_Pack_size 8.92 8.17 271,898 3,470 MPI_Reduce 0.73 0 16 174,404 MPI_Rsend 2.67 0 0 1,169,050 MPI_Testall 1.3 0 0 1,489,658 MPI_Type_commit 2.73 0 0 1,489,658 MPI_Type_free 0.01 0 0 347 MPI_Type_indexed 3.83 0 0 1,489,311 MPI_Type_vector 3.02 0 0 869,938 MPI_Waitall 通信方法の改善 à インバランスが改善 à MPI待ち、通信の時間の短縮 11

(12)

73.83 95.92 26.64 35.42 0.00 20.00 40.00 60.00 80.00 100.00 scalapack ELPA 時間 [s] 計算 MAX MIN

Scalapack と ELPA における、固有値ライブラリ(zhegv)の経過時間の測定で、 rank(MPIプロセス)の中で、計算時間の最大値(MAX)と最小値(MIN)をプロット

•  ELPAの方が、計算には時間がかかている。

固有値ライブラリ(zhegv)におけるMPIプロセスの中の計算の時間

•  全rank(MPIプロセス)中の最大値(MAX)と最小値(MIN)の経過時間を調べると、

Scalapack と ELPA ともに、インバランンスがあることがわかった。

•  Scalapack と ELPA を比較すると、ELPAの方が、MPI待ちと、MPI通信の時間が、大きく

減少して、インバランスも緩和されていることがわかった。

à ELPA では、Scalapack と比べて、通信方法が大きく改善されていることがわかった。

通信はELPAの方が速くなっていることがわかった。

次に、計算にかかるコストについて調べてみる。

(13)

1,370,213 2,021,247 0 500,000 1,000,000 1,500,000 2,000,000 scalapack ELPA 全演算数

Scalapack と ELPA における、全rank(MPIプロセス)の固有値ライブラリ(zhegv)の演算数の総和

固有値ライブラリ(zhegv)部分の 全演算数 1.5倍 •  Scalapack より、ELPAの方が、計算に対するコストがかかっていることがわかる。 計算は、ELPAの方が時間がかかっている à 演算数も確認 13

(14)

Scalapack と ELPA における、各rank(MPIプロセス)の固有値ライブラリ(zhegv)の演算数 0 10000 20000 30000 40000 50000 0 20 40 60 80 100 120 140 160 演算数 [E la ps ed (s )*MFL O PS ] rank ELPA 0 10000 20000 30000 40000 50000 0 20 40 60 80 100 120 140 160 演算数 [E la ps ed (s )*MFL O PS ] rank Scalapack rankごとにインバランス(演算を行っているrankと行ってないrankがある) à 192プロセスの実行で、実行時オプション(−nd)を指定しないと、9 x 9 = 81 プロセスしか使用しないプログラム構造になっている。 固有値ライブラリ(zhegv)部分の 各rankごとの演算数 14

(15)

1,309 379 1,194 268 0 500 1,000 1,500 全実行時間 cdiaghg 経過時間  [ se c ] scalapack (-nd 169) elpa (-nd 169) 1,371 453 1,252 334 0 500 1,000 1,500 全実行時間 cdiaghg 経過時間  [ se c ] scalapack elpa 実行時オプションの指定(−nd 169) •  Scalapack も ELPA も実行時オプションの指定(−nd 169)の指定で 同様に全実行時間が 1.05倍 の高速化 à ELPA も Scalapack と同様の指定で高速化が可能である。 •  無指定 9 x 9 = 81 プロセスで実行 •  13 x 13 = 169 プロセスで実行 −nd 169 を指定 1.1倍 1.05倍高速 1.4倍 1.4倍 1.2倍高速 15

(16)

まとめ

Quantum ESPRESSO (PWscf) v 6.1 における使用ライブラリを変えての
 実行時間の比較(Scalapack, ELPA, lapack の比較)

ノード数 192 (3次元形状指定 [4 x 4 x 12])
 ハイブリッド並列(OMP_NUM_THREADS=8) •  ELPAが最短 à Scalpack より、1.1 倍高速 •  cdiaghg ルーチンにおける、固有値ライブラリ(zhegv)部分の違いが大きく寄与している ことがわかった。 •  zhegv部分のMPI待ちと、MPI通信の経過時間が大きく減少している
 à ELPAは、Scalpack よりも通信方法が大きく改善されていることがわかった。 •  Scalapack より、ELPAの方が計算はコストがかかっている。
 à ELPAは、計算にコストをかけて、通信で得するようになっている。 •  Scalapack も ELPA も実行時オプションの指定(−nd 169)の指定で
 同様に全実行時間が 1.05倍の高速化
 à ELPA も Scalapack と同様の指定で高速化が可能である。 16

(17)

付録

(18)

コスト分布調査:fipp測定結果(Scalapack と ELPAの比較) 表:基本プロファイラによるアプリケーションの手続きコスト分布(MPIプロセス数192[TOFU: 4x4x12]の場合) No. Cost             コールグラフ調査による   (手続きコスト)   処理フローにおける該当の     Barrier   MPI   手続き名 有(○)/無(ー)     (%) (スレッド同期 待ちのコスト) (%) (MPIライブラリ

のコスト) (%)   init_run electrons forces stress

  77,849,640 100 558,933 0.72 26,117,396 33.55 Application   1 15,600,174 20.04 5,084 0.03 14,699,602 94.23 scatter_mod.fft_scatter_ ○ ○ ○ ○ 2 12,260,470 15.75 191,083 1.56 0 0 fft_scalar_fftw.cft_2xy._OMP_3_ ○ ○ ー ー 3 10,790,797 13.86 160,627 1.49 0 0 fft_scalar_fftw.cft_2xy._OMP_4_ ○ ○ ー ○ 4 6,844,378 8.79 0 0 6,844,305 100 mp_synchronize_ ○ ○ ○ ○ 5 4,029,372 5.18 1,814 0.05 0 0 stres_us.stres_us_k_ ー ー ー ○ 6 3,779,652 4.86 5,290 0.14 3,388,666 89.66 zhpev_module.pzheevd_drv_ ○ ○ ー ー 7 3,172,423 4.08 0 0 0 0 vloc_psi_k._OMP_3_ ○ ○ ー ー No. Cost             コールグラフ調査による   (手続きコスト)   処理フローにおける該当の     Barrier   MPI   手続き名 有(○)/無(ー)     (%) (スレッド同期 待ちのコスト) (%) (MPIライブラリ

のコスト) (%)   init_run electrons forces stress

  81,034,984 100 615,865 0.76 24,681,216 30.46 Application   1 15,674,784 19.34 5,267 0.03 14,794,361 94.38 scatter_mod.fft_scatter_ ○ ○ ○ ○ 2 12,283,632 15.16 169,692 1.38 0 0 fft_scalar_fftw.cft_2xy._OMP_3_ ○ ○ ー ー 3 10,767,466 13.29 140,233 1.30 0 0 fft_scalar_fftw.cft_2xy._OMP_4_ ○ ○ ー ○ 4 6,164,210 7.61 0 0 6,164,017 100 mp_synchronize_ ○ ○ ○ ○ 5 4,831,304 5.96 78,541 1.63 495,789 10.26 elpa1_compute.elpa_transpose_vectors_complex_double._OMP_3_ ○ ○ ー ー 6 4,001,447 4.94 1,806 0.05 0 0 stres_us.stres_us_k_ ー ー ー ○ 7 3,205,774 3.96 0 0 0 0 vloc_psi_k._OMP_3_ ○ ○ ー ー Scalapack ELPA ELPAでは、MPIのコストが大幅に減少 18

(19)

旧バージョン5.4.0(scalapack) との全実行時間の比較

nodes (= MPI processes) : 192 [TOFU: 4x4x12] theareds : 8

コンパイルオプション

DFLAGS = -D__FFTW -D__MPI -D__PARA -D__SCALAPACK
      -D__OPENMP $(MANUAL_DFLAGS)

FFLAGS = -O3 -Nsetvalue -Kopenmp -Kparallel,optmsg=2 -Nlst=t は、同じ •  バージョンが変わっても実行時間は同じ 448.75 448.76 664.21 661.51 25.28 25.34 229.53 227.28 1,371 1,367 0 200 400 600 800 1000 1200 1400 v6.1(scalapack) v5.4.0(scalapack) 経過時間 [sec]

init_run electrons forces stress other 全実行時間

(20)

PWscf フロー図(旧バージョン v5.4.0)

Start

read_input

Stop

qmmm run_pwscf stop_run init_run electrons forces stress punch mp_global iosys setup check_stop 計算のセットアップを行う。 電子状態をself-consistentに計算する。 原子に対する力を計算する。 系の応力を計算する。 20

参照

関連したドキュメント

東京大学 大学院情報理工学系研究科 数理情報学専攻. hirai@mist.i.u-tokyo.ac.jp

情報理工学研究科 情報・通信工学専攻. 2012/7/12

東北大学大学院医学系研究科の運動学分野門間陽樹講師、早稲田大学の川上

海洋技術環境学専攻 教 授 委 員 林  昌奎 生産技術研究所 機械・生体系部門 教 授 委 員 歌田 久司 地震研究所 海半球観測研究センター

経済学研究科は、経済学の高等教育機関として研究者を

瀬戸内千代:第 章第 節、コラム 、コラム 、第 部編集、第 部編集 海洋ジャーナリスト. 柳谷 牧子:第

話題提供者: 河﨑佳子 神戸大学大学院 人間発達環境学研究科 話題提供者: 酒井邦嘉# 東京大学大学院 総合文化研究科 話題提供者: 武居渡 金沢大学

高村 ゆかり 名古屋大学大学院環境学研究科 教授 寺島 紘士 笹川平和財団 海洋政策研究所長 西本 健太郎 東北大学大学院法学研究科 准教授 三浦 大介 神奈川大学 法学部長.