第8回ADVENTURE
定期セミナー
ADVENTURE_SOLID VER. 2.0の概要
平成25年5月28日
宮村倫司(日本大学工学部)
目次
 ADVSOLID新規追加機能紹介
 OpenMPによるハイブリッド並列機能
 線形動解析機能
 多点拘束条件(MPC)機能
 ADVENTURE_IO,入力データ作成例
 解析事例
新機能
 OpenMPによるハイブリッド並列機能
 線形動解析
 各種境界条件,初期条件
 履歴ファイル入力機能
 リスタート機能
 静解析と動解析の連続解析
 MMAとの連携
 非線形静解析
 履歴ファイル入力機能
 多点拘束条件(MPC)(予定)
資料作成:荻野正雄(名大)
OpenMPによるハイブリッド並列機能
ハイブリッド並列機能の概要 (1)
• CPUのマルチコア化
– Intel Core i7 3930K (6コア), AMD FX‐8150 (8コア), 
Fujitsu SPARC64 IXfx (16コア)
– Intel Xeon Phi 5110P (60コア) ※Co‐processor
• PCクラスタやスパコン等
– 複数の演算ノードで構成
• 並列処理のためのプロセス間通信
– 演算ノード間 → メッセージパシング
– 演算ノード内 → 共有メモリ/メッセージパッシング
Core L3 
Cache
Memory
Core
Core
Core
Core
Core
6コアCPUの例
PCクラスタの例
分散共有メモリ環境の普及
ハイリッド並列処理が必要
ハイブリッド並列機能の概要 (2)
• ADVENTURE_Solid
– 階層型領域分割法(HDDM)のアルゴリズムと
データ構造を活かしたハイブリッド並列処理
• 部分(Part)‐部分領域(Subdomain)の2階層分割
• Schur補元方程式に変換, 反復法ベース
– MPI並列
• Part演算の負荷分散
• 主に全体ベクトル演算を並列化
– OpenMPによるスレッド並列 ※Ver.2.0新機能
• Subdomain演算の負荷分散
• Subdomain方向ループを並列化

 1

 2
  3

 4

全体メッシュ
Part Subdomain
Schur補元方程式への変換
 1

 2

 3

 4


bAx 
     
     
             
 
 
 
 











































 B
N
I
1
I
B
N
I
1
I
i
B
i
BB
Ti
B
TN
IB
TN
B
T1
IB
T1
B
N
B
N
IB
N
II
1
B
1
IB
1
II
b
b
b
x
x
x
RARARAR
RAA0
RA0A



 1

 2
  3

 4

         
             
   
         
     







 




N,...,1i,inxRAbAx
onbAAbRxRAAAAR
ii
B
i
B
i
IB
i
I
1i
II
i
I
N
1i
N
1i
ii
I
1i
II
Ti
IB
i
B
Ti
BB
N
1i
i
B
i
IB
1i
II
Ti
IB
i
BB
Ti
B 
解くべき線形方程式
領域分割情報で並び替え
(I) 独立計算可能な部分
(B) 袖領域
式を分割
反復法で解く
反復法における行列ベクトル積のOpenMP並列化
     
     
         
   
n
k
nn
niTi
B
n
j
n
j
niTi
IB
ni
B
i
BB
ni
ni1i
II
ni
ni
B
i
IB
ni
k
qqq
forend
qRqq
tApRAq
sAt
pRAs
Nto1ifor







