GeoFEM開発の経験から

Similar documents
PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - 07-pFEM3D-1.ppt [互換モード]

PowerPoint Presentation

Microsoft PowerPoint - GeoFEM.ppt [互換モード]

Microsoft PowerPoint - 08-pFEM3D-2F.ppt [互換モード]

Microsoft Word _001d_hecmw_PC_cluster_201_io.doc

Microsoft PowerPoint - 07-pFEM3D-1.ppt [互換モード]

Microsoft PowerPoint - MPIprog-F2.ppt [互換モード]

Microsoft PowerPoint - 06-S2-ref-C.ppt [互換モード]

Microsoft PowerPoint - 08-pFEM3D-2F.ppt [互換モード]

Microsoft PowerPoint - MPIprog-C2.ppt [互換モード]

T2K-FVM-03 1 方針 II で定義した局所分散データ構造 MPI の処理をできるだけ 隠蔽 初期化等環境設定 通信 hpcmw_eps_fvm_ という関数名 HPC-MW(HPC Middleware に由来 ) マルチフィジックスシミュレーション向け大規模並列計算コード開発基盤 並列ア

Microsoft PowerPoint - 06-S2-ref-F.pptx

コードのチューニング

Microsoft PowerPoint - 2_FrontISTRと利用可能なソフトウェア.pptx

Microsoft PowerPoint - KHPCSS pptx

120802_MPI.ppt

Microsoft PowerPoint - 演習1:並列化と評価.pptx

