25
GPGPU GPGPUによる統計的 による統計的 寄生容量抽出アルゴリズムの並列実装 寄生容量抽出アルゴリズムの並列実装 渡邉 貴之 雄亮 寄生容量抽出アルゴリズムの並列実装 寄生容量抽出アルゴリズムの並列実装 渡邉 貴之 雄亮 静岡県立大学 経営情報学部 Takayuki WATANABE and Yusuke MAKI School of Management and Information School of Management and Information University of Shizuoka 静岡県立大学(University of Shizuoka)

GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

GPGPUGPGPUによる統計的による統計的寄生容量抽出アルゴリズムの並列実装寄生容量抽出アルゴリズムの並列実装

渡邉 貴之 槙 雄亮

寄生容量抽出アルゴリズムの並列実装寄生容量抽出アルゴリズムの並列実装

渡邉 貴之 槙 雄亮

静岡県立大学 経営情報学部

Takayuki WATANABE and Yusuke MAKI

School of Management and InformationSchool of Management and Information

University of Shizuoka

静岡県立大学(University of Shizuoka)

Page 2: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

はじめにはじめに

VLSI配線における寄生容量(Capacitance)の抽出法電磁界解析(フィールドソルバ)による手法

FDM(差分法)

FEM(有限要素法)

BEM(境界要素法)(境界要素法)

FRW(統計的手法)

⇒ マクスウェル方程式を出発点とする手法(高精度,低速)

⇒ トランジスタレベル ゲ トレベル⇒ トランジスタレベル,ゲートレベル

簡易的手法

ルールベース(Rule Based)

解析式・経験式(Formula Based)

ルックアップテーブル(Table Based)ルックアップテーブル(Table Based)

⇒ 基本レイアウトの経験式や電磁界解析によって得られた結果を元にパターンマッチング(近似的,高速)

チ プレベル⇒ チップレベル

静岡県立大学(University of Shizuoka)22

Page 3: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

統計的容量抽出手法統計的容量抽出手法Le CozとIversonによる手法

Y.L.LeCoz and R.B.Iverson, "A Stochastic Algorithm for High Speed Capacitance Extraction in Integrated Circuits, " Solid State Electronics, Vol. 35, No. 7, pp.1005-1012 19921012, 1992.

概要導体における電荷値をFloating Random Walk (FRW)を用いて統計的にサンプリングし、導体における電荷値をFloating Random Walk (FRW)を用いて統計的にサンプリングし、モンテカルロ積分によって容量を計算サンプル数が多いほどより精度の高い容量値が抽出できる商用ツール ⇒ Magma社QuickCap, Synopsys社Raphael NXT, Silicon Frontline社F3D

特徴一定の誤差の範囲で計算を打ち切ることも可能メモリ効率が良好メモリ効率が良好問題の規模に依存しない収束率

並列処理への適合性並列処理への適合性モンテカルロ法は各サンプルの計算が互いに独立しているため並列計算に適している先行研究

最大で計150台の計算機をGigabit Ethernetで接続したPCクラスタにおける実装マルチコアCPUを用いた実装

静岡県立大学(University of Shizuoka)33

Page 4: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

GPUGPUによる並列処理による並列処理

GPU(Graphics Processing Unit)グラフィクス処理を主目的とした多数のコア(~数百)からなるプロセッサ

シンプルなコアを束ねたSIMD型処理によって、多数のデータに対して同様な処理を施す用途で高い性能を発揮

CPUに比較して高いピーク性能、メモリバンド幅に比較して高いピ ク性能、メ リ ンド幅

タスク並列でなくデータ並列に適したプロセッサ

( )GP(General Purpose)GPU

GPUをグラフィクス処理以外の汎用計算に利用すること

近年EDA分野におけるGPUの応用が活発化

Nascentric社OmegaSim GX SPICE

A il 社ADS SPICE を計算 クを計算 クAgilent社ADS SPICE

Synopsys社Sentaraus TCAD (FDTD法)

CST社Microware Studio (FIT/FDTD法)

GPUを計算アクセラレータとして使用

GPUを計算アクセラレータとして使用

静岡県立大学(University of Shizuoka)44

Page 5: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

研究目的研究目的GPUを用いたFRW容量抽出アルゴリズムの並列実装について考察

配線パターンの違いによる抽出性能の変化

並列化の実装方法の違いによる抽出性能の変化並列化の実装方法の違いによる抽出性能の変化