n
k
nn
n
kk
n
k
n
k
k
k
qqq
forend
forend
]j[p]j][i[A]i[q]i[q
nto1jfor
nto1ifor




bAx  の場合
DDMの場合
行方向ループをOpenMP並列化
MPI_Send/Recvで袖領域交換
領域方向ループをOpenMP並列化
MPI_Send/Recvで袖領域交換
(1) 疎行列ベクトル積
(2) 前進・後退代入
(3) 疎行列ベクトル積
(4) ベクトル和
(1) 疎行列ベクトル積
OpenMP並列部分のコード抜粋
ファイル: s_partsolver.c
関数: void spartsolv();
#pragma omp parallel
{    
get_my_subdomain_range(..., &start_domid, &end_domid);
a_w = (double *) Calloc(...);
for ( i = start_domid; i < end_domid; i++ ) {
dmesh = SetDom4CG(...);
domsolve(...);
put_domvec_to_cgvec(..., a_w);
}
#pragma omp critical
dary_op_ary(cgvec.a_w, ..., a_w);
Free(..., a_w);
}
このMPIプロセスが担当するSubdomainを各ス
レッドに静的ブロック分割
→次期バージョンで動的負荷分散に対応予定
スレッド間のメモリ書き込み競合は
ローカル変数確保で回避
ADVENTURE_Solid‐2.0のハイブリッド並列利用 (1)
• 環境: openSUSE 12.3, GCC‐4.7.2, MPICH‐3.0.4
> ./configure
...
========================================================
Configuration Report
========================================================
Host: x86_64‐unknown‐linux‐gnu
PREFIX: /home/userID/ADVENTURE
CC=gcc
INCLUDES=
CFLAGS=‐g ‐O2
LIBS=‐lm
ADVIO_CFLAGS=‐I/home/userID/ADVENTURE/include
ADVIO_LIBS_DOCIO=‐L/home/userID/ADVENTURE/lib ‐lAdvDocIO ‐lAdvFileIO ‐lAdvBase
MPICC=mpicc
MPI_CFLAGS=
MPI_LIBS=
OMP_CFLAGS=‐fopenmp
OMP_LDFLAGS=‐fopenmp
OpenMP用, 必要に応じてこれらの
環境変数をconfigure時に指定
ADVENTURE_Solid‐2.0のハイブリッド並列利用 (2)
• 環境: openSUSE 12.3, GCC‐4.7.2, MPICH‐3.0.4
• 実行時に参照する環境変数
– OMP_NUM_THREADS : MPIプロセスごとに使用するスレッド数
> make
> make install
> ls ~/ADVENTURE/bin/
advsolid‐s
advsolid‐p
advsolid‐h
advsolid‐s_omp
advsolid‐p_omp
ハイブリッド並列処理版
OpenMP並列処理版
MPI並列処理版
逐次処理版
> setenv OMP_NUM_THREADS  4
> mpiexec ‐f  machines  ‐n  np advsolid‐p_omp ...
> mpiexec ‐f  machines  ‐n  np ‐env OMP_NUM_THREADS  4  advsolid‐p_omp ...
csh/tcsh系における指定例(1)
csh/tcsh系における指定例(2)
※ Ver.2.0新実行バイナリ
※ Ver.2.0新実行バイナリ
bddソルバの数値実験
# Sdm. Ver.1.21 Ver.2.0
64 MPI 64 MPI 32 MPI x 2 OMP 16 MPI x 4 OMP 8 MPI x 8 OMP 4 MPI x 16 OMP
256 13.2 12.3 11.7 12.4 12.0 11.9
1,024 8.6 9.7 9.1 7.8 7.9 8.1
2,048 21.4 20.4 19.5 13.6 11.7 11.3
• 静弾性解析, 約100万自由度モデル
• 計算機環境
– Fujitsu PRIMEHPC FX10 (SPARC64 IXfx 16コア) x 4ノード
• 実行コマンド例
> setenv OMP_NUM_THREADS 4
> mpiexec ‐f machines ‐n 3 advsolid‐p_omp ‐solver bdd data
Ver.1.21とVer.2.0による経過時間[s]の比較
演習問題1
 4コアのCPUを搭載したPC4台をギガビットイー
サーネットで接続してPCクラスタを作った
 ホスト名はmiya01, miya02, miya03, miya04
 全ての計算資源を利用するものとする
 ハイブリッド並列処理版のADVENTURE_Solidの実
行方法を示せ
線形動解析機能
記号
 質量行列:
 減衰行列:
 剛性行列:
 変位:
 速度:
 加速度:
 等価節点力:
M
C
K
t
U
t
U
t
U
t
F
運動方程式(連続体)
 釣り合い式
(σ:応力テンソル,g:加速度,ρ:密度)
 境界条件
(n:境界の法線,t:応力ベクトル)
div  σ g 0
: t t
 u u u
: t t
  σ σ n t
運動方程式(FEMにより離散化後)
運動方程式
境界条件(時刻歴として与えられる)
FEMでは等価節点力( 内で積分)を指定
初期条件(時刻0の境界条件とも整合させる→時刻0 における境界条件は,
初期値として代入する)
t t t t
  M U C U K U F 
 : ,t t t t t t
   u U U U U U U  
: t t
 σ F F
0 0 0
, ,U U U 
σ
運動方程式(体積力)
 釣り合い式の の項
→積分すると等価節点力になるので に含まれる
 自重(重力加速度は時間により変化しない)
 地震力(時間により変化する.地動により全節点に同じ加速度
がかかる)
( 地盤からの相対変位)
 ADVENTUE_Solidでは履歴依存体積力機能は実装されていない
→
 境界条件として履歴依存節点強制{加速度|(速度)|変位}を入力
(加速度を入力する場合には,基線補正が必要)
g
 
 
t t t t
g
t t t t
g
u
u
   
   
M u 1 C u K u 0
M u C u K u M 1
  
  
t
F
t
u
Newmarkβ法
 線形加速度法の一種
 変位,速度を次式で近似(γ=1/2, β=1/4)
 次の式を解き,次の時間ステップの変位を求める
 加速度,速度を求める

















































UUUCUUUMR
UKCM
 tttttttt
tt
t
ttt
tt
1
2
11
2
111
1
2
2










   ttttttt
 
UUUU  1
2 1
2
t t t t t t t
t t     
        
  
U U U U U  
UUUUU  ttttttt
ttt 











 
1
2
1111
22

UUUUU  ttttttt
t
tt 















 








2
11
非線形のNewmarkβ法(参考)
 Predictor
 Corrector












































UUCUUMQR
UKCM
 ttttttt
t
t
t
tt
1
2
11
2
11
1 )1()0(
2








)1()1()1()()1(
2
1 










kttkttkttttkktt
tt
UCUMQRUKCM 



線形ソルバー
 係数行列は以下のeffective stiffness matrixとなる.
 コースグリッド問題は, (基本解(剛体モー
ド)により張られる空間)を用いて作っているため,
数学的背景は曖昧である.しかし,多くの場合,
静解析よりも収束性は良い.
2
1
t t

 
 
 
M C K
KerK
演習問題2
 以下の式(1), (2)より,式(3), (4)を導け.式(3), (4)を運動方程式(5)に代入し,式(6)を導け
(1)
(2)
(3)
(4)
(5)
(6)
   ttttttt
 
UUUU  1
2 1
2
t t t t t t t
t t     
        
  
U U U U U  

















































UUUCUUUMR
UKCM
 tttttttt
tt
t
ttt
tt
1
2
11
2
111
1
2
2










t t t t
  M U C U K U F 
UUUUU  ttttttt
ttt 











 
1
2
1111
22

UUUUU  ttttttt
t
tt 















 








2
11
境界条件,初期条件
 境界条件
 節点集中荷重
 節点強制変位
 節点強制速度
 節点強制加速度
 面圧力
 面分布圧力
 表面力
 分布表面力
 履歴依存節点強制変位
 履歴依存節点強制速度
 履歴依存節点強制加速度
 履歴依存節点集中荷重
 履歴依存面圧力
 履歴依存分布圧力
 履歴依存表面力
 履歴依存分布表面力
 リスタート
 静→動のリスタート
 初期条件
 表面の一部節点に初期速度を与え
る(衝突解析用)
 リスタート機能を用いて,別の解析
の解析結果を初期値として与える
(等価節点力の積算値も引き継が
れる)
初期加速度の計算
 初期速度,初期変位,時刻0における物体力等が
与えられたときには,時刻0において運動方程式
を満たすように,加速度を計算
について,BDDのない対角スケーリング付DDMで
解く
t t t t
   M U C U K U F 
t
U
レーリー減衰
 レーリー減衰を設定可能
 ただし,固有値解析機能がないため,固有モードに正
確に合わせた係数の設定ができない
 係数の計算法:
:モードiの固有ベクトル, :モードiの固有円振動数(固有振動数X2π),
:モードiの減衰定数
  C M K
 T T
2i i i i i i    Φ CΦ Φ M K Φ
2
2i i i   
iΦ
i
i
2組の を与えてα,βを求めるi i
演習問題3
 1次モードの固有振動数:1Hz
 2次モードの固有振動数:2Hz
 1次および2次モードの減衰定数:0.02
このとき,レイリー減衰の係数α,βを求めよ.ただし,
π≈3とする.
α,βを固定したときの固有振動数と
減衰定数の関係
いずれ公開予定
BCToolは既に対応している
多点拘束条件(MPC)機能
多点拘束条件(MPC)の例
多点拘束(MPC)
ruB T
複数のMPCの行列表示
応用:
接触問題,オクツリーメッシュ,
剛体等
ruauaua  332211 多項式形式
簡単な例:
マスター・スレーブ型の拘束
拘束条件行列
1 2 4 3
1 2 4 3
1 2 4 3
1
1
1
T
N N N N
N N N N
N N N N
    
      
     
B
master segment
slave node
master segment master segment
slave node slave node
1 2 3
8 9 10 11
4 5 6 7
kN :セグメントの形状関数
領域分割
領域間境界節点 (自由度)
内部節点 (自由度)
拘束された内部節点を領域間境界節点
に変換
内部節点
拘束された節点
新しい領域間境界
節点
修正された領域間境界自由度問題への
Lagrange乗数法によるMPCの導入
B B
T
     
         
S B u p
B O λ r
Lagrange乗数
B BSu p
各部分領域問題のMPCはなくなる
求解
 共役射影勾配法で解く
 コースグリッドへはペナルティ法で考慮
Tomoshi MIYAMURA, “Incorporation of multipoint constraints into the balancing domain
decomposition method and its parallel implementation”, IJNME, Vol. 69 (2007), pp. 326-346
  T1T
BBBBIP


 RBBαSRK TT
c 
剛体はり
 節点iと仮想節点を接続する
 回転自由度を有する
 仮想節点に関する自由度を消去し,節点iの変位に対するMPCに変換
 ただし,本手法では仮想節点に境界条件を設定できない
 次のような拘束も設定可能(BCTool):2点の相対変位を拘束, 2点が作るベクト
ル方向の成分を拘束,2点の距離を一定に拘束,面の法線方向変位のみ拘束
解析例
400MPa
仮想節点と
MPC条件
ADVENTURE_IOと入力データ作成法
ADVENTURE_IO(1) Document
様々な環境にある多数の大規模データを扱う仕組み
Property
Raw Data
key=value
key=value
:
Any Data
Property
Raw Data
key=value
key=value
:
Any Data
バイナリ.リトルエン
ディアン
•専用の入出力関数群
•ひとつのファイルに多数のドキュメントを格納できる
•メモリ上にも存在可能(連成解析)
•巨大データは自動分割
ADVENTURE_IO(2)
入出力データの多層モデル
DDM layer Subdomain information, Control data etc.
Second FEM layer Node Element Displacement, Stress,
Boundary Conditions, etc.
First FEM Layer FEGA
Large-scale data handling
layer
Document
File I/O, Memory I/O
Hardware layer Disk, Memory
ADVENTURE_IO(3) FEGA
(Finite Element Generic Attributes):FEMの入出力データを一般化
Type “All” or not Element or Node Constant or
Variable
1 All Element Constant
2 All Element Variable
3 All Node Constant
4 All Node Variable
5 Element Constant
6 Element Variable
7 Node Constant
8 Node Variable
9 Void (= AllElementConstant or AllNodeConstant)
FEGA形式にしておけば,AdvMetisで領域分割できる
入力データ作成法
 ADVENTURE_IO
 メッシュ作成(AdvTetmesh等)
 境界条件,材料定数,MPC等設定(AdvBCTool)
 テキストファイル編集による作成
 バイナリ形式の*.advファイルの作成,編集
 advshow*, a2adv.pl,advcatの活用
* ADVSOLIDに添付されているadvshowはa2adv.plに未対応→差し替え予定
>advshow miya.adv > miya.dat
(advshow -mp label=ラベル名 miya.adv > miya1.dat
指定したラベル名を持つドキュメントのみテキスト化)
miya.datをエディタ等で編集
>a2adv.pl miya.dat >miya_new.adv
例えば,新たな履歴ファイル(history.adv)と結合
>advcat miya_new.adv history.adv > miya_new2.adv
FEGAで表された履歴データ
###############################################
TimeHistory 10 ラベル名,データ部のデータ個数
###############################################
content_type=FEGenericAttribute
fega_type=Void
format=f8f8
history_id=1001
(data_type=incremental←値増分型のとき)
0.000000e+01 0.000000e+00
2.000000e+01 2.000000e-0
4.000000e+01 4.000000e-0
6.000000e+01 6.000000e-0
8.000000e+01 8.000000e-0
1.000000e+02 1.000000e+0
1.200000e+02 1.200000e+0
1.400000e+02 1.400000e+0
1.600000e+02 1.600000e+0
1.800000e+02 1.800000e+0
プロパティ部
データ部
FEGAで表された履歴依存境界条件
###############################################
TransientForcedDisplacement 1
###############################################
format=i4f8
index_byte=4
fega_type=NodeVariable
condition_id=1
history_id=1001←プロパティ部にIDを指定
# node co factor
34 1 -1.000000e-01
FEGAで表された履歴依存境界条件
###############################################
TransientForcedDisplacement 4
###############################################
format=i4i4f8
index_byte=4
fega_type=NodeVariable
# node co history_id factor
0 2 1001 -2.000000e-01 ←データ部にIDを指定
1 2 1001 -2.000000e-01
2 2 1001 -2.000000e-01
3 2 1001 -2.000000e-01
FEGAで表された多点拘束条件
###############################################
LinearConstraint 3
###############################################
fega_type=NodeVariable
index_byte=4
format=i4i4f8
element_group_id=2
# node 節点番号
# co 自由度番号
# equation 式(ID)番号
# factor 係数
816 0 1947 1.000000e+00 # node co equation factor
816 1 1947 -0.500000e+00
816 2 1947 -0.500000e+00
816 816 8160.5 0.5 0x y z  
演習問題4
拘束条件行列( z方向変位のみを拘束)
1 2 4 3
1 2 4 3
1 2 4 3
1
1
1
T
N N N N
N N N N
N N N N
    
      
     
B
0.25kN 
master segment
slave node
master segment master segment
slave node slave node
1 2 3
8 9 10 11
4 5 6 7
とする.
slave node iを含むMPCの式番号は,1000+iとする.
このとき,このMPCのデータを格納するドキュメントはどうなる?
解析例
解析例1
地盤を考慮した超高層ビルの地震応答シミュレーション
Mesh of super-high-rise building
(made in E-Simulator project)
超高層ビル+地盤メッシュ(1)
soil mat slab
building
超高層ビル+地盤メッシュ(2)
Soil
(mesh of 2x2 m)
Mat slab
Connected by using MPCs
超高層ビル+地盤メッシュ(3)
Test model for preliminary analysis
(slabs are omitted to reduce the
number of MPCs)
Number of elements 27,003,644
Number of nodes 34,538,588
Total degrees of freedom 103,615,764
Number ofMulti-Point Constraints
(MPCs)
108,642
大規模なMPC
  T1T
BBBBIP


 Projection
Solved by sparse direct solver, MUMPS
Problem size: 0.1-4 M DOFs (too large problem for the
direct solver)
MPCs are divided into
independent groups
has block structure
can be computed
independently in each
group
 
1T 
B B
T
B B
性能評価
 Linear dynamic analysis
 Fujitsu FX10 at the University of Tokyo
 16 cores / nodes
Number
of
nodes
Number of
subdomains
Preparation 1st time step CG iter. / step 650 time steps
16 96,000 346 s 433 ~ 866 s 100 ~200 steps 7.3 days
32 96,000 204 s 177 ~ 354 s 100 ~200 steps 2.9 days
64 96,000 163 s 131 ~ 262 s 100 ~200 steps 2.2 days
64 96,000 Nonlinear 700 ~ 1400 s 11 days
128 96,000 164 s 117 ~ 234 s 100 ~200 steps 1.9 days
256 92,160 156 s 117 ~ 234 s 100 ~200 steps 1.9 days
屋上階のある節点変位の時刻歴
-1500
-1000
-500
0
500
1000
1500
2000
0 100 200 300 400 500 600 700
x
y
Time step
試解析の結果(全体)
試解析の結果(ビル部分)
参考文献
 全般
 ADVENTURE HP, http://adventure.sys.t.u-tokyo.ac.jp
 Shinobu YOSHIMURA, Ryuji SHIOYA, Hirohisa NOGUCHI, Tomoshi MIYAMURA, “Advanced general-purpose computational mechanics system for
large-scale analysis and design”, Journal of Computational and Applied Mathematics, 149 (2002), pp. 279-296
 久田 俊明, 野口 裕久,「非線形有限要素法の基礎と応用」,丸善,1996
 Klaus-Jurgen Bathe, “Finite Element Procedures”, Prentice-Hall, 1996
 ハイブリッド並列関係
 Hiroshi Kawai, Masao Ogino, Ryuji Shioya, and Shinobu Yoshimura, Large scale elasto-plastic analysis using domain decomposition method
optimized for multi-core CPU architecture, Key Engineering Materials, Vols. 462-463, pp.605-610, January, 2011.
 動解析関係
 Ogino M, Shioya R, Kawai H, Yoshimura S. Seismic response analysis of nuclear pressure vessel model with ADVENTURE system on the Earth
simulator. Journal of the Earth Simulator 2005; 2:41–54.
 ADVENTURE_IO関係
 宮村倫司,田中伸哉,田久保宏行,吉村忍,矢川元基,「大規模並列計算力学システムにおける入出力データの標準化」,日本計算工学
会論文集,Vol. 2, Paper No. 20000028 (2000), pp. 219-226
 Tomoshi MIYAMURA and Shinobu YOSHIMURA, “Generalized I/O data format and interface library for module-based parallel finite element
analysis system”, Advances in Engineering Software, 35 (2004), pp. 149-159
 MPC関係
 宮村倫司,「バランシング領域分割法への多点拘束条件の組み込み手法」,日本計算工学会論文集,Vol. 7, No. 20040029 (2005), pp.
139-147
 Tomoshi MIYAMURA, “Incorporation of multipoint constraints into the balancing domain decomposition method and its parallel implementation”,
International Journal for Numerical Methods in Engineering, Vol. 69 (2007), pp. 326-346
演習問題1の答
> cat machines
miya01
miya02
miya03
miya04
> setenv OMP_NUM_THREADS 4
> mpiexec -f machines -n 4 advsolid-p_omp -solver hddm data
> setenv OMP_NUM_THREADS 2
> mpiexec -f machines -n 8 advsolid-p_omp -solver hddm data
> mpiexec -f machines -n 16 advsolid-p -solver hddm data
など
演習問題2の略解
 式 (2)を について解くと式(3)が得られ,この結
果を式(1)に代入すると,式(4)が得られる.
 これらを式(5)に代入し, の項を左辺に移項す
れば式(6)が得られる.
t t
U
t
U
演習問題3の答
ω1=2π×1≈6
ω2=2π×2 ≈ 12
α+ω1
2β=2×ω1×0.02
α+ω2
2β=2×ω2×0.02
よって,α=0.16,β=0.0022222
演習問題4の答
###############################################
LinearConstraint 12
###############################################
fega_type=NodeVariable
index_byte=4
format=i4i4f8
1 2 1001 1.000000e+00
4 2 1001 -0.2500000e+00
5 2 1001 -0.2500000e+00
8 2 1001 -0.2500000e+00
9 2 1001 -0.2500000e+00
2 2 1002 1.000000e+00
5 2 1002 -0.2500000e+00
6 2 1002 -0.2500000e+00
9 2 1002 -0.2500000e+00
10 2 1002 -0.2500000e+00
3 2 1003 1.000000e+00
6 2 1003 -0.2500000e+00
7 2 1003 -0.2500000e+00
10 2 1003 -0.2500000e+00
11 2 1003 -0.2500000e+00

ADVENTURE_Solid Ver.2.0の概要