「京」でのOpenFOAM 支援内容と実績 2014.10.17 RIST神戸センター 産業利用推進室.AP東京 井上 義昭 1 コンテンツ 支援課題状況 インストール支援 実行環境支援(ステージング方式) 性能分析・評価支援 • プロファイラ (基本fipp/詳細fapp) • RIST最適版(通信処理、C++最適化フラグ) • 支援課題での実例トピック 可視化プリポスト支援 AP東京ファシリティ 2 OpenFOAM支援状況 # 課 題 ※ 支援 状況 支援期間 (延べ月) ミーティング実施回数 報告 レポー RIST RIST神戸 利用者 ト数 office AP東京 センタ 5ヶ月 3 1 1 3 1 備考 1 T 完了済み 2 E 継続(2回目) 10ヶ月 3 3 J 継続(2回目) 12ヶ月 4 5 1 4 K 実施中 4ヶ月 2 2 1 今年度 開始 5 S 実施中 3ヶ月 2 2 1 同上 ※「高度化支援依頼」の申請手続きの課題のみであり、京のヘルプデスク窓口において 実施されたOpenFOAMに関しての対応課題は含まれていない. 尚、課題名としては、課 題IDではなく、ユニークな任意の1文字で代用. ヘルプデスク 高度化支援 https://www.hpci-office.jp/pages/support https://www.hpci-office.jp/pages/k_koudoka OpenFOAM支援状況 # 課題 Version Solver サイズ ※1 並列 数 分割 支援内容 ※2 1 T 2.1.0 chanelDNS 6710万2.68億 2000~ 4000 Simple/ インストール支援、 Scotch 実行環境支援(STG方法), 性能評価(fipp/fapp分 析)、性能改善 2 E 2.1.0 2.2.0 interFoam 4000万 768 Simple インストール/実行支援 プリポスト処理支援 性能評価/改善(2.7倍) 3 J 2.1.0 2.2.1 interFoam 9700万 ~1280 Scotch /Metis インストール/実行支援、 可視化支援 (ParaView,EnSight) 性能改善(1.4倍) 4 K 2.2.1 pisoFoam 3550万, 1.4億 1536~ 6144 hierarc hical インストール/実行支援 性能評価/改善(1.3倍) 5 S 2.2.1 pisoFoam (pcg,amg) 9800万, 6億 1536~ 12288 hierarc hical 性能分析(メモリサイズ)、 評価支援/改善(1.3倍) ※1:性能評価用データのサイズ/並列数 ※2:STG:ステージング方法、 fipp/fapp:基本/詳細プロファイラ 4 対象:全課題 インストール支援 • 神戸センターで発行のパッチをベースに、「京」初心者のOpenFOAM利用者向けに、 東京RISTで「OpenFOAMインストールとテスト実行」のドキュメントを発行 • 内容は、1章ダウンロードとビルド、2章テスト実行、2.1共用ディレクトリでの実行、 2.2ランクディレクトリでの実行をサンプルシェルを用いて具体的に説明 • ソルバーの実行方法だけでなく、ステージングやデータ分割、リスタートファイルの作 成など実践での実行サイクルをフルカバー (ランクディレクトリ使用の場合) OpenFOAM実行ファイルのtar圧縮 並列実行数に合わせたdecompose 分割processorフォルダーのtar圧縮 サイクル OpenFOAM 並列実行(最長24H) 結果ファイルから次のソルバ実行の入 力となる最終Timeスタンプ抽出 5 実行環境支援(STG方式) 対象:全課題 • • • ※STG:ステージング 「京」では、大規模実行向けに、他のJOBのIO負荷の影響を軽減させるべく、 グローバルFSとローカルFS (計算ノード専用)間のステージング機能を提供 大規模構成での実行の場合、STGの設定が性能に大きく影響するが、「京」 独自機能のため、不慣れな利用者は当初戸惑いがち. RISTでは、サンプルシェルや性能分析で作成したシェルを提供 計算ノード群 (ジョブ実行) ログインノード (プログラム開発、ジョブ操作) 入力データ データ領域 グローバル FS /data ファイルコピー 入力データ 出力データ ※ プログラム編集 ソースプログラム ステージイン/アウト ホーム領域 グローバル FS /home 一時保存領域 ローカル FS /work 入力データ 出力データ コンパイル/リンク ロードモジュール ロードモジュール ロードモジュール ファイルコピー ジョブスクリプト ジョブスクリプト ジョブ投入 ※ ホーム領域へのステージングも可能 ジョブ実行 6 STGのためのtar処理時間 ※ • STG方式ではプログラムの実行の前後にTar処理が必要となり、このtarを効率的 (並列等)に実行することは、ジョブの経過時間の軽減に貢献する場合がある. (グローバルFS) Tarball 圧縮 STGIN Tar処理※ (計算node/ローカルFS) Tarball解凍 (入力data + 実行file) OpenFOAM実行 (MPI並列) ジョブ経過時間 Tar処理※ (グローバルFS) Tarball圧縮 (計算結果) STGOUT Tarball 解凍 ※STG:ステージング • 一方、計算nodeのローカルFS側では、2つのDIR(directory)方式が有り. DIR方式 内容(留意点) 用途 共有DIR 全MPIランク共通データ (ランク間のIO競合発生) OpenFOAM実行ファイル、 共通dataのsystemフォル ダー等 ランク専用(他ランクとのIO 競合が軽微) MPIプロセス毎に分散さ れたProcessorフォルダー ランクDIR Tar圧縮・解凍の並列化 通常、不可× 並列処理が可能◎ (MPI プロセスでの並列tar処理) 7 STG方式とtar時間比較 対象:課題E ※STG:ステージング [実例1] 対象:課題K 192 mpi 6144 mpi [実例2] 共通dataもランクDIR化 して並列tarでランク数 分展開、ランク数巨大化 でIO競合発生 結果dataのtar圧縮時間(共有DIR のため並列処理不可) ランクDIR化、 並列tarで大幅 時間短縮 共通dataは共有DIR上 に1つだけ高速展開、ア クセス用にシンボリック linkをランクDIRに作成 ④ ⑤ case DIR方式 Tar形式 Tar実行 性能 ① 共有DIR bz2 シングル実行 × tgz シングル実行 △ tgz 並列実行 ◎ ② ③ ランクDIR case Processor フォルダ 共通データ system,constants 性能 ④ ランクDIR ランクDIR IO競合発生 × ⑤ ランクDIR 共有DIR(file) & ランクDIR (ln –s ) 軽速tar,IO競合 微小 ◎ *1 *1 Tar形式:tgz, tar実行: 並列実行(⑤は一部シングル) 8 対象:全課題 性能分析、評価支援 • ユーザから実データ(中規模.短時間モデル)を提供して 頂き、実際の特性・傾向に近いもので分析.評価 • 「京」での実データでの実行、プロファイラ データを採取 し、ボトルネックなどを調査分析、性能評価結果を報告 • 実際のプロダクション ランでの改善策を提言 • 課題共通の改善については、RIST提供の次期の京用 ビルドのパッチや実行手順のドキュメント等に反映 9 性能分析 基本プロファイラ(fipp分析) (fipp採取データをIDE/profilerで表示) コスト大の関数名 インバランス表示 pisoFoam 3027mpi 表示サンプル > (赤:MAX,緑:AVG,青:MIN) コスト大の関数を調査、このデータでは、DICPreconditioner,lduMatrix,PCGや、MPI通信主体 のallReduce等が重く、これらの詳細プロファイラ(fapp)の採取を行い分析を続けます 又、BarChartの色の長さからMPIランクのインバランスの概要を把握し、必要に応じて特 定関数のランク詳細(右図) を表示し、分散の仕方など の改善なども検討します. DICPrecond rank 10 性能分析 詳細プロファイラfapp分析 Time(s) interFoam このデータでは、並列数が 640を超えた辺りから、実行 時間が急増!! 演算系処理 pEqn時間は 並列数にス ケールし減少 データ交換 (MPI通信) AlphaEqn 時間の急増 が原因 ここでは、fippで調査し たコスト大の関数に対 して詳細プロファイラ (fapp)を採取し、各関数 の実行時間をグラフ化 このデータでは、MPI通 信関連の関数 (AlphaEqn>exc3)がボト ルネック化していること が判明、ソースコードを 詳細に調査し、改善策 を検討した. (ソースコード) exchange.C >combineGatherScatter.C MPI並列数 fappでは指定した採取区間の実行回数/経過時間/UserTimeに加えて、HWモニター情報(Mflops,Mips, メモリスループット,SIMD率、キャッシュヒット率等)、MPI特性情報(MPI命令別の経過時間/回数/MSG長、 その分布)などの詳細情報が採取できる 11 RIST.opt版 Time(s) 通信処理の最適化 実行時間内訳(fapp分析) 大幅性能改善 Alpha時間 (通信) 大幅削減 1280mpi ①標準のOpenFOAMでは、 gather/scatterの集団通信 をsend/recvの一対一通 信で実装、その通信処理 を並列動作するため、 通信順序/通信先を、Tree 構造(binary tree)に設定 ②しかし、その処理の一部 (scatter)に性能面での不 具合(通信順序に、並列性 が乏しい)がある事が判明、 ③それを是正※する様に、 RISTでプログラムを改善 ※改善ソースは、近々に標準パッチとして、「京」利用者に提供予定. 尚、当該の性能面での不具合は、 MPI通信の基本性能に依存するが、1000mpi並列以上でないと顕著化しない、と推測される 12 RIST.opt版 C++最適化Flag(-Kfast)適応 コスト大の演算関数に限定して、「京」での最速・最適化flagの-Kfastでコンパイルする. code 修正前 最適化flags DICPreconditioner.C -O3 -Kfast lduMatrixATmul.C -O3 同上 PCG.C -O3 -Kfast -DvectorMachine(*1) *1:sumProd,sumMagの マクロ展開をvecter型に 変更 scalarField.C -O3 -Kfast, nofp_relaxed -DvectorMachine -Kfastだけでは異常終了 PBiCG.C -O3 -Kfast, -DvectorMachine sumProd,sumMagを include(*2) smoothSolver.C -O3 -Kfast, -DvectorMachine 同上 備考 (*2)sumProd/sumMagを使用するため、/fields/Fields/Field/FieldFunctions.Cをincludeしているので、親ごと最適化 flagでコンパイルする 13 実例:課題J データの大規模(「京」に相応しく) 実行効率% ③RISTopt版採用 ②大規模化 ①中規模化 Mpi並列数 順次、データ規模を「京」に相応しく、大規模化していき、RISTopt(最適バージョン)で実測、 結果検証にも協力頂きました!性能も640並列で効率1.8%(1.4倍)を発揮 14 実例:課題E インバランスの改善(診断) 詳細プロファイラで コスト大関数Surface に、異常なimbalance が存在している事が 判明、詳細を調査. ①Elapsed time ランク144から以降のrankでElapsed時間 が大幅に増加 ランク144~192 rank 一部の特定rankの System-timeが異常値 を示しており、これが Imbalance発生の原因. ②system time こちらもランク144から以降のrankで 大幅に増加、これが原因で①が発生 rank ランク144~192 System-timeを増加させる事象には、IO処理などの他に、演算例外(underFlow,ゼロ割) 等があり、今回の関数ではIOは発生しないため、演算例外の可能性を調査した. Sys-time 15 実例:課題E ExecTime(SEC) インバランス改善(-Kns option指定) UP比 コンパイルオプション-Kns を追加してビルドした. (Kns:non-standard floating point mode) System-timeが大幅減少、 異常なimbalanceが解消し、 大幅な性能UPを得ること に成功、192mpiでは実行 時間(logのExecTime)で、 2.7倍の高速化となった. mpi数(分割形状) -Knsは、FPUをnon-standard floating point modeで初期化するもので段階的 underflowの処理を無効にしての実行となり、指摘の特定rankで発生しているsystimeの増加によるimbalanceを押さえるものである. 尚、underflow発生時、HWで 即ゼロをセットするため、IEEEの規格外となるため、結果検証が必要となる. 16 実例:課題K IO改善(Sampling採取の削減) 35Mcell Time(sec) 1000回目 20回おき イタレーション回数、20回周期や 1000回目で急増の階段有り! 6144mpiは段差拡大し、実行時間が 3072mpiより遅くなってしまっている. 性能逆転 35Mcell Time(sec) イタレーションloop時間 初期処理(初回exec.Time) Loop時間比 ① イタレーション ② RISTopt版で2割程度性能UPするも、 高並列(6144mpi)でスケールが飽和、 ③ 原因は頻繁に採取していたsampling と判明、Samplingの採取Intervalを長 くして高スケール化(②>③)に成功! 尚、FX-10よりも3割高速の性能①と なっている. K_RISTopt with Sampling ※base:標準ビルド版 17 実例:課題S MB 高並列でのメモリサイズ問題(調査中) 98Mcell MAX MEMORY SIZE (.iファイル情報) MAX_MEMORY SIZE(USE)を調査、3072mpi以降、 急増. 京ではnode当たり14GB以内の制限のため、 メモリ不足で実行不可! Memory不足 でエラー KB 98Mcell MEMORY SIZE内訳 Proc.0 Mpi数 Mpi数 12288MPIを超える実行には、 この問題の解決が不可欠 現在、詳細を調査、改善を検討中. (有志の皆様のご支援、協力を!) 処理別にメモリ使用量を調査、イタレーション loop処理での量はmpi数にscalして減少する が、初期処理(setRoot,createMesh)での量が、 3072mpiから急増! 18 実例:課題S Time(sec) 大規模データ&高並列スケール endT=2.01 98Mcell ratio 大規模(98M)及び、超大規模(600M)での高並 列(1536~6144MPI)実行. 並列化率:99.99897% 98Mデータでは、RISTopt版は2割高速であり、 初期処理は並列数増加で急増するが、Loop処 理性能はMPI数に対し健全にスケールしている. Time(sec) ユーザビルド.1536mpi RISTopt.1536 600Mcell endT=2.01 ratio Mpi数 600Mデータでは、演算処理のコストが増えたため か、更にRISTopt版は3割程度、高速となり、 12288mpi並列での性能が期待される. 標準ビルド版 ユーザビルド版 19 実行効率とデータサイズ 実行効率% 97M 600M 98M 140M 実行効率(MFLPS%peak)をグラフ化 した. (※RISTopt版イタレーションloop性能) 当然、データやSolverの種類に大きく 依存するが、同じ種類の場合、 データサイズが大で、並列数が 少ない時が高効率となる事が判る. 35M mpi数 MPIプロセス当たりのデータサイズ で、ノーマライズしてみた. 実行効率% MPIプロセス当たり,20Kcel程度以上 で1-1.5%規模であり、 dataSize[Kcel]/proc 逆に、2%を超えるには50-100Kcel 程度が必要と推測される. 20 対象:課題J/E 可視化プリポスト支援 「京」の大規模計算のプリポスト処理用にサーバが提供され、 計算結果の可視化に活用 プリポスト処理サーバ(2014年7月時点) 「京」システム(一部) プリポスト処理 サーバ フロントエンド サーバ インターネット ssh 内部ネットワーク 計算結果データ ユーザ saver 利用形態 pps1 バッチ pps2 バッチ pps3 インタラクティブ pps4 インタラクティブ OS/SW Red Hat Enterprise Linux 6.5/ Intelコンパイラ, GCC, OpenMPI, MPICH2, RHEL6.5の標準パッ ケージに含まれるソ フトウェア HW構成(CPU,メモリ) Xeon X7560x8cpu ,1TB (8core/2.26GHz/24MB) Xeon X7560x8cpu ,512GB (8core/2.26GHz/24MB) Xeon X7560x8cpu : 2TB (8core/2.26GHz/24MB) Xeon E5-2637x2cpu,512GB (2core/3GHz/5MB) https://www.hpci-office.jp/pages/aics_riken プリポスト処理サーバを利用したリモートインタラクティブ可視化 及びバッチ可視化を支援(手順書の提供、技術打ち合わせ) リモートインタラクティブ可視化(ParaView, EnSight※): 「京」システム内のデータを直接読み込み、ローカルマシンのGUIでインタラクティブ に可視化. ※EnSightはAP東京で利用可能 バッチ可視化(ParaView):可視化画像を連続作成. ユーザデータを使用して可視化を試行し、可視化ソフト利用の立 ち上がりを支援 21 対象:課題J/K/S AP東京ファシリティ 場所:東京都品川区北品川2-32-3 六行会総合ビル7階 RIST東京(京急 新馬場から徒歩2分) http://tokyo.rist.jp/ap-tokyo/ 提供サービス:コンシェルジュ的相談窓口、技術相談窓口 利用設備:個別作業室(PC1台)、高速FTP環境、可視化サーバ – AP東京と「京」コンピュータ間を専用10Gbps回線で接続 AP東京 10Gbps SINET4 ・実効100~150MB/sec (従来1Gbpsの2~3倍高速) ・OpenFOAMデータ実績: 600Mcel/6144分割データ (約30GB)の転送に約40分 • 可視化サーバ Xeon 2.5GHz/16core/512GB、CentOS6.5 利用可視化ソフト OpenFOAMでの使用実績 ParaView での小規模データを可視化試行 データ分割(decompose)実行(140Mcel/12,288分割)+「京」への高速転送 22 まとめ • ご清聴ありがとうございました. • 今回は、RISTで支援した課題に関し、RIST最適化版の性能 や実際に遭遇した性能問題とその対策等を主体に紹介さ せて頂きました. • RISTには、「京」でのOpenFOAMの実行環境支援、性能評 価について、それなりに経験を積んできているのがご理解 頂けたら幸いです. • 今後も、引き続き、「京」でのOpenFOAMを利用する課題に 関して、微力ながら支援を続けて行きたい、と思います 23 End 24
© Copyright 2024