予想される課題予想される課題FRWアルゴリズムは並列性が自明のため、GPUへの実装は容易か?

コアあたりの演算性能はCPUに比較して低い

⇒なるべく多くのコアを休むことなく働かせる必要がある

GPUは処理するデ タごとに細かく条件分岐が発生する問題の扱いが苦手GPUは処理するデータごとに細かく条件分岐が発生する問題の扱いが苦手

⇒FDTD法などの差分法や、SPICEで必要となる行列処理などは得意

⇒FRWでは、ランダムウォークの繰り返し回数が試行ごとに異なるなど条件分岐の発生が避けられない

実装は可能だが 高速化が可能とは限らない

静岡県立大学(University of Shizuoka)55

実装は可能だが、高速化が可能とは限らない

Page 6: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

並列実装の対象とした並列実装の対象とした抽出アルゴリズム抽出アルゴリズムLe CozとIversonによるオリジナルの抽出アルゴリズム(2次元)

抽出アルゴリズム概要

導体1における電荷Q ( )∑4

CQ導体1における電荷Q1 :

導体1の電位を0V、導体2の電位を1V、それ以外を0Vと設定:

( )∑≠=

−=1,1

111jj

jj vvCQ

⇒ 電荷Q を求めることで 導体1・導体2間の容量が計算可能

112 QC −=

⇒ 電荷Q1を求めることで,導体1 導体2間の容量が計算可能

E(p0) n(p0)

1 20V 1V

0V

C12

CS0

43 0V

C14C13

静岡県立大学(University of Shizuoka)66

Page 7: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

電荷の計算電荷の計算静電界における導体上の電荷と電界との関係⇒ガウスの法則

( ) ( )∫ ⋅= 000Si dpppQ nEε∫0S

E(p0) n(p0)S0: 導体iを囲むガウス面p0 : ガウス面上の点ε: 媒質の誘電率

i jε: 媒質の誘電率n: 法線ベクトル

ガウス面上の電界分布E(p0)が分かれば電荷の計算が可能

S0

電界分布は未知のため、電位φ (p0)の微分に置き換えて求める

( ) ( )pE ∂ 0φ ( ) ( )pE ∂ 0φ( ) ( )xppEx ∂

= 00

φ ( ) ( )yppEy ∂

= 00

φ

静岡県立大学(University of Shizuoka)77

Page 8: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

電位電位φφ ((pp00))、、電界電界E (E (pp00))を求めるを求める電位φ (p0)を中心に配置した正方形境界S1を仮定

2a3a

y

jS10 aφ(p1)

φ(p0)

4a

x

y

a :1辺の長さp1 :左下頂点(x, y)= (0, 0)から

反時計回りに進んだ距離i j

S

x 反時計回りに進んだ距離φ (p1) :境界電位

0 ≤ p1 ≤ a以外での電位を0と仮定

中心電位φ (p0)を、下辺での電位を積分して求める ⇒

S0

( ) ( ) ( )∫=a

S dppapgp0 11110 , φφ

同様に、中心電界を下辺での電位を積分した形式で記述

( ) ( ) ( ) ( )( )∑

=

=1

111 sinh

sin2sin2sinh2,n

S nanpnn

aapg

ππππ

・・・中心電位へのGreen関数

同様に、中心電界を下辺での電位を積分した形式で記述

( ) ( ) ( )∫=a

XSx dppapgpE0 11110 , φ

( ) ( ) ( )∫a

dE φ

( ) ( ) ( ) ( )( )∑

=

=1

1211 sinh

sin2cos2sinh2,n

XS nanpnnn

aapg

πππππ

( ) ( ) ( ) ( )∑∞

1sin2sin2cosh2 anpnnn ππππ

静岡県立大学(University of Shizuoka)88

( ) ( ) ( )∫= YSy dppapgpE0 11110 , φ ( ) ( ) ( ) ( )

( )∑=

−=1

1211 sinh

,n

YS np

aapg

π

Page 9: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

電荷電荷QQiiを求めるを求める2a3a

すべての辺の影響を加味2a3a

φ(p0)

y

( ) ( ) ( )∫=1

11110 ,S S dppapGp φφ

i jS10 aφ(p1)

4a

x

1

( ) ( ) ( )∫=1

11110 ,S XSx dppapGpE φ

( ) ( ) ( )∫= dppapGpE φ