(Microsoft PowerPoint \211\211\217K3_4\201i\216R\226{_\211\272\215\342\201j.ppt [\214\335\212\267\203\202\201[\203h])

Microsoft PowerPoint - 第10回講義(2015年12月22日)-1 .pptx

<4D F736F F F696E74202D D F95C097F D834F E F93FC96E5284D F96E291E85F8DE391E52E >

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

Microsoft PowerPoint _MPI-03.pptx

並列有限要素法による 一次元定常熱伝導解析プログラム C 言語編 中島研吾 東京大学情報基盤センター

2012年度HPCサマーセミナー_多田野.pptx

untitled

Microsoft PowerPoint _MPI-01.pptx

演習準備

Microsoft PowerPoint - 08-pFEM3D-2C.ppt [互換モード]

02_招待講演-1.indd

Microsoft PowerPoint - 講義:片方向通信.pptx

FEM原理講座 (サンプルテキスト)

Microsoft PowerPoint - S1-ref-F.ppt [互換モード]

Microsoft PowerPoint - SolverPrecond.ppt [互換モード]

演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 RIKEN AICS HPC Spring School /3/5

第8回講義(2016年12月6日)

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並

NUMAの構成

Microsoft PowerPoint ppt

4th XcalableMP workshop 目的 n XcalableMPのローカルビューモデルであるXMPのCoarray機能を用 いて Fiberミニアプリ集への実装と評価を行う PGAS(Pertitioned Global Address Space)言語であるCoarrayのベ ンチマ

Microsoft PowerPoint - 講義:コミュニケータ.pptx

Fujitsu Standard Tool

PowerPoint プレゼンテーション

Seismic Response Analysis of Nuclear Power Plant #02

chap2.ppt

課題 S1 解説 Fortran 編 中島研吾 東京大学情報基盤センター

スライド 1

C/C++ FORTRAN FORTRAN MPI MPI MPI UNIX Windows (SIMD Single Instruction Multipule Data) SMP(Symmetric Multi Processor) MPI (thread) OpenMP[5]

HPC143

Microsoft PowerPoint - 高速化WS富山.pptx

並列計算導入.pptx

Microsoft Word _001b_hecmw_PC_cluster_201_howtodevelop.doc

¥Ñ¥Ã¥±¡¼¥¸ Rhpc ¤Î¾õ¶·

<4D F736F F F696E74202D A A814590DA904796E291E882C991CE82B782E946726F6E CC95C097F190FC8C60835C838B836F815B82C982C282A282C42E >

Microsoft PowerPoint - 演習2:MPI初歩.pptx

<4D F736F F F696E74202D F A282BD94BD959C89F A4C E682528D652E707074>

Microsoft PowerPoint - KN-RIMS2010.pptx

Microsoft PowerPoint - OpenMP入門.pptx

FFT

Microsoft PowerPoint - KN-2006NOV16.ppt

nakao

about MPI

memo

スライド 1

MPI コミュニケータ操作

tabaicho3mukunoki.pptx

040312研究会HPC2500.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - IntroAlgDs-05-4.ppt

Slide 1

XcalableMP入門

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

講義の流れ 並列プログラムの概要 通常のプログラムと並列プログラムの違い 並列プログラム作成手段と並列計算機の構造 OpenMP による並列プログラム作成 処理を複数コアに分割して並列実行する方法 MPI による並列プログラム作成 ( 午後 ) プロセス間通信による並列処理 処理の分割 + データの

1 OpenCL OpenCL 1 OpenCL GPU ( ) 1 OpenCL Compute Units Elements OpenCL OpenCL SPMD (Single-Program, Multiple-Data) SPMD OpenCL work-item work-group N

(Microsoft PowerPoint - \221\34613\211\361)

Microsoft Word - 教材ガイド一覧ビデオ.doc

untitled

The Parallel Universe 1 インテル MPI ライブラリーのマルチ EP によりハイブリッド アプリケーションのパフォーマンスを向上 最小限のコード変更でエクサスケール時代に備える Rama Kishan Malladi インテルコーポレーショングラフィックス パフォーマンス モ

Microsoft PowerPoint - CW-intro01.ppt [互換モード]

スライド 0

AtCoder Regular Contest 073 Editorial Kohei Morita(yosupo) A: Shiritori if python3 a, b, c = input().split() if a[len(a)-1] == b[0] and b[len(

Microsoft PowerPoint - sales2.ppt

コードのチューニング

MPI usage

4.1 % 7.5 %

Microsoft PowerPoint - 09-pFEM3D-VIS.pptx

PowerPoint Presentation

2017 p vs. TDGL 4 Metropolis Monte Carlo equation of continuity s( r, t) t + J( r, t) = 0 (79) J s flux (67) J (79) J( r, t) = k δf δs s( r,

Second-semi.PDF

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

Stage 並列プログラミングを習得するためには : 1 計算機リテラシ, プログラミング言語 2 基本的な数値解析 3 実アプリケーション ( 例えば有限要素法, 分子動力学 ) のプログラミング 4 その並列化 という 4 つの段階 (stage) が必要である 本人材育成プログラムでは1~4を

1 Fig. 1 Extraction of motion,.,,, 4,,, 3., 1, 2. 2.,. CHLAC,. 2.1,. (256 ).,., CHLAC. CHLAC, HLAC. 2.3 (HLAC ) r,.,. HLAC. N. 2 HLAC Fig. 2

浜松医科大学紀要

Microsoft PowerPoint - シミュレーション工学-2010-第1回.ppt

BLOCK TYPE.indd

NUMAの構成

PowerPoint Presentation

構造解析マニュアル@RDstr

Transcription:

FrontISTR における並列計算のしくみ < 領域分割に基づく並列 FEM> メッシュ分割 領域分割 領域分割 ( パーティショニングツール ) 全体制御 解析制御 メッシュ hecmw_ctrl.dat 境界条件 材料物性 計算制御パラメータ 可視化パラメータ 領域分割ツール 逐次計算 並列計算 Front ISTR

FEM の主な演算 FrontISTR における並列計算のしくみ < 領域分割に基づく並列 FEM> 剛性マトリックスの作成 部分領域 ( 要素 ) ごとに並列処理可 剛性行列の求解 { 反復法ソルバー, 直接法ソルバー } 反復法ソルバー 種類の演算からなる (1) 疎行列 ベクトル積 (2) ベクトル ベクトル内積 (3) ベクトルの加減 (DAXPY) () 前処理

前処理付き CG 法のアルゴリズム compute r (0) = b Ax (0) for some initial guess x (0) for i= 1,2,... solve M z (i-1) = r (i-1) i-1 = r (i-1)t if i=1 p (1) = z (0) else z (i-1) (M: preconditioning matrix) Preconditioning Dot Product (1) i-1 = i-1 / i-2 p (i) = z (i-1) + i-1 p (i-1) endif q (i) = A p (i) i = i-1 /(p (i)t q (i) ) x (i) = x (i-1) + i p (i) r (i) = r (i-1) - i q (i) check convergence; continue if necessary DAXPY (1) MATVEC Dot Product (2) DAXPY (2) DAXPY (3) end

FrontISTR における並列計算のしくみ < 領域分割に基づく並列 FEM> 反復法ソルバーの並列処理 種類の演算からなる 通信しながら部分領域ごとに並列処理可 (1) 疎行列 ベクトル積 (2) ベクトル ベクトル内積 (3) ベクトル ( およびその実数倍 ) の加減 (DAXPY) 通信不要 () 前処理

FrontISTR における並列計算のしくみ < 領域分割に基づく並列 FEM> 領域分割 (domain decomposition, partitioning) 分散メッシュ = ( 通常の ) メッシュ情報 + 通信テーブル SPMD (Single Program Multiple Data) プログラム 部分領域ごとに ( 通常の )FEM 計算 + 通信 通信はMPIによる 通信部分のプログラムは HEC-MW によって 隠蔽

SPMD Programming Style Large file handling Local distributed data FE analysis modules just consider local operation (element matrix assemble) Global operation occurs only in linear solver. Local Data Local Data Local Data Local Data FEM Code FEM Code FEM Code FEM Code Solver Subsystem MPI Solver Subsystem MPI Solver Subsystem MPI Solver Subsystem

参考 : FrontISTR における並列計算のしくみ < ハイブリッド並列 > 注意 : 本日の話題は MPI 並列のみです 部分領域マトリックス 領域分割 ( フレーム部品 ) 部分領域間通信 スレッド並列 MPI OpenMP ハイブリッド並列

program fstr_main +- hecmw_init +- T1 = hecmw_wtime() +- hecmw_get_mesh +- hecmw2fstr_mesh_conv +- fstr_init +- fstr_rcap_initialize +- T2 = hecmw_wtime() +- fstr_linear_static_analysis +- FSTR_SOLVE_LINEAR +- solve_lineq +- hecmw_solve_33 +- ll.201-27: Block LU +- hecmw_solve_cg_33 +- T3 = hecmw_wtime() end program CG iter. +- hecmw_solve_cg_33 +- hecmw_precond_33 +- hecmw_matvec_33 +- hecmw_update_3_r +- hecmw_solve_send_recv_33 +- MPI_ISEND +- MPI_IRECV +- MPI_WAITALL +- MPI_WAITALL +- hecmw_innerproduct_r +- hecmw_allreduce_r1 +- hecmw_allreduce_r +- MPI_allREDUCE CG iter. 行列ベクトル積 連立一次方程式の求解 (CG 法 ) FrontISTR プログラムの構造 -- 並列 CG 法

局所データには部分領域間の通信テーブルも含まれている HEC-MW 構造体 (1) 分散メッシュ構造体 type hecmwst_local_mesh :: hecmesh 内容 ) 節点 要素 材料情報,PE および通信情報特徴 ) hecmw_get_mesh によりセット. HPC-MW ライブラリィのハンドル的役割も 構造体成分 ( 抜粋 ) (PE および通信情報 ) (2) PEおよび通信情報 integer(kind=kint) :: zero #0 領域か? integer(kind=kint) :: my_rank ランク integer(kind=kint) :: PETOT 総領域数 integer(kind=kint) :: n_subdomain 総領域数 ( 局所分散データからの読み込み ) integer(kind=kint) :: n_neighbor_pe 隣接領域数 integer(kind=kint),pointer :: neighbor_pe(:) 隣接領域 ID integer(kind=kint),pointer :: import_index(:) 受信テーブル用一次元インデックス integer(kind=kint),pointer :: import_item(:) 受信テーブル配列 integer(kind=kint),pointer :: export_index(:) 受信テーブル用一次元インデックス integer(kind=kint),pointer :: export_item(:) 受信テーブル配列 integer(kind=kint),pointer :: shared_index(:) 送受信テーブル用一次元インデックス integer(kind=kint),pointer :: shared_item(:) 受信テーブル配列 (1) 全体情報 前出 (3) 節点情報 前出 () 要素情報 前出 () 下部構造 前出 9

領域間オーバーラップ要素を含む節点ベース領域分割 剛性マトリクスの足し込みなどの処理を各領域で並列に実施するためには オーバーラップ要素の情報が必要 PE#1 PE#0 21 22 23 2 2 PE#1 12 PE#0 1 7 1 17 1 19 12 13 1 7 9 1 2 3 PE#3 PE#2 20 1 10 領域へ分割 1 3 2 3 7 9 10 1 2 10 12 PE#3 7 9 1 13 10 1 2 3 9 12 10 9 12 7 1 2 3 PE#2 節点は 通信の観点から以下の3 種類に分類される : { } 内は PE#0 の例 内点(Internal Nodes): 各領域に割り当てられた節点 {1,2,3,,,,7} 外点(External Nodes): 他の領域に属しているが 各領域の要素に含まれている節点 {.9.10,,12,13,1,1} 境界点(Boundary Nodes): 他の領域の外点となっている内点 {1,2,3,,} 10

境界点における値は隣接領域へ 送信 (send) され 送信先では外点として 受信 (receive) される SEND phase (PE#2 の例 ) do neib= 1, NEIBPETOT istart= EXPORT_INDEX(neib-1) inum = EXPORT_INDEX(neib ) - istart do k= istart+1, istart+inum WS(k)= X(EXPORT_NODE(k)) call MPI_ISEND (WS(istart+1), inum, MPI_DOUBLE_PRECISION, & NEIBPE(neib), 0, SOLVER_COMM, & req1(neib), ierr) PE#0 1 1 13 7 PE#3 10 1 2 3 10 12 9 12 9 10 9 12 3 1 2 7 7 1 2 3 PE#2

( つづき ) RECEIVE phase (PE#2 の例 ) do neib= 1, NEIBPETOT istart= IMPORT_INDEX(neib-1) inum = IMPORT_INDEX(neib ) - istart call MPI_IRECV (WR(istart+1), inum, MPI_DOUBLE_PRECISION, & NEIBPE(neib), 0, SOLVER_COMM, & req2(neib), ierr) call MPI_WAITALL (NEIBPETOT, req2, sta2, ierr) do neib= 1, NEIBPETOT istart= IMPORT_INDEX(neib-1) inum = IMPORT_INDEX(neib ) - istart do k= istart+1, istart+inum X(IMPORT_NODE(k))= WR(k) PE#3 call MPI_WAITALL (NEIBPETOT, req1, sta1, ierr) 10 12 PE#0 1 1 13 7 10 1 2 3 9 12 9 10 9 12 3 PE#2 1 2 7 7 1 2 3 12

疎行列 ベクトル積 hecmw_matvec の中では 前出の通信を行ったのちに 部分領域ごとに並列に以下の行列 ベクトル積を実行する +- hecmw_solve_cg_33 +- hecmw_precond_33 +- hecmw_matvec_33 +- hecmw_update_3_r +- hecmw_solve_send_recv_33 +- MPI_ISEND +- MPI_IRECV +- MPI_WAITALL +- MPI_WAITALL +- hecmw_innerproduct_r +- hecmw_allreduce_r1 +- hecmw_allreduce_r +- MPI_allREDUCE do i= 1, N isl= INL(i-1) + 1 iel= INL(i ) WVAL= WW(i,R) do j= isl, iel inod = IAL(j) WVAL= WVAL - AL(j) * WW(inod,Z) WW(i,Z)= WVAL * DD(i) do i= N, 1, -1 SW = 0.0d0 isu= INU(i-1) + 1 ieu= INU(i ) do j= isu, ieu inod = IAU(j) SW= SW + AU(j) * WW(inod,Z) WW(i,Z)= WW(i,Z) - DD(i) * SW 行列 ベクトル積

Local Data Structure Node-based Partitioning internal nodes - elements - external nodes PE#1 PE#0 PE#1 12 1 7 21 22 23 2 2 PE#0 1 17 1 19 20 1 2 3 7 9 10 1 13 10 1 2 3 12 13 1 1 10 12 9 12 7 9 10 9 10 9 12 1 2 3 3 PE#3 PE#2 1 2 PE#3 7 7 1 2 3 PE#2

Local Data Structure : PE#0 internal nodes - elements - external nodes PE#1 12 PE#0 1 7 Partitioned nodes themselves internal nodes 1 2 3 7 9 10 10 12 1 13 10 1 2 3 9 12 Elements which include internal nodes Provide data locality in order to carry out element-by-element operation in each partition 3 9 10 9 12 Nodes included in the elements external nodes Numbering : internal -> external Internal nodes which are external nodes 7 7 1 2 3 for other partitions PE#3 PE#2 boundary nodes Communication table provides boundary~external node relationship 1 2