Movatterモバイル変換


[0]ホーム

URL:


PPTX, PDF1,748 views

DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化

DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化

Embed presentation

Download to read offline
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化富岡 稔, 澤原 雅隆, 藤原 巧, 𠮷藤 尚生
目次前回までの復習– 目標– 疎行列形式の変更– Cuthill-McKee法による並列化の実装時間計測さらなる高速化まとめ・今後の予定© 2019 Fixstars Corporation, All rights reserved.1
目次前回までの復習– 目標– 疎行列形式の変更– Cuthill-McKee法による並列化の実装時間計測さらなる高速化まとめ・今後の予定© 2019 Fixstars Corporation, All rights reserved.2
目標OpenFOAMのスレッド並列化を行いたい– メニーコア環境だとハイブリッド並列の方がフラットMPIよりも有利OpenFOAMはそのままではスレッド並列化が困難であるため、コードに手を加える必要がある© 2019 Fixstars Corporation, All rights reserved.3
疎行列形式の変更並列化のために「lduMatrix形式」から「CSR形式」に変更CSR形式を用いることで、疎行列ベクトル積(SpMV)をスレッド並列化可能に© 2019 Fixstars Corporation, All rights reserved.𝑈𝐿𝐷 AlduMatrix形式 CSR形式OpenFOAMスレッド並列化のための基礎検討 (http://proc-cpuinfo.fixstars.com/2018/02/openfoam-thread/)4
Cuthill-McKee法CSR形式でもDIC前処理はデータの依存性により並列化が不可能Cuthill-McKee(CM)法により依存を排除し、DIC前処理をスレッド並列化可能に© 2019 Fixstars Corporation, All rights reserved.Cuthill-McKee法CuthillMckee法によるOpenFOAMのDIC前処理に関するスレッド並列化 (http://proc-cpuinfo.fixstars.com/2018/06/openfoam/)5
目次前回までの復習– 目標– 疎行列形式の変更– Cuthill-McKee法による並列化の実装時間計測さらなる高速化まとめ・今後の予定© 2019 Fixstars Corporation, All rights reserved.6
時間計測 これまではプロファイラが未実装– 実行時間の比較ができていない プロファイラを実装し、オープンCAE学会がベンチマークとして作成したチャネル流問題[1]を使用して時間を計測 設定– solver: pimpleFoam– 5ステップだけ計算 環境– Xeon Phi 7210 (64コア, 256スレッド) OpenFOAM (Foundation版) Git-ID:16b559c1© 2019 Fixstars Corporation, All rights reserved.[1] OpenFOAM Benchmark Test for Channel Flow (Re_tau=110),https://gitlab.com/OpenCAE/OpenFOAM-BenchmarkTest/tree/master/channelReTau1107
時間計測(変更なし版)結果PCGの実行時間が大部分を占めている– PCGのみに着目すればよい© 2019 Fixstars Corporation, All rights reserved.80100200300400500600700800900100011001200CoreLoop pEqn PCG CoreLoop pEqn PCGDDR4 MCDRAM実行時間[s]全体の実行時間UEqn pEqn PCG 疎行列ベクトル積 DICcalcReciprocalDDIC前処理 WAXPBY normFactor sumMag sumProd
スレッド並列化の前に…スレッド並列化する前に、フラットMPI並列ではどれくらい高速化できるのか確認DDR4では32倍, MCDRAMでは84倍– スレッド並列でもこれくらい速くすることが目標9© 2019 Fixstars Corporation, All rights reserved.プロセス 数 DDR4 MCDRAM実行時間[s] 高速化率 実行時間[s] 高速化率1 208 x1 210 x164 9.3 x22 5.5 x38128 6.5 x32 2.5 x84256 18 x12 11 x19
CSR化疎行列形式をlduMatrix形式からCSR形式に変更した際に、実行時間に変化があるかを確認© 2019 Fixstars Corporation, All rights reserved.𝑈𝐿𝐷 AlduMatrix形式 CSR形式10
時間計測DIC前処理の実行時間が増加© 2019 Fixstars Corporation, All rights reserved.11010020030040050060070080090010001100120013001400lduMatrix形式 CSR形式 lduMatrix形式 CSR形式DDR4 MCDRAM実行時間[s]PCG疎行列ベクトル積 DICcalcReciprocalD DIC前処理 WAXPBY normFactor sumMag sumProd (other)
行列のデータの持ち方を変更DIC前処理の実行時間が増加してしまったアクセスパターンの違いが原因?– lduMatrix形式では全ての要素が連続アクセス– CSR形式では行列全体を持っているため一部のアクセスが連続でないCSR形式において上三角部分と下三角部分も別に保持し、それを使用© 2019 Fixstars Corporation, All rights reserved.AL12
変更結果lduMatrix形式と同程度になった© 2019 Fixstars Corporation, All rights reserved.13010020030040050060070080090010001100120013001400変更前 変更後 変更前 変更後lduMatrix形式 CSR形式 lduMatrix形式 CSR形式DDR4 MCDRAM実行時間[s]PCG疎行列ベクトル積 DICcalcReciprocalD DIC前処理 WAXPBY normFactor sumMag sumProd (other)
スレッド並列化SpMVおよびDIC前処理は並列化可能– SpMV: CSR化– DIC前処理: CSR化 + CM法OpenMPを用いてスレッド並列化OpenMPの設定は明記されていない場合はデフォルト(256スレッド)© 2019 Fixstars Corporation, All rights reserved.14
01002003004005006007008009001000lduMatrix形式 CSR化のみ 並列化 lduMatrix形式 CSR化のみ 並列化DDR4 MCDRAM実行時間[s]PCG疎行列ベクトル積 DICcalcReciprocalD DIC前処理 WAXPBY normFactor sumMag sumProd CuthillMcKee (other)時間計測スレッド並列化によるSpMVおよびDIC前処理の高速化を確認© 2019 Fixstars Corporation, All rights reserved.15DIC前処理x3.3SpMVx11.4DIC前処理x3.4SpMVx13.5CM法 CM法
目次前回までの復習– 目標– 疎行列形式の変更– Cuthill-McKee法による並列化の実装時間計測さらなる高速化まとめ・今後の予定© 2019 Fixstars Corporation, All rights reserved.16
スレッド数の調整スレッド数を変えたときにSpMVおよびDIC前処理の実行時間が変化するかを確認 (単位[s])スレッド数によって、実行時間が大きく異なる場合があるため、調整が必要© 2019 Fixstars Corporation, All rights reserved.スレッド数 DDR4 MCDRAMSpMV DIC前処理 SpMV DIC前処理64 17.6 123.6 13.8 122.7128 21.0 108.7 17.7 105.7256 27.8 160.8 23.7 152.117
行列の並び替えDIC前処理を行う際に、アクセスする行列の要素が飛び飛びになっている– キャッシュミスを誘発並び替えを行って実行時間の変化を確認© 2019 Fixstars Corporation, All rights reserved.18
行列の並び替えCSR形式の場合は、行ごとに列番号を変換しながらコピーを行えばよい行列をL, D, Uに分けた後で並び替えを行うと、L, Uが三角行列にならないことに注意© 2019 Fixstars Corporation, All rights reserved.1 a bA 2B 3 c dC 4D 53 c d BC 4D 5b 1 aA 2並び替え19
ベクトルの並び替え前処理行列を𝑀とおくと、前処理は以下の式で表される𝑧 = 𝑀−1𝑟並び替えた前処理行列 𝑀′= 𝑃𝑀𝑃 𝑇を用いると、前処理は以下の通りに計算できる𝑧 = 𝑀−1𝑟 = 𝑃 𝑇𝑀′𝑃 −1𝑟= 𝑃 𝑇𝑀′−1𝑃𝑟1. 𝑟′= 𝑃𝑟2. 𝑧′ = 𝑀′−1𝑟′3. 𝑧 = 𝑃 𝑇 𝑧′ベクトルの並び替えの処理も追加で必要© 2019 Fixstars Corporation, All rights reserved.20
行列の並び替えの結果実行時間の変化を確認 (単位[s])DIC前処理の変更前後の最短の実行時間はそれぞれ105秒と39秒– 約2.7倍の高速化© 2019 Fixstars Corporation, All rights reserved.スレッド数 DDR4 MCDRAMDIC前処理 CM法 DIC前処理 CM法変更前 変更後 変更前 変更後 変更前 変更後 変更前 変更後64 123.6 61.7 95.5 112.8 122.7 39.4 103.3 119.2128 108.7 80.5 94.1 110.0 105.7 50.8 99.8 118.2256 160.8 164.6 97.4 110.5 152.1 91.9 103.1 120.621
DDR4 vs. MCDRAM変更前は実行時間にあまり差がなかったが、高速化によって差が大きくなった22© 2019 Fixstars Corporation, All rights reserved.020406080100120140160180DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM64 threads 128threads 256 threads 64 threads 128 threads 256 threads変更前 変更後実行時間[s]DIC前処理
ほかの部分の並列化ボトルネックだった部分が高速化されたことによって、ほかの部分が重くなってきた– WAXPBY– リダクション演算(sumMag, sumProd)これらを並列化する© 2019 Fixstars Corporation, All rights reserved.2301002003004005006007008009001000lduMatrix形式 CSR化のみ 並列化 lduMatrix形式 CSR化のみ 並列化DDR4 MCDRAM実行時間[s]PCG疎行列ベクトル積 DICcalcReciprocalD DIC前処理 WAXPBY normFactor sumMag sumProd CuthillMcKee (other)
WAXPBYの並列化WAXPBY: 𝐰 = 𝑎𝒙 + 𝑏𝒚 という形で表される計算ループ間に依存関係がないため並列化可能© 2019 Fixstars Corporation, All rights reserved.for (int i = 0; i < n; i++) {w[i] = a * x[i] + b * y[i]}#pragma omp parallel forfor (int i = 0; i < n; i++) {w[i] = a * x[i] + b * y[i]}24
WAXPBYの並列化の結果並列化後の平均実行時間を確認高速化率– DDR4: x19– MCDRAM: x67© 2019 Fixstars Corporation, All rights reserved.25スレッド数 DDR4 [ms] MCDRAM[ms]1 25.961 26.13964 1.339 0.440128 1.342 0.387256 1.539 0.493
WAXPBYの並列化の結果並列化後の平均実行時間を確認高速化率– DDR4: x19– MCDRAM: x67© 2019 Fixstars Corporation, All rights reserved.26051015202530DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM1 thread 64 threads 128 threads 256 threads平均実行時間[ms]WAXBPY
リダクション演算の並列化リダクション演算の例として内積がある内積(𝑠 = 𝒙 𝑇𝒚)は以下のように計算できるこのような計算を並列化するには、リダクション指示節を用いればよい© 2019 Fixstars Corporation, All rights reserved.double s = 0.0;for (int i = 0; i < n; i++) {s += x[i] * y[i]}double s = 0.0;#pragma omp parallel for reduction(+:s)for (int i = 0; i < n; i++) {s += x[i] * y[i]}27
リダクション演算の並列化の結果© 2019 Fixstars Corporation, All rights reserved.sumMag sumProdDDR4 x31 x25MCDRAM x47 x56並列化後の平均実行時間を確認高速化率28スレッド数 sumMag sumProdDDR4[ms] MCDRAM[ms] DDR4[ms] MCDRAM[ms]1 14.907 14.962 18.402 18.26764 0.480 0.317 0.727 0.325128 0.565 0.343 0.780 0.364256 1.253 1.137 1.380 1.101
リダクション演算の並列化の結果© 2019 Fixstars Corporation, All rights reserved.sumMag sumProdDDR4 x31 x25MCDRAM x47 x56並列化後の平均実行時間を確認高速化率2902468101214161820DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM DDR4 MCDRAM1 thread 64 threads 128 threads 256 threads平均実行時間[ms]sumMag sumProd
SpMVの高速化率についてSpMVが MCDRAM-256スレッド でも13倍しか速くなっていないのはおかしい計測範囲内に含まれていたupdateMarixIntefaces(...)(未並列)が原因分けて計測した時のSpMVの高速化率30© 2019 Fixstars Corporation, All rights reserved.スレッド数 DDR4 MCDRAM64 x24 x34128 x25 x43256 x24 x68
現状のスレッド並列化の結果スレッド並列化の結果PCG全体の高速化率– DDR4: x4.3, MCDRAM: x4.8© 2019 Fixstars Corporation, All rights reserved.3101002003004005006007008009001000変更前 64 threads 128 threads 256 threads 変更前 64 threads 128 threads 256 threadsDDR4 MCDRAM実行時間[s]PCG疎行列ベクトル積 Cuthill-McKee法 DICcalcReciprocalD DIC前処理WAXPBY normFactor reorderVector sumMagsumProd updateMatrixInterfaces (other)
現状のスレッド並列化の結果個別の高速化率– DIC前処理があまり速くなっていない並列化前にはなかったCM法が、実行時間のかなりの割合を占めている© 2019 Fixstars Corporation, All rights reserved.DDR4 MCDRAMSpMV x25 x68DIC前処理 x6.7 x10WAXPBY x19 x67sumMag x31 x45sumProd x21 x44(理想高速化率) x32 x8432
目次前回までの復習– 目標– 疎行列形式の変更– Cuthill-McKee法による並列化の実装時間計測高速化まとめ・今後の予定© 2019 Fixstars Corporation, All rights reserved.33
まとめプロファイラを作成し、実行時間を計測したボトルネックであるPCGのSpMVおよびDIC前処理をスレッド並列化した。それに加えて様々な高速化も行った– SpMVは最大68倍の高速化– DIC前処理は最大10倍の高速化DIC前処理とCM法がボトルネックとなり、PCG全体の高速化率は4.8倍にとどまった– まだまだ高速化が必要© 2019 Fixstars Corporation, All rights reserved.34
今後の予定CM法の実行時間短縮– 疎行列の構造が変化しない場合は最初の1回の結果を使い回す– 差分更新が可能かを調査・検討– CM法自体の高速化(並列化)© 2019 Fixstars Corporation, All rights reserved.35
今後の予定DIC前処理の高速化– 前処理を行う度にベクトルの並び替えを行っており、ここでも時間がかかっている– 代わりにPCGの最初と最後にベクトルの並び替えを行うような実装に変更する• 𝐴𝒙 = 𝒃 ⇔ 𝐴′ 𝒙′ = 𝒃′ (𝐴′ = 𝑃𝐴𝑃 𝑇, 𝒙′ = 𝑃𝒙, 𝒃′ = 𝑃𝒃)– 高速化率は10倍→16倍に改善されるはず– 理想高速化率は84倍なのでそれでも足りてない。さらなる高速化方法を調査する© 2019 Fixstars Corporation, All rights reserved.前処理全体[s] 並び替え[s]39.7 14.1 (36%)36

Recommended

PPTX
Prelude to Halide
PDF
OpenFOAMスレッド並列化のための基礎検討
PDF
C++による数値解析の並列化手法
 
PDF
静的型付き言語用Just-In-Timeコンパイラの再利用による、動的型付き言語用コンパイラの実装と最適化
PDF
20151112 kutech lecture_ishizaki_public
PDF
CMSI計算科学技術特論B(4) アプリケーションの性能最適化の実例1
PDF
20141224 titech lecture_ishizaki_public
PDF
CMSI計算科学技術特論B(5) アプリケーションの性能最適化の実例2
PDF
SSII2018TS: 大規模深層学習
 
PDF
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
 
PPTX
Firebird2.5 がやってきた!
PDF
CMSI計算科学技術特論B(2) アプリケーションの性能最適化1
PPTX
The 53th Computer Vision Study@ kantou by Takamitsu Omasa
PDF
Math works gdlc2019
PDF
CMSI計算科学技術特論B(1) スーパーコンピュータとアプリケーションの性能
PPTX
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
PDF
第11回 配信講義 計算科学技術特論B(2022)
PDF
新しい並列for構文のご提案
 
PDF
optimal Ate pairing
PDF
マルチコアを用いた画像処理
PDF
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
PDF
動的計画法の並列化
PDF
第2回 配信講義 計算科学技術特論A (2021)
PDF
第4回 配信講義 計算科学技術特論A (2021)
PDF
研究生のためのC++ no.7
PPTX
8 並列計算に向けた pcセッティング
PPTX
GPUによる多倍長整数乗算の高速化手法の提案とその評価
PPTX
GPUによる多倍長整数乗算の高速化手法の提案
PDF
CMSI計算科学技術特論A(3) OpenMPの基礎
PDF
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用

More Related Content

PPTX
Prelude to Halide
PDF
OpenFOAMスレッド並列化のための基礎検討
PDF
C++による数値解析の並列化手法
 
PDF
静的型付き言語用Just-In-Timeコンパイラの再利用による、動的型付き言語用コンパイラの実装と最適化
PDF
20151112 kutech lecture_ishizaki_public
PDF
CMSI計算科学技術特論B(4) アプリケーションの性能最適化の実例1
PDF
20141224 titech lecture_ishizaki_public
PDF
CMSI計算科学技術特論B(5) アプリケーションの性能最適化の実例2
Prelude to Halide
OpenFOAMスレッド並列化のための基礎検討
C++による数値解析の並列化手法
 
静的型付き言語用Just-In-Timeコンパイラの再利用による、動的型付き言語用コンパイラの実装と最適化
20151112 kutech lecture_ishizaki_public
CMSI計算科学技術特論B(4) アプリケーションの性能最適化の実例1
20141224 titech lecture_ishizaki_public
CMSI計算科学技術特論B(5) アプリケーションの性能最適化の実例2

What's hot

PDF
SSII2018TS: 大規模深層学習
 
PDF
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
 
PPTX
Firebird2.5 がやってきた!
PDF
CMSI計算科学技術特論B(2) アプリケーションの性能最適化1
PPTX
The 53th Computer Vision Study@ kantou by Takamitsu Omasa
PDF
Math works gdlc2019
PDF
CMSI計算科学技術特論B(1) スーパーコンピュータとアプリケーションの性能
SSII2018TS: 大規模深層学習
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
 
Firebird2.5 がやってきた!
CMSI計算科学技術特論B(2) アプリケーションの性能最適化1
The 53th Computer Vision Study@ kantou by Takamitsu Omasa
Math works gdlc2019
CMSI計算科学技術特論B(1) スーパーコンピュータとアプリケーションの性能

Similar to DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化

PPTX
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
PDF
第11回 配信講義 計算科学技術特論B(2022)
PDF
新しい並列for構文のご提案
 
PDF
optimal Ate pairing
PDF
マルチコアを用いた画像処理
PDF
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
PDF
動的計画法の並列化
PDF
第2回 配信講義 計算科学技術特論A (2021)
PDF
第4回 配信講義 計算科学技術特論A (2021)
PDF
研究生のためのC++ no.7
PPTX
8 並列計算に向けた pcセッティング
PPTX
GPUによる多倍長整数乗算の高速化手法の提案とその評価
PPTX
GPUによる多倍長整数乗算の高速化手法の提案
PDF
CMSI計算科学技術特論A(3) OpenMPの基礎
PDF
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
PDF
第5回 配信講義 計算科学技術特論A(2021)
PDF
機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について
PDF
Hpc148
PDF
Parallel Computation Foundation's assignment 2
 
PDF
Parallel Computation Foundation's assignment 1
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
第11回 配信講義 計算科学技術特論B(2022)
新しい並列for構文のご提案
 
optimal Ate pairing
マルチコアを用いた画像処理
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
動的計画法の並列化
第2回 配信講義 計算科学技術特論A (2021)
第4回 配信講義 計算科学技術特論A (2021)
研究生のためのC++ no.7
8 並列計算に向けた pcセッティング
GPUによる多倍長整数乗算の高速化手法の提案とその評価
GPUによる多倍長整数乗算の高速化手法の提案
CMSI計算科学技術特論A(3) OpenMPの基礎
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
第5回 配信講義 計算科学技術特論A(2021)
機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について
Hpc148
Parallel Computation Foundation's assignment 2
 
Parallel Computation Foundation's assignment 1
 

More from Fixstars Corporation

PDF
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
PDF
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
PDF
いまさら聞けない!CUDA高速化入門
PPTX
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
PPTX
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
PDF
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
PDF
Fpga online seminar by fixstars (1st)
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
PDF
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
PDF
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
PPTX
第8回 社内プログラミングコンテスト 結果発表会
PDF
Jetson活用セミナー ROS2自律走行実現に向けて
PDF
株式会社フィックスターズの会社説明資料(抜粋)
PDF
株式会社フィックスターズ 会社説明資料(抜粋)
PDF
株式会社フィックスターズ 会社説明資料(抜粋)
PPTX
第8回 社内プログラミングコンテスト 第1位 taiyo
PPTX
第8回 社内プログラミングコンテスト 第2位 fy999
PDF
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
PDF
株式会社フィックスターズ 会社説明資料(抜粋)
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
いまさら聞けない!CUDA高速化入門
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
Fpga online seminar by fixstars (1st)
ARM CPUにおけるSIMDを用いた高速計算入門
いまさら聞けないarmを使ったNEONの基礎と活用事例
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
第8回 社内プログラミングコンテスト 結果発表会
Jetson活用セミナー ROS2自律走行実現に向けて
株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
第8回 社内プログラミングコンテスト 第1位 taiyo
第8回 社内プログラミングコンテスト 第2位 fy999
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
株式会社フィックスターズ 会社説明資料(抜粋)

DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化


[8]ページ先頭

©2009-2025 Movatter.jp