S0

( ) ( ) ( )∫=1

11110 ,S YSy dppapGpE φ

( )apGS ,11 ( )apGXS ,11 ( )apGYS ,11

S1上の電位からのGreen関数

( ) ( )∫1.0

( )pS ,11 ( )pXS ,11 ( )apGYS ,11( ) ( )∫ ⋅=0

000Si dpppQ nEε

( ) ( ) ( ) ( ){ } ( )∫ ∫ dGGdQ φ

−1.0

0.0( ) ( ) ( ) ( ){ } ( )∫ ∫ +=0 1

110110110 ,,S S ySYxSXi dpppnapGpnapGdpQ φε

( ) ( ) ( )∫ ∫0 a 2a 3a 4a

a=1.0の場合のGreen関数値 [ p1]

( ) ( ) ( ) ( ) ( )( ) ⎥

⎤⎢⎡ +

=pnapGpnapG

appw ySYxSX ,,,, 011011

10 ε

( ) ( ) ( )∫ ∫=0 1

1111100 ,,,S S Si dppapGappwdpQ φ

静岡県立大学(University of Shizuoka)99

( ) ( ) ⎥⎦

⎢⎣ apG

ppS ,

,,11

10

Page 10: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

モンテカルロ積分モンテカルロ積分をどのようにして計算するか?

モンテカルロ積分

( ) ( ) ( )∫ ∫=0 1

1111100 ,,,S S Si dppapGappwdpQ φ

モンテカルロ積分

ある関数f (x)について、 を計算したい

区間[a, b]上の一様乱数xiを取り出してf (xi)を計算するという操作をN回繰り返す

( )∫=b

adxxfI

NN定積分の近似値 ⇒ ( )

( )( )

N

xfab

N

xfdxI

N

ii

N

iib

a

∑∑∫ == −=⋅≈ 11

同様に、 を計算したい

ならば、s (xi) を確率密度関数として区間[a, b]上から乱数xiを取出すと

定積分の近似値

( ) ( )∫=b

adxxfxsI

( ) 1=∫b

adxxs

N定積分の近似値 ⇒ ( )

N

xfI

N

ii∑

=≈ 1

中心電位へのGreen関数は下記の性質を持つ

( )∫ =1

1, 111S S dpapG Gs1を確率密度関数と考えて、Qiをモンテカルロ

積分で計算する

Gs1を確率密度関数と考えて、Qiをモンテカルロ

積分で計算する

静岡県立大学(University of Shizuoka)1010

積分で計算する積分で計算する

Page 11: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

フローティング・ランダムウォークフローティング・ランダムウォーク fwr.exe

S0上から一様乱数により点p0kを選択し、 S1上から確率密度関数をGS1(p1,a)として点p1kを選択する操作をN回繰り返す

S は 導体に接する最大の正方形境界に取るものとするS1は、導体に接する最大の正方形境界に取るものとする

( ) ( ) ( )∫ ∫=0 1

1111100 ,,,S S Si dppapGappwdpQ φ

S1 p0kP1kp1k

( ) ( )

N

pappwdpQ

k

N

kkk

Si

11

10

0

,,

0

φ∑∫ =≈

i j

Sp1kが導体と接するならば(図中の○)、電位φ (p1k )は0Vもしくは1Vと確定

p1k が導体と接しない場合(図中の●)、電位は未知

⇒ を中心とする導体と接する最大の正方形境界を

NS0∫ S0

SS2⇒ p1kを中心とする導体と接する最大の正方形境界を

定義し、下記の関係から導体に着地するまで再帰

的にフローティング・ランダムウォークを実行

S1

p0k

p1kp2k

S3

S4p3k

2

( ) ( ) ( )∫=−iS iiiSii dppapGp φφ ,1 i j

p0k

サンプリング毎に、ランダムウォークの経路とサンプリング毎に、ランダムウォークの経路と

静岡県立大学(University of Shizuoka)1111S0

サンプリング毎に、ランダムウォ クの経路と反復回数は異なるサンプリング毎に、ランダムウォ クの経路と反復回数は異なる

Page 12: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

GPGPUGPGPU本研究ではNVIDIA社のGPU(GTX280)を対象に並列実装を行う

CUDA(Compute Unified Device Architecture)環境でのC言語による実装

GTX280のア キテクチ 概略GTX280のアーキテクチャ概略

Instruction Unit

