4. Numerical Simulation of Seismic Waves 2-1. Equation of Motions for Elastic Waves 2-2. FDM Simulation and Numerical Error 2-3. Boundary Conditions 2-4. Large-Scale 3D Simulation by Parallel Computers 強震動シミュレーション手法 1.有限要素法(FEM) ・FEMメッシュ ・地震工学で人気(入力モデルが確定) ・Spectral Element法への拡張(1990年後半) 2.差分法(FDM) ・規則メッシュ ・地震学で人気(入力モデルの調整・検証) 3.境界要素法(BEM) ・1980年代に流行 ・高速多重極展開の導入(1990年後半) 差分法による運動方程式の計算 運動方程式(釣り合いの式) 物性定数(ラメの定数、密度) Body Force ux xx xy xz f x , x y z Acceleration uy yz yy yz f y , x y z uz xz yz zz f z . x y z Density Stress 応力ー歪構成方程式(フックの法則) pq (exx eyy ezz ) pq 2 epq 歪みテンソル u y u u exx x , e yy , ezz z , x y z , , ( x, y, z ) u x , u y , u z ( x, y, z ) 差分法による微分計算(2次精度中央差分) u x ( x, y, z ) u x ( x Dx, y, z ) u x ( x Dx, y, z ) x 2Dx Ux Strain 1 u uy 1 uy u exy x , e yz z , 2 y x 2 z y 1u u exz x z . 2 z x 2Dx x-Dx x+Dx x FDM演算子の導出: テイラー展開 2次精度FDM Dx d f ( x Dx) f ( x) Dx f ( x) dx 2 2 d Dx f ( x Dx) f ( x) Dx f ( x) dx 2 2 d2 f ( x) O[(Dx) 2 ] (1) dx2 d2 f ( x) O[(Dx) 2 ] (2) 2 dx +1/2 -1/2 From (1)-(2) d f ( x Dx) f ( x Dx) f ( x) O[( Dx) 2 ] dx 2Dx f(x- Dx) f(x) f(x+ Dx) 4次精度 FDM d Dx d 2 Dx d 3 f ( x Dx) f ( x) Dx f ( x) f ( x) f ( x) O[(Dx) 4 ] 2 3 dx 2 dx 6 dx 2 3 2 d Dx d Dx d 3 f ( x Dx) f ( x) Dx f ( x) f ( x) f ( x) O[(Dx) 4 ] 2 3 dx 2 dx 6 dx 2 3 d 2Dx d 2 2Dx d 3 f ( x 2Dx) f ( x) 2Dx f ( x) f ( x) f ( x) O[(Dx) 4 ] dx 2 dx2 6 dx3 2Dx 2 d 2 f ( x) 2Dx 3 d 3 f ( x) O[(Dx) 4 ] d f ( x 2Dx) f ( x) 2Dx f ( x) dx 2 dx2 6 dx3 2 3 (1) (2) -1/12 8/12 (3) -8/12 (4) +1/12 f(x-2 Dx) f(x- Dx) From (1)(2)(3)(4) d f ( x 2Dx) 8 f ( x Dx) 8 f ( x Dx) f ( x 2Dx) f ( x) O[( Dx) 4 ] dx 12 Dx f(x) f(x+ Dx) f(x+2 D x) FDMの次数と精度(2):数値実験 (a) 4th-order FDM Example of 2D modeling (P-SV) PPPP PPP PS Time [s] Time [s] 4 Grid Points/Wavelength (b) 8th-order FDM PP P x z (d) 128th-order FDM Time [s] (c) 16th-order FDM Time [s] z x FDMの次数と精度(1): 実効波数 周期関数 f ( x) exp(ikx) k : 波数 その微分(解析解)は df ( x) ik exp( ikx ) ik f ( x) dx 解析解 (kDx) 2次中央差分による微分 df ( x) dx exp[ik ( x Dx)] exp[ik ( x Dx)] 2Dx sin(kDx) i f ( x) Dx ike f ( x) ke : 実効波数 誤差 数値解 [sin(kDx)] FDMの高精度化:Staggered Grid (食い違い格子)の利用 Staggered-grid FDM, Virieux (1986)、Geophysics, V108, 889-901. (b) Staggered Grid Model (a) Ordinary Grid Model 変位、応力、物性値すべてが同一格子点に定義 Dx Dx Dx 変位、応力、物性値は半格子ずれた位置に定義 Dx Dx Dx Dz Dx/2 Dx/2 Dx Dx Dz *格子サイズが見かけ上、半分になる The Staggered-Grid FDM (a) Ordinary FDM Grid (b) Staggered-Grid FDM Dx Dx/2 d f ( x Dx) f ( x Dx) f ( x) dx 2Dx d f ( x 1 / 2Dx) f ( x 1 / 2Dx) f ( x) dx Dx Exercise 6. Assume a new grid configuration where the stress () and displacement (v) components are defined halfway between each others, and the derivatives are defined on the middle. This is called the staggered grid. Currently the staggered-grid FDM has been used practically in the wave propagation simulation. Derive the effective wavenumber for the 2nd-order central staggered-grid FDM and compare the accuracy with that for the ordinary 2nd-order central FDM. スタガード格子FDMの精度:実効波数の確認 ・周期関数 f ( x) exp(ikx) k : 波数 ・その微分(解析解) df ( x) ik exp( ikx ) ik f ( x) dx 解析解 (kDx) ・スタガード格子における2次FDM微分の解 Dx Dx )] exp[ik ( x )] df ( x) 2 2 dx Dx Dx sin(k ) 2 f ( x) i Dx 2 ike f ( x) exp[ik ( x ke : 実効波数 誤差 数値解 [sin(kDx/2)] フーリエスペクトル法 (PSM): FFTを利用した高次FDM (1) フーリエ変換 N 1 F (lDk ) Dx f (nDx) exp(i 2nl / N ) n 0 1 N 1 f (nDx) F (lDk ) exp(i2nl / N ) NDx l 0 1.FFTをかける (2) 波数空間での解析的な微分、フーリエ逆変換 d f (nDx) dx 1 N 1 i(lDx) F (lDk ) exp(i 2nl / N ) NDx l 0 2.波数を乗じる 3.FFTでもとに戻す FFTの利用 - 高速化 乗算の計算量 N2 N log2 N - 周期境界条件 (Wraparound) FDM計算はベクトル化率が高い スカラー計算 PSM~16th-order FDM -FDM計算速度が数十倍に加速する -PSM(FFT)計算はベクトル化が難しい ベクトル計算 PSM << 128th-orderFDM 加速 自由表面の境界条件 (a) 真空条件 (b) 対照法 自由表面 (Z=0) におけるゼロ応力 xz yz zz 0 *自由表面は難しい。。。。 解析解 FDM 高次FDM演算子: 端の処理 (b) 周期境界にする (a) 次数を低下させる 6 4 精度が低下 Wrapround が起きる 反射波が出る 吸収境界条件 (1): Dampingの利用 -経験的 (物理的背景うすい) -簡単。でもよく効く 吸収境界条件 Cerjan et al. (1985), Geophysics, V50, 705-808. S W (i) exp[0.015(20 i) 2 ], (i 1.2...,20) sP P 夢の吸収境界条件:Perfect Matched Layer (PML) PML 鉛直 ・境界面に鉛直入射する波は透過 ・境界面に平行に入射する波を減衰させる 夢のPML 平行 境界のインピーダンスコントラストが0となる=無反射 無反射境界なし *現実はそんなに甘くない、永遠の課題 FDMの陽解法: 時間発展 Dt 0.26 1. 変位-応力の式 Dx V max n n n 1 xp yp zp u f pn x y z 速度 u np1/ 2 u np1/ 2 unp Dt 時間積分1 加速度 n p 変位 n 1 p u 応力 n pq u np u np1/ 2 Dt u np1/ 2 u np1/ 2 unp1/ 2 Dt n 1 pq n pq n 1 / 2 pq Dt 時間積分2 変位 u xn u yn u zn u np uqn pq x y q p z n-1 n n-1/2 n-1 n+1/2 2. 速度-応力式 速度 u np1/ 2 応力 n 1 xp yq zq u np1/ 2 f pn Dt x y z n n 時間積分1 速度 u n1 / 2 u n1 / 2 u n1 / 2 y n 1 n pq pq x z y z x 応力 n1 / 2 n1 / 2 u p q u Dt pq q p 時間積分2 *速度-応力式のほうが 計算が安定(らしい) 非弾性減衰(Q)の導入 1.Damperの利用 Graves (1996), BSSA, V86, 1091-1106. u y u u x u y u z 2 xx ( 2 ) z A y x y z z f 0t A exp Q - 強い周波数依存性Q( f ) Q0 *ほとんどの強震動計算はこれ が使われている(かんたん) f f0 - QpとQsを分離できない(Q=Qp=Qs) 2.Memory Variableの利用 ・Robertsson et al., (1994), Geophysics, V59, 1444-1456. ・Hestholm (1999), Geophys. J. Int. V139, 852-878. P u x u y u z S xx ( 2 ) 2 x y z u y u z rxx y z P u x u y u z S u y u z 1 rxx rxx ( 2 ) 1 2 1 y z z x y 1 QS 1 1 1 P 1 1 2 , 2 , S Q p Q p QS 2 - Constant Q,Q( f ) Q0 - Qp, Qs分離できる 地震動シミュレーション 入力・出力 fp q x, y , z M pq ( x, y, z ) q 入力データ: up xp x yp y zp z fp pq (exx eyy ezz ) pq 2 epq z ・各点の物性値を入力 ・層境界面を入力、多層構造でモデル 化 x 断層型震源(Mxz=Mzx=M0) z 出力データ: ○3次元各点の揺れ(速度) V=(Vx, Vy, Vz) ○地表面の揺れ(2次元) ・P波、S波分離: P=div V, S=rot V ・加速度(時間微分)、変位(積分) x 爆発型震源(Mxx=Mzz=M0) 応力 1次元波動方程式のFDM計算 x (1) x (1) x 速度 Vx (1) Vx (1) スタガード格子に、以下の変数を配置 x ・応力とその空間微分 ・速度*とその空間微分 c-Solving equation of motions ・物性値(剛性率、密度) do it = 1, ntmax x (2) Vx (2) x x ( 2) x Vx (2) time = it*dt if (mod(it-1,nsnap).eq.0) then call SNAP(Vx, nx, isnap, time, dx) isnap = isnap + 1 end if *各格子点の揺れの速度、 媒質の地震波伝播速度のことではない do i = 2, nx-2 dxSx(i) = (0.00417*Sx(i-1)-1.25*Sx(i) : + 1.25*Sx(i+1)0.00417*Sx(i+2))/dx end do dxSx(1)=0; dxSx(nx-1)=0; dxSx(nx)=0 do i = 1, nx Vx (i) = Vx (i) + (dxSx(i))/den(i)*dt end do 初期化 : parameter (nx=150, dx=1.0, dt=0.125) parameter (ntmax=2000, nsnap=20) real Vx(nx), Sx(nx), den(nx), rig(nx) real dxVx(nx), dxSx(nx) character fname*17 c-Initial Condition call MODEL (den,rig,nx) call INIT (Vx,Sx,nx) call SOURCE (Vx,nx) isnap = 0 do i = 3, nx-1 dxVx(i) = (0.00417*Vx(i-2)-1.25*Vx(i-1) + 1.25*Vx(i)-0.00417*Vx(i+1))/dx end do dxVx(1)=0; dxVx(2)=0; dxVx(nx)=0 do i = 1, nx Sx (i) = Sx (i) + rig(i)*dxVx(i)*dt end do end do x (3) x (4) Vx (3) x Vx (4) Vx (3) Dx 応力の空間微分(4次精度FDM) x (i ) x c x (i 1) d x (i ) e x (i 1) f x (i 2) Dx 速度値の計算 vx n 1/ 2 1 x vx Dt x n n 速度の空間微分(4次精度FDM) v x (i ) x cvx (i 2) dvx (i 1) evx (i ) fvx (i 1) Dx 応力値の計算 x n 1 x n 1/ 2 c-write (6,*) 'Last frame number= ', isnap end 以下、繰り返し n 1/ 2 v x x Dt 1次元波動方程式のFDM計算 モデル格子に、物性値(Vs, )を置く subroutine MODEL (den,rig,nx) subroutine SOURCE(Vx,nx) real den(nx),rig(nx) real Vx(nx) 震源(揺れの速度の初期分布) do i = 1, nx ix = 8 if (i.lt.25) then do i = 1, nx vs = 0.0 if (i.lt.(nx/2-ix)) then ro = 2.0 Vx (i) = 0.0 else if (i.lt.75) then else if (i.lt.(nx/2+ix)) then vs = 0.5 Vx (i) = sin(3.14*(i-nx/2)/real(ix)) ro = 2.0 else else if (i.lt.125) then Vx (i) = 0.0 vs = 0.25 end if ro = 1.5 end do else return vs = 0.0 end 揺れの分布の出力 ro = 1.5 end if subroutine SNAP(Vx, nx, isnap, time, dx) den (i) = ro real Vx (nx) rig (i) = ro*vs**2 character fname*17 end do write (fname(1:17),'(A13,I3.3)') 'results/WAVE.', isnap return open (16,file=fname, end status='unknown',form='formatted') 初期化 write (16,*) time subroutine INIT (Vx,Sx,nx) do i = 1, nx real Vx(nx), Sx(nx) write (16,*) i*dx, Vx(i) do i = 1, nx end do Vx (i) = 0.0 close (16) Sx (i) = 0.0 return end do end return end #!/bin/csh -f お絵かきスクリプト gmtset TICK_LENGTH -0.1 set RANGE = '1.0/150.0/-1.5/1.5' set SCALE = '6/2' set INFILE = 'results/WAVE' set OUTFILE = 'anime/Movie' set PSFILE = tmp.ps @ istart = 0 @ iend = 100 @ i = $istart スナップショットの時刻と while ($i <= $iend) 速度分布を取り出す if ( $i < 10 ) then head -1 ${INFILE}.00$i >tmp_t tail +2 ${INFILE}.00$i >tmp_w else if ( $i < 100 ) then head -1 ${INFILE}.0$i >tmp_t tail +2 ${INFILE}.0$i >tmp_w else head -1 ${INFILE}.$i >tmp_t tail +2 ${INFILE}.$i >tmp_w endif #-Time awk '{printf "120 0.5 30 0 0 0 %3.1fs\n",$1}' < tmp_t > tmp_tt psxy tmp_w -R${RANGE} -JX${SCALE} \ -W4/0/0/100 -P -K >! ${PSFILE} GMTで絵を描く pstext tmp_tt -R${RANGE} -JX${SCALE} \ -Ba50f10g25:"Distance [km]":/a0.5f0.125g1:"Height [m]":WSne / -O >> ${PSFILE} eps2eps ${PSFILE} tmp.eps PSをbmp連番ファイルに変 換 if ( $i < 10 ) then convert tmp.eps ${OUTFILE}.00$i.bmp else if ( $i < 100 ) then convert tmp.eps ${OUTFILE}.0$i.bmp else convert tmp.eps ${OUTFILE}.$i.bmp endif echo '[ ' $i ' ]' @ i++ Top500(http://www.top500.org)*LINPAC(連立一次方程式の解)ベンチマークテスト *演算性能(FLOPS: 1秒間あたりの小数点演算回数) *IBM BlueGene/Lは212,992CPUの並列計算で478TFLOPS IBM Blue Gene/L メキシコ自治大学 溶岩公園 地球シミュレータ *地球シミュレータは30位に落ちた *PCを1345台をLANで繋げば、TOP500に入る 中国兵馬俑 Top500(http://www.top500.org) ・スパコンは10年で1000倍高速化 ・2012年には京速(10PFLOPS)計算機が完成(理化学研究所、神戸) 京速計算機 1987 Lets Note ・私のノートPCは1987年(M2)にはTop 1であった ベクトル計算機とスカラー計算機 ・CPUクロック自体は遅い(0.5GHz) ・ベクトル演算器がすさまじく高速 ベクトル計算機 CPU (0.5GHz) スカラー演算器 NEC SX-9 ベクトル演算器 ベクトル演算器 ベクトル演算器 ベクトル演算器 ベクトル演算器 ベクトル演算器 ベクトル演算器 32GB/s 高速アクセス メモリーバンク メモリー(GB) ・メモリアクセスが高速(キャッシュメモリは不要) ・さらに、メモリーアクセスを分散させるので高速 (一カ所に集中すると遅くなる;Bank Conflict) ベクトル演算と計算の加速 DO J = 1, NY DO I = 1, NX DxVx (I,J) = ( Vx (I+1,J) - Vx (I 1,J) ) / (2*Dx) END DO END DO ベクトル演算機構 DOループ処理(NX回の繰り返し) を一纏め(256個単位)に一気に ハードウエアで実行する ・ただし、複雑な繰り返し計算(条 件文など)はベクトル化できない ●計算プログラム = スカラー計算部分 + ベクトル計算部分 ●ベクトル化率 =ベクトル計算部分 /プログラム全 体 ベクトル化率=50% 性能向上率=2倍 90% 8倍 95% 20倍 99% 40倍 *ベクトル化による性能向上率を50倍と仮定 ・ベクトル化率が100%に限りなく近づいて初めて効果が現れる FDM計算はベクトル化率が高い -FDM計算速度が数十倍に加速する -PSM(FFT)計算はベクトル化が難しい スカラー計算 PSM~16th-order FDM ベクトル計算 PSM << 128th-orderFDM スカラー計算機 ・CPUは速い ・キャッシュメモリの速度、容量が命 ・外部メモリのアクセス時間は、演算の数十~数百倍遅い! スカラー計算機 CPU (4GHz) スカラー演算器 高速アクセス キャッシュメモリ (MB) CPU速度(クロック周波数)の変化 ・1970年代 Intel 8086、 5 MHz ・1990年代 Intel 80286、 33 MHz ・2000年代 Intel Pentium4、 1.5 GHz ・2007年 3.4 GHz (そろそろ、限界) CPU (4GHz) スカラー演算器 数 GB/s 低速 ・メモリアクセスが非常に遅い メモリー(GB) スカラー演算器 高速アクセス キャッシュメモリ (MB) ・マルチコア(Dual 、Quad )化 スカラーコンピュータとキャッシュメモリの効 果 演算プロセッサ 1次キャッシュ (16KB) 2次キャッシュ(L2) (512KB) 2次キャッ シュ溢れ 1次キャッ シュ溢れ 理論性能と実性能の乖離! *キャッシュあふれが起きるとおしまい。 *ベンチマークテストは速いのに。。。 http:/www.hpc.co.jp 外部メモリ (2GB) 並列 FDM 計算: 2つの並列化思想 地震研EICはこれに近いタイプ 共有メモリ型コンピュータ (とても高価) (1) Thread Parallel 自動並列コンパイラー 自動並列化、効率は高くない (2) Message Passing 分散メモリ型、PCクラスタ (いわゆるパソコン) 領域分割 MPIの利用した明示的な通信, 並列効率が高い Thread Parallel: Doループの自動分割処理 原プログラム read (6,*) s do i=1, 128 a(i) = b(i) + c(i) end do write (*,*) a 4CPUに並列化されたプログラム ・自動で並列コードができる。かんたん。 % f77 –parallel prog.f % a.out ・計算の一部を並列化、残りは全CPUで同じ処理をする ため、並列効率は高くない。 read (6,*) a, b 並列化 do i=1, 32 do i=33, 64 do i=65, 96 do i=97, 128 a(i) = b(i) + c(i) a(i) = b(i) + c(i) a(i) = b(i) + c(i) a(i) = b(i) + c(i) end do end do end do end do write (*,*) c 並列化の効率: アムダールの法則 a 1a プログラム= 並列化可能な部分 + 並列化できない部分 -FDM計算でも結構条件がきつい -CPUを増やせば良いというものではない (少数精鋭主義) ●平均加速率: An An -Grid による高速科学計算は幻想(錯覚) 1 a (1 a ) n ●並列化効率: En a 1a En An n ・並列化効率をEn> 50%を維持するため のCPU数の上限 並列化率 並列化部分 並列化できない部分 a=99.2% 99.6% 99.8% 99.9% CPU数 n=16 32 64 128 MPIを用いた並列化 MPIで最初から並列化を意識して書いたプログラム 並列化 Input (1:32) read (*,*) b,c 並列化 read (*,*) b, c Input (65:92) read (*,*) b, c Input (93:128) read (*,*) b,c do i=1, 32 do i=1, 32 do i=1, 32 do i=1, 32 a(i) = b(i) + c(i) a(i) = b(i) + c(i) a(i) = b(i) + c(i) a(i) = b(i) + c(i) end do end do end do end do write (*,*) a 並列化 Input (33:64) ・処理とデータを予め完全に分割する ・独立に計算。並列効率が良い ・CPU間のデータ交換はMPIを用いる Output (1:32) write (*,*) a Output (33:64) write (*,*) a Output (65:92) write (*,*) a Output (93:128) MPIプログラミング(通信) ・MPI(Message Passing Interface)は標準仕様 ・MPIプログラムで使うコマンドは意外と少ない ・送信(Send) 受信(Receive)の対応 Program 1 Program 2 Program 3 Send (to=2, b(1)) Send (to=3, b(1)) Send (to=4, b(1)) Receive (from=0, c(32)) Receive (from=1, c(32)) Receive (from=2, c(32)) メモリ内容 b(1) b(2) b(3) c(1) c(2) c(3) b(1) b(2) b(3) c(1) c(2) c(3) b(1) b(2) b(3) c(1) c(2) c(3) b(32) c(32) b(32) c(32) b(32) c(32) MPIプログラミング(通信2) ・1つのMPIプログラムを全てのCPUで走らせる ・各CPUは番号(Rank)に応じて違う動作をする % mpif90 prog.f % mpirun –np 3 a.out Program 1 id=Rank () 1 Program 2 id=Rank () 2 Program 3 id=Rank () 3 Send (to=id+1,b(1)) Send (to=id+1,b(1)) Send (to=id+1, b(1)) Receive (from=id-1, a(32)) Receive (from=id-1, a(32)) Receive (from=id-1, a(32)) MPIプログラムの例 ifrom 簡単なMPIプログラムの例 include 'mpif.h' MPIの定義ファイル double precision STAT(MPI_STATUS_SIZE) 用意されたプロセス数 初期化 call MPI_INIT (ierr) call MPI_COMM_SIZE (MPI_COMM_WORLD, nproc, ierr) call MPI_COMM_RANK (MPI_COMM_WORLD, myid, ierr) ito = myid + 1 送り先(右隣) ifrom = myid - 1受け元(左隣) 私はそのうちの何番目(0,1,…,nproc-1) Myid=0 ito Myid= nproc-1 Myid=1 ★nproc個のCPUで本プログラムを同時実行 (nproc数は実行時に指定する) ★自分の相対番号(myid:0~nproc-1)を知る ★myidをもとに、左右隣の通信の相手を設定 ★右隣にデータ送信、左隣からデータ受信 if (ito.gt.(nproc-1)) ito = 0 右隣がなければ、左端へ if (ifrom.lt.0) ifrom = nproc-1左隣がなければ、右端へ sdata = myid*1.23 icount = 1 msgtag = 0 送信データ=自分のプロセス番号*1.23 送信データ個数=1 送信メッセージ番号=0 データ送受信 call MPI_SENDRECV ( sdata, icount, MPI_REAL, ito, msgtag, : rdata, icount, MPI_REAL, ifrom, msgtag, : MPI_COMM_WORLD, stat, ierr ) 自分のプロセス番号と、受信データ、送り主を表示 write (6,*) 'MyID:', myid, ' Rec. Data=', rdata, ' From=', ifrom call MPI_FINALIZE (ierr)おしまい end MPIプログラムの実行方法 %mpif77 test1.f コンパイル %mpirun -np 2 a.out 実行 MyID: 0 Rec. Data= 1.230 From= 1 MyID: 1 Rec. Data= 0.000 From= 0 % mpirun -np 4 a.out MyID: 0 Rec. Data= MyID: 2 Rec. Data= MyID: 3 Rec. Data= MyID: 1 Rec. Data= 3.690 1.230 2.460 0.000 From= From= From= From= 3 1 2 0 地球シミュレータ: 共有メモリ/分散メモリ型並列計算機 ・Node内は共有メモリ型(SMP) ・Node間は分散メモリ型 Node (8CPU) 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Shared Memory Shared Memory 640node*640node Crossbar Switch 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Shared Memory Shared Memory 演算速度と 通信速度のバランスが重要 CPUが高速になるほ ど通信速度が重要 地球シミュレータによる並列FDM(差分法)計算 並列計算 並列計算効率 ノード内スレッド並列、ノード間MPI MPI 領域分割 地球シミュレータ 演算効率・並列化度のテスト ベクトル計算機 (テストモデル) ・4次精度差分法 ・3次元領域分割(MPI) ・格子数:1024*512*512 ・タイムステップ: 800 CPU数 時間[秒] 128 91 1024 16 加速率 5.7 並列化率 最大並列化度 0.999572 2,116 *ベクトル化率=99.6% *演算速度=3.1TFLOPS (Peak性能比:47%) スカラー計算機 黙って座れば、性能が出る CPU数 時間[秒] 128 2,520 1024 344 加速率 7.3 並列化率 最大並列化度 0.999895 9,520 *演算速度=0.14TFLOPS (Peak性能比:5%) IBM Blue Gene/L 普通のプログラムはこんな程度 並列化率、並列化効率の評価 ●加速率:An (測定)1台のCPUでの実効時間:T1 ープログラムサイズが大きく、 普通は測定できない An 1 a (1 a ) n a=.999572(IBM BG/L) a=.999895 (Earth Simulator) (測定1) n台での実効時間:Tn (測定2) m台での実効時間:Tm ●平均加速率: An, Am T1 1 Tn a (1 a ) n T 1 Am 1 Tm a (1 a ) m ●並列化率: a 9,520CPU までOK An a 2,116CPUまで OK Tn Tm m 1 n 1 Tn Tm m n ・次世代スパコン(京速コンピュータ)は十万CPU以上になるのは必須 ・並列化率を上げるための精進が必要
© Copyright 2024 ExpyDoc