SPSPSPSP

SMInstruction Unit

SPSPSPSP

SMInstruction Unit

SPSPSPSP

SM Host Memory:マザーボード上のRAMDevice Memory:GPUから直接r/w可能なグラフィックカード上のRAMd SPSPSPSP

SPSPSPSP

Registers

Shared Memory

SPSPSPSP

SPSPSPSP

Registers

Shared Memory

SPSPSPSP

SPSPSPSP

Registers

Shared Memory・・・

グラフィックカ ド上のRAMStreaming Multiprocessors(SM):30基SM内

Instruction Unit基 プ セ サ (

cs b

oard

Constant Cache

Texture Cache

Constant Cache

Texture Cache

Constant Cache

Texture Cache

DeviceMemory

8基のプロセッサコア(Stream Processor: SP)SM内のSPは同一の命令を並列に実行SP間で共有する16KBのShared Memory

Grap

hi

Device Memory

Host Memory

SP間で共有する16KBのShared Memory

メモリアクセス速度Shared Memory >> Device Memory

に対してはキ シ がCPU Device Memoryに対してはキャッシュが存在しないが、その一部64KBをConstant Memory(64KB)をキャッシュとして用いたReadが可能

静岡県立大学(University of Shizuoka)1212

して用いたReadが可能

Page 13: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

CUDACUDAのプログラミングモデルのプログラミングモデルGPUの物理的構成を隠ぺいしたSPMD型プログラミングモデルを採用

grid: GPU上で実行するジョブの単位

thread: gridを並列に実行できる処理に細分化した最小実行単位thread: gridを並列に実行できる処理に細分化した最小実行単位

thread block: threadを複数グループ化した処理単位(block内の最大thread数は512)

warp(縦糸) size: SM内で同一命令が適用されるthread数(SIMDのベクトル長)=32

Instruction Unit

SPSPSPSP

SPSPSPSP

SM

… … … …

thread block

… …

thread

grid

SPSPSPSP

Registers

Shared Memory

C t t C h

warp size

Constant Cache

Texture Cache… … …

各blockは各SMに割り当てられる各blockは各SMに割り当てられる… … …

各blockは各SMに割り当てられる同一block内のthread間では同期やshared memoryの共有が可能各SMには最大8個のblockが同時にロード可能

最大 が適宜 ジ グされ実行

各blockは各SMに割り当てられる同一block内のthread間では同期やshared memoryの共有が可能各SMには最大8個のblockが同時にロード可能

最大 が適宜 ジ グされ実行

静岡県立大学(University of Shizuoka)1313block内の最大32warpが適宜スケジューリングされ実行block内の最大32warpが適宜スケジューリングされ実行

Page 14: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

GPUGPUアーキテクチャに起因する実行効率の低下要因アーキテクチャに起因する実行効率の低下要因記憶階層から来る要因

local変数の最も高速な記憶場所⇒register

SMあたりのregister数=16 384

__global__ void rw_s(float *d_re, float *d_green, …){

int i, loop;float x, y, nx, ny, rate1, rate, len;fl tlocal変数local変数SMあたりのregister数 16,384

1threadで使用するregister数の上限はコンパイルオプションで指定可能

registerから溢れた変数は低速なdevice memoryへ

float snx, sny;float dist, gmax;float w[COND_DIM];…__shared__ float s_green[GREEN_DIM];

local変数local変数

共有メモリ共有メモリ

block内のthread間で共有できる高速なshared memory

SMあたりのshared memory=16KB

収まらない場合は低速なdevice memoryへ

threadのカーネルコード例

…処理1;

device memoryへのアクセスには長いサイクルが必要

なるべく多くのblock, threadをSM上にロードし、適宜warpを切り換えて実行することでレイテンシを隠ぺい可能

しかし 同時にSMにロードできるblock数は SMのregister

if ( a > 10 ) { 処理2; }else { 処理3; }処理4;…

Warpの分散化の例しかし、同時にSMにロ ドできるblock数は、SMのregister数、shared memoryサイズで制限

SIMD型処理に起因する要因

Warpの分散化の例

…処理1

warp 

SIMD型処理に起因する要因warpの分散化

warp内のthreadで条件分岐により実行パスが分かれた場合、各パスを逐次的に実行

処理2

処理3

処理4

a>10のthreadのみ実行

a<=10のthreadのみ実行

warpの収束化

静岡県立大学(University of Shizuoka)1414実行効率が低下

処理4 warpの収束化

Page 15: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

統計的寄生容量抽出アルゴリズムの統計的寄生容量抽出アルゴリズムのGPUGPU実装実装Green関数テーブル

点pik は確率密度関数GSi(pi,ai)に従い乱数によって選択する(i = 1 2 3 …)

S1 p1kp2k

S3S2

よって選択する(i 1,2,3, )

あらかじめCPU側において、a=1.0及びpiを0.0~4.0までM段階に離散化したGSi(pi,1.0)のルックアップ

テーブルを作成し、GPU側に転送して利用する i j

p0k

p2kS4p3k

、 側 転送 す

電界へのGreen関数についても同様

Green関数テーブルはshared memoryに格納したい

i j

S0Green関数テ ブルはshared memoryに格納したい

shared memoryは16KB

M=1024の場合、単精度で1blockあたり4KB×3=12KB必要 ⇒ 2blockでSMの容量over

1.0

( )apGS ,11 ( )apGXS ,11 ( )apGYS ,11

必要 容

妥協案 ⇒ 64KBのconstant memoryを介したdevice memoryへの格納

−1.0

0.0

乱数ジェネレータGreen関数を確率密度関数とした乱数の並列生成法

各threadにて疑似乱数を生成(文献[8]の手法)

0 a 2a 3a 4aa=1.0の場合のGreen関数値

[ p1]

静岡県立大学(University of Shizuoka)1515

各threadにて疑似乱数を生成(文献[8]の手法)

棄却法によりGreen関数の確率密度分布に従う乱数を得る

Page 16: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

基本的な実行フロー基本的な実行フロー thread総数 tnum= gsize×bsizeGreen関数テーブル(gtable)の作成

1回のサンプリングを単純に1つのthreadに割り当てる

gridで起動するblock数=gsize

Green関数テ ブル(gtable)の作成乱数種z[4][k], {k=1,…,tnum} の生成電荷qi[j][k] =0, {j=1,…,n; k=1,…,tnum}サンプリング回数N[k]=0, {k=1,…,tnum}

上記データをGPUのDevice memoryへ転送CPU

各block内のthread数=bsize

各threadでは、ML回のサンプリングを行い処理を終了

grid全体でのサンプリング回数は

block[1]thread[1] thread[32]gtableをs_memに手分けしてcopy

gtableをs_memに手分けしてcopy

・・・ ・・・

同一命令を実行

GPU

grid全体でのサンプリング回数は、ML×gsize×bsize

shared memoryを使用するか、S0上の点p0の選択

導体と接する最大の

lp=0

S0上の点p0の選択

導体と接する最大の

lp=0

blo

thr

同期 __syncthreads()

yを使用する 、constant memoryを使用すか

shared memoryを使用する場合には、処理に先だって各threadで手分けしてdevice memoryからshared memoryへのテーブルの

導体と接する最大の正方形境界Sの探索

S上の点pの選択

pが導体jに着地

導体と接する最大の正方形境界Sの探索

S上の点pの選択

pが導体jに着地

ck [gsize]

ead[bsize]

・・・

nwarpのmemoryからshared memoryへのテーブルの

コピーが必要

コピーの終了を__syncthread()命令によって待ち合わせる

qi[j][1] += w(a)N[1]++

++lp > ML

qi[j][32] += w(a)N[32]++

++lp > ML

同期 syncthreads()

y

yn

warpの分散

warpの収束

Thread毎に導体に着地するまでのウォーク回数がばらつくので、warpが分散化する

容量Cijの近似値Cij = ‐Σ qi[j][k] / Σ N[k] ×S0の長さk=1

tnum

k=1

tnum

同期 __syncthreads()

CPU

静岡県立大学(University of Shizuoka)1616

分散化するΣN[k]>MAX_LOOP

y

n

Page 17: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

数値例数値例 … … 例題1例題11.2

33導体(黒塗)間の容量を計算

2.02.0

1.02

3

(0.8,3.4)表1:容量値の精度比較(サンプル数N = 10,000,000)C12 (pF) C13 (pF)

0.8

1.0

1(4.4,1.9)

C12 (pF) C13 (pF)Raphael (BEM) 7.399003 10.93373 統計的抽出 7.369956 10.97576

誤差 0.39% 0.38%

CPU(シングルスレッド)とGPUの実行時間を比較1秒当たりのサンプリング回数(N/sec)を比較

0.8(0,0)例題1(スケールは任意)

表 2:開発及び実験環境 (a) CPUのみ (b) CPU+GPU

CPU Intel Core i7 965 Extreme Edition 3 2GHz

Intel Core2 Duo E6850 3 0GHzEdition 3.2GHz 3.0GHz

GPU ATI Radeon HD 4870 NVIDIA GeForce GTX280RAM 12GByte 8GByte OS 64bit OpenSUSE Linux 11.0 64bit FedoraCore Linux 8.0 CC GNU gcc 4.3.1 CUDA2.1 nvcc

grid内のblockの数(gsize)と、block内のthreadの数(bsize)の組み合わせを変化させて、N/secを測定

組み合わせを [gsize:bsize] と表記(例えば[1:1]など)

g

静岡県立大学(University of Shizuoka)1717ランダムウォークの繰り返し回数が一定値(MAX_WALK)を超えた場合、ウォークを中止(中止した回数はサンプリング回数に含めない)

Page 18: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

数値例数値例 … … 例題1(例題1(cont.cont.))Green関数テーブルの離散化数M=1024(計12KB)

shared memoryに配置した場合と、constant memoryに配置した場合を比較

[ 1]とし を1から増加させた場合のN/ (つまりbl k内のth d数は1)[n:1]とし、nを1から増加させた場合のN/sec(つまりblock内のthread数は1)

4 0 0

(千回

)

c o ns ta nt m e m o ry

2 0 0

3 0 0

リン

グ回

C P Uの み

0 5 0 1 0 0 1 5 0 2 0 0 2 5 0 3 0 00

1 0 0

秒間

サン

プ s ha re d m e m o ry

shared memory条件ではnが30を超えると頭打ちSMには1block分のGreen関数テーブルと図形情報しか格納できないため

1 g rid内 の b lo ck 数 ( 個 )

SMには1block分のGreen関数テ ブルと図形情報しか格納できないため

SM数30基×同時にロード可能なblock数1=30

constant memory条件では、nが240までほぼ線形的なN/secの増加数 基 時 ド 能な 数

静岡県立大学(University of Shizuoka)1818SM数30基×同時にロード可能なblock数8=240

Page 19: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

最適な最適なgsizegsizeととbsizebsizeの組み合わせの組み合わせSMが同時にスケジューリング可能な最大warp数である32warp(=1024thread)を充填できる値が理想

しかし h d の容量や i t の総数から 実際に充填されるしかし、shared memoryの容量やregisterの総数から、実際に充填されるwarp数は32warp以下

充填の目安 ・・・ occupancy(以下OC値) =(実際に充填可能なwarp数)

(最大 数)

OC値が大きいほどSPを効率的に使用できる可能性が高まる

本実装の最適なgsizeとbsizeの組み合わせ

(最大warp数)

Max Occupancy32

Varying Block Size本実装の最適なgsizeとbsizeの組み合わせ

計算カーネルのregister使用数=25

NVIDIA社CUDA occupancy calculatorを用いて計算

h d 条件 ⇒ [30 512](OC値 50%)

24

32

arp

Occ

upan

cy

shared memory条件 ⇒ [30:512](OC値=50%)

constant memory条件 ⇒ [60:320](OC値=63%)

最適条件での秒間サンプリング回数

My Block Size 512

8

16

ultip

roce

ssor

Wa

016 80 144 208 272 336 400 464

Mu

Threads Per Block

shared memory条件での

CPU のみ CPU+GPU(s_mem)

CPU+GPU(c_mem)

例題 1 166,823 504,325 (x3.0) 466,109 (x2.8)

静岡県立大学(University of Shizuoka)1919

y条件CUDA occupancycy calculatorの結果

Page 20: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

例題1の再考例題1の再考例題1では、GPUとCPU(シングルスレッド)の差は3倍程度

期待外れの原因は?ランダムウ クの繰り返し回数を調査ランダムウォークの繰り返し回数を調査

10,000回のランダムウォークで得られた繰り返し回数の頻度をプロット

ダ 終 数 広くばランダムウォークの終了までの回数は広くばらついている

MAX_WALK(10,000ウォーク)まで繰り返しているランダムウォークが約0.9%存在

block内のthreadの内、ウォークが終了しない少数のthreadがボトルネックとなっている

1000

10000

1

10

100

頻度

1

1‐10

51‐60

101‐1

10151‐1

60201‐2

10251‐2

60301‐3

10351‐3

60401‐4

10451‐4

60501‐以

静岡県立大学(University of Shizuoka)2020

5

ランダムウォークの繰り返し回数

Page 21: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

例題1の再考例題1の再考 (cont.)(cont.)thread毎のウォークの終了がばらつく場合、計算効率の向上が見込めない

warp内では、同一命令は複数のthread間で並列に実行可能

異なる命令は逐次的に処理異なる命令は逐次的に処理

早期にウォークが終了したthreadは、最も長いウォークの終了まで待たなければならない

h d[1] h d[2] h d[3] h d[32]流れ

S0上の点p0の選択

電荷の更新

S0上の点p0の選択 S0上の点p0の選択S0上の点p0の選択 ・・・

待ち 待ち 待ち

thread[1] thread[2] thread[3] thread[32]

ウォーク ウォーク ウォークウォーク

電荷の更新待ち 待ち

待ち

待ち

待ち

待ち

待ち

ウォーク

ウォーク

ウォーク

ウォーク

ウォーク

ウォーク

ウォーク

ウォーク

電荷の更新・・・

待ち

待ち

待ち

待ち

待ち

待ち

待ち

待ち

待ち

・・・

・・・

・・・

ウォーク

ウォ ク待ち 待ち待ち

MAX_WALKで終了しなければ中止

乱数種の記録乱数種の記録乱数種の記録乱数種の記録

ウォーク

各warpでの処理の流れのイメージ図

静岡県立大学(University of Shizuoka)2121

各 p 処理 流れ イ ジ図

Page 22: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

例題2、3例題2、3ウォーク回数のばらつきが少ない例題を検証してみる

例題1の下方に接地面を設定した例題2

導体がより多く接地面を含む例題3導体がより多く接地面を含む例題3

23

100

1000

10000

頻度

1

1

10

0 60 0 0 0 0 0 0 0 0 上

20.0

1‐1 51‐ 6

101‐1

1151‐1

6201‐2

1251‐2

6301‐3

1351‐3

6401‐4

1451‐4

6501‐以

ランダムウォークの繰り返し回数

0例題2

例題2におけるウォーク回数の頻度

秒間サンプリング回数のまとめ

6.0

3.0

1.31.7

1 2 3 4 5 6 7 8 9 CPU のみCPU+GPU (s_mem)

CPU+GPU (c_mem)

例題 1 166,823 504,325 (x3.0) 466,109 (x2.8) 例題 2 1,062,406 16,647,592 (x15.7) 15,122,814 (x14.2)

秒間 リ グ回数

静岡県立大学(University of Shizuoka)2222

6.0

0例題3

例題 2 1,062,406 16,647,592 (x15.7) 15,122,814 (x14.2) 例題 3 1,324,771 15,399,345 (x11.6) 13,759,904 (x10.4)

Page 23: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

RefillRefillアルゴリズムアルゴリズムウォーク回数のばらつきへの対策

早期にランダムウォークが終了したthreadは、ガウス面上のポイント選択に立ち戻って新たなウォークを開始(繰り返し回数が何回目だろうとウォークはウォーク)戻って新たなウォ クを開始(繰り返し回数が何回目だろうとウォ クはウォ ク)

S0上の点p0の選択 S0上の点p0の選択 S0上の点p0の選択S0上の点p0の選択 ・・・

thread[1] thread[2] thread[3] thread[32]

ウ ク ウ ク ウ クウ ク

流れ 再初期化処理による

warp分散のペナル

電荷更新、乱数種記録 待ち 待ち 待ち

ウォーク ウォーク

ウ ク

ウォーク

ウ ク

ウォーク

ウ ク

S0上の点p0の選択 待ち 待ち 待ち

ウォーク

ウ ク

ウォーク ウォークウォーク

ティは増すものの、threadを休ませることなく効率的に計算資源を活用

電荷更新、乱数種記録

電荷更新 乱数種記録

待ち 待ち

待ち 待ち

待ち

待ち

ウォーク ウォークウォークウォーク

S0上の点p0の選択

ウォーク

待ち 待ち待ち

ウォーク ウォークウォーク

源を活用

MAX_WALKに至ったthreadのみ乱数種を

電荷更新、乱数種記録

・・

待ち 待ち待ち

・・

・・

待ち 待ち待ち S0上の点p0の選択

ウォークウォークウォーク ウォーク

・・

記録2回目以降のランダムウォークがMAX WALKで中断さ・・ ・

全threadのランダムウォークは、MAX WALKで中止

乱数種の記録待ち待ち 待ち

ウォークウォークウォーク ウォーク

MAX_WALKで中断されたthreadは、次回もう一度同じ乱数種を使いウォークを開始

静岡県立大学(University of Shizuoka)2323

全t eadのランダムウォ クは、 _ で中止

Page 24: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

最終的な秒間あたりのサンプリング回数最終的な秒間あたりのサンプリング回数

CPU: Intel Core i7 965 Extreme Editionのシングルスレッド実行

GPU: NVIDIA GeForce GTX280

CPU のみ CPU+GPU (Refill, s_mem) 例題 1 166 823 6 333 852 ( 38 0)例題 1 166,823 6,333,852 (x38.0)例題 2 1,062,406 35,569,620 (x33.5) 例題 3 1 324 771 39 919 208 (x30 1)

Refillアルゴリズムによって、計算資源の有効利用が可能である

例題 3 1,324,771 39,919,208 (x30.1)

Refillアルゴリズムによって、計算資源の有効利用が可能であることを確認

静岡県立大学(University of Shizuoka)2424

Page 25: GPGPUGPGPUによる統計的による統計的 寄生容量 …pana4405.u-shizuoka-ken.ac.jp/wp-content/uploads/2009/09/...y商用ツール⇒ Magma社QuickCap, Synopsys社Raphael

まとめまとめGPUを用いた統計的寄生容量抽出アルゴリズムの並列実装例について考察単純な並列化を適用した抽出アルゴリズムをGPUに実装単純な並列化を適用した抽出アルゴリズムをGPUに実装

ランダムウォークの繰り返し回数のばらつきが、計算速度に大きく影響を及ぼすことを確認

Refillアルゴリズムを提案し、GPUに実装Refillアルゴリズムを提案し、GPUに実装3パターンのケース全てにおいて、Intel Core i7 965 Extreme Editionのシングルスレッド実行に比較して約30倍以上の高速化

1. T.Sakurai, "Closed-form expressions for interconnect delay, coupling, and crosstalk," IEEE Tran. Electron1. T.Sakurai, Closed form expressions for interconnect delay, coupling, and crosstalk, IEEE Tran. Electron Dev., vol. 40, no. 1, pp.118-124, Jan. 1993.

2. N.D.Arora,"Modeling and extraction of interconnect capacitances for multilayer VLSI circuits," IEEE Tran. CAD, Vol. 15, Issue1, pp.58-67, Jan. 1996.

3. Y.L.LeCoz and R.B.Iverson, "A Stochastic Algorithm for High Speed Capacitance Extraction in Integrated Ci i " S lid S El i V l 35 N 7 1005 1012 1992Circuits, " Solid State Electronics, Vol. 35, No. 7, pp.1005-1012, 1992.

4. P.M.Morse and H.Feshbach, "Methods of Theoretical Physics (Part I), " McGraw-Hill, New York, 1953.5. N.Sawhney, S. Batterywala, N.Shenoy and R. Rudell, "Parallelizing a Statistical Capacitance Extractor, " Proc.

in 8th VLSI Design and Test Workshop (VDAT) 2004, Aug. 2004.6 Synopsys Inc "StarRC Fast Field Solver Solution"6. Synopsys, Inc. StarRC Fast Field Solver Solution ,

http://www.synopsys.com/Tools/Implementation/SignOff/CapsuleModule/StarRC_ffss-wp.pdf, Sept. 2009.7. S. Batterywala and M.Desai, "Variance Reduction in Monte Carlo Capacitance Extraction," Proc. in 18th

International Conference on VLSI Design, Issue3-7, pp.85-90, Jan. 2005.8. H.Nghuyen, 中本浩監訳, "GPU Gems 3 日本語版," ボーンデジタル, 2008年8月.

" "

静岡県立大学(University of Shizuoka)2525

9. NVIDIA Corp, "NVIDIA CUDA C Programming Best Practices Guide", CUDA Toolkit 2.3, July 2009.10. 伊藤俊秀, 草薙信照, "コンピュータシミュレーション," オーム社, 2006年3月.11. NVIDIA Corp., "CUDA GPU Occupancy Calculator"