專利名稱:基于gpu的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法
技術(shù)領(lǐng)域:
本發(fā)明涉及VLSI(Very Large Scale Integrated circuits,超大規(guī)模集成電路) 物理設(shè)計領(lǐng)域,尤其是集成電路片上供電網(wǎng)絡(luò)的設(shè)計和優(yōu)化。
背景技術(shù):
在超大規(guī)模集成電路中,各元器件正常工作的一個重要前提是它們得到正常的供 電電壓。而實際上,在當(dāng)前的超大規(guī)模集成電路的設(shè)計和工作中,供電網(wǎng)絡(luò)上的電壓降已 經(jīng)變得不可忽略,即元器件上得到的供電電壓實際上會小于外部對集成電路供電的電源電 壓。如果供電網(wǎng)絡(luò)上的電壓降過大,就可能使元器件上得到的供電電壓過低,導(dǎo)致元器件的 時延增加影響整體的性能,嚴(yán)重時還會引發(fā)邏輯錯誤。隨著集成電路的制造工藝的發(fā)展,供電網(wǎng)絡(luò)的設(shè)計面臨越來越嚴(yán)重的挑戰(zhàn),這主 要體現(xiàn)在一、芯片的集成度越來越大,元器件的數(shù)目越來越多,因此需要對越來越多的元 器件進行供電;二、由于功耗和散熱方面的限制,集成電路的電源電壓不斷降低,降低的電 源電壓會使供電網(wǎng)絡(luò)上的電壓降閾值降低,電壓降更加明顯;三、由于元器件上的工作電壓 不斷降低,使得噪聲容限變小,對供電電壓的波動更加敏感;四、隨著集成電路的特征尺寸 變小,供電網(wǎng)絡(luò)的線寬也會變窄,進而單位長度上的電阻電容等寄生效應(yīng)更加顯著。因此, 供電網(wǎng)絡(luò)已經(jīng)成為超大規(guī)模集成電路設(shè)計和制造的一個瓶頸,日益受到學(xué)術(shù)界和工業(yè)界的 重視。高效、精確的供電網(wǎng)絡(luò)的仿真,對于供電網(wǎng)絡(luò)的設(shè)計有著至關(guān)重要的意義。首先, 在供電網(wǎng)絡(luò)的設(shè)計過程中,供電網(wǎng)絡(luò)的仿真可以盡早地發(fā)現(xiàn)潛在的問題并進行調(diào)整,避免 在設(shè)計后期再調(diào)整時帶來很大的設(shè)計成本。而目前供電網(wǎng)絡(luò)的優(yōu)化流程一般都是迭代地進 行的,即在當(dāng)前設(shè)計的基礎(chǔ)上根據(jù)仿真的結(jié)果進行調(diào)整,得到下一步的設(shè)計,重復(fù)這樣的流 程直到得到一個合理的設(shè)計,這樣重復(fù)地進行仿真往往是優(yōu)化過程中比較大的時間開銷所 在。目前廣泛應(yīng)用的供電網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)是一個網(wǎng)格狀(Mesh)的拓?fù)浣Y(jié)構(gòu),供電網(wǎng) 絡(luò)對于R模型(只包含電阻,不包含電容、電感)得到的是一個純電阻電路,它適用于靜態(tài) 分析。使用經(jīng)典的節(jié)點分析法,獲得一個大規(guī)模的線性方程組,求解此線性方程組即可求得 所有節(jié)點的電壓值,從而可以進一步分析各節(jié)點的電壓降、檢查電流密度等。供電網(wǎng)絡(luò)對于 RLC模型(包含電阻、電容和電感),通常適用于進行瞬態(tài)仿真。最常見的瞬態(tài)仿真方法是把 電容、電感進行離散化處理,離散化處理后的電容、電感元件等效于一個電阻并聯(lián)一個電流 源,電阻值的大小是恒定的,電流源的大小可以根據(jù)上一個時間點的仿真結(jié)果得到。因此, 瞬態(tài)仿真可以轉(zhuǎn)化成一系列的靜態(tài)仿真,實質(zhì)上就是求解一系列的線性方程組。在供電網(wǎng)絡(luò)仿真中,線性方程組具有良好的數(shù)值性質(zhì),例如系數(shù)矩陣具有對 稱、正定、稀疏、對角占優(yōu)等性質(zhì),求解的主要難度在于規(guī)模巨大,多達(dá)幾百萬甚至上 千萬維。目前,已經(jīng)有多重網(wǎng)格法(multigrid)、預(yù)條件共軛梯度法(PCG)、層次化方法 (hierarchical)、隨機行走法(random walk)等有效的算法來進行求解,但由于規(guī)模過大求解效率仍然不能滿足設(shè)計需求。其中,預(yù)條件共軛梯度算法是一種求解系數(shù)矩陣滿足正定對稱的線性方程組的算 法。該算法是一種迭代的方法,它從某個初始解出發(fā),每一步都沿特定的方向進行一維搜 索,直到得到的解足夠精確。共軛梯度法迭代次數(shù)取決于系數(shù)矩陣本身的性質(zhì),一般認(rèn)為系 數(shù)矩陣越接近單位矩陣收斂越快。因此,對于線性方程組Ax = b,可以通過將其轉(zhuǎn)化為求解 M-1Ax = M^b來改善系數(shù)矩陣的性質(zhì),以減少迭代次數(shù)。這個過程稱為預(yù)條件。
發(fā)明內(nèi)容
為了提高大規(guī)模供電網(wǎng)絡(luò)的仿真速度,本發(fā)明提供一種計算效率高的基于GPU的 集成電路電源地線網(wǎng)絡(luò)的并行仿真方法。為達(dá)到上述目的,本發(fā)明基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,包 括以下步驟(1)將集成電路電源地線網(wǎng)絡(luò)簡化為二維規(guī)則網(wǎng)絡(luò),CPU將所述二維規(guī)則網(wǎng)絡(luò)劃 分為滿足GPU硬件要求的兩個以上的分塊,并向GPU傳輸分塊信息;⑵GPU接收CPU傳輸?shù)募呻娐冯娫吹鼐€網(wǎng)絡(luò)的分塊信息,并將各分塊信息讀入 到與其線程組對應(yīng)的局部內(nèi)存中;(3) GPU對上述分塊信息進行預(yù)條件共軛梯度計算;(4) GPU將計算結(jié)果輸出給所述CPU。進一步地,步驟(1)具體包括步驟a c a.輸入所述二維規(guī)則網(wǎng)絡(luò)的信息到CPU,并計算出導(dǎo)納矩陣A和電流源向量I ;b.設(shè)置初始值Xtl和分塊的預(yù)條件矩陣Bp-1 ;c.將初始值Xtl,導(dǎo)納矩陣A和電流源向量I按各分塊劃分;步驟⑵具體包括步驟d d. GPU的各線程組分別將對應(yīng)各分塊的導(dǎo)納矩陣Ap和電流向量Ip讀入到局部內(nèi) 存中,并在其內(nèi)計算各分塊的初始值k = 0,rk = Ip-ApXk, sk = zk = Bp^rk ;其中,下標(biāo)ρ表 示分塊編號;步驟(3)具體包括步驟e k e.各線程組并行地計算出各分塊的中間向量ApSk;f.處理各分塊的中間向量ApSk之間的行間隙和列間隙,得到Ask ;g.各線程組分別利用向量Ask進行以下計算處理α k = (zk, rk) / (sk, Ask)xk+1 = rk+ α kskrk+1 = rk- α kAskh.將各分塊向量rk+1讀入共享內(nèi)存并調(diào)整成按塊存放的順序,便于進行預(yù)條件計 算;i.進行預(yù)條件計算,zk+1 = Bp-1IV1,并將各分塊zk+1的順序調(diào)整成按塊存放的順 序;j.計算系數(shù)β k,利用β k計算sk+1,β, = (zk+1, rk+1)/(zk, rk)
sk+1 = zk+1-^kskk.置k = k+l,并判斷是否已經(jīng)滿足結(jié)束條件,若未滿足,重復(fù)步驟(e)至步驟 (j),若滿足,計算結(jié)束。特別地,忽略整個供電網(wǎng)絡(luò)的邊界或者供電引腳,每個分塊的預(yù)條件矩陣Bp均相 同,其中,構(gòu)成預(yù)條件矩陣Bp的各元素為二維規(guī)則網(wǎng)絡(luò)中各節(jié)點水平方向和豎直方向上金 屬線段的平均電阻值。進一步地,所述導(dǎo)納矩陣A和電流源向量I根據(jù)輸入電路的電學(xué)參數(shù),在CPU中計 算生成。進一步地,計算完成后的結(jié)果從GPU傳回CPU和主存,并釋放占用的GPU的空間, 并通過計算機輸出或顯示出仿真結(jié)果。本發(fā)明是將集成電路電源地線網(wǎng)絡(luò)簡化為二維規(guī)則網(wǎng)絡(luò)并對其進行分塊處理, 利用GPU(Graphic Processing Unit,圖形處理器)的并行處理能力來加快仿真計算的 速度,同時為了提高仿真的精度,還需在GPU的共享內(nèi)存中集中處理各分塊之間的間隙, 處理完成后,再進行預(yù)條件共軛梯度計算;進而加速了 PCG(Preconditioned Conjugate Gradients Method,預(yù)條件共軛梯度算法)的計算,實驗結(jié)果表明對于相同的PCG算法GPU 可以比CPU快20倍左右。本發(fā)明的供電網(wǎng)絡(luò)仿真,所求解的線性方程組具有良好的數(shù)值性質(zhì),即系數(shù)矩陣A 具有對稱、正定、稀疏、對角占優(yōu)等性質(zhì),而預(yù)條件共軛梯度算法又是求解大型稀疏線性方 程組的有效方法之一,因此本發(fā)明采用預(yù)條件共軛梯度算法對集成電路電源地線網(wǎng)絡(luò)進行仿真。同時,從預(yù)條件共軛梯度算法的流程中不難看出,主要的計算量是矩陣、向量運 算。因此,利用浮點計算能力更強、擅長向量運算的GPU對其進行并行化加速處理,為顯著 地提高計算效率提供了 一個可行的途徑。
圖1為本發(fā)明集成電路片上電源地線網(wǎng)絡(luò)的等效模型;圖2為本發(fā)明集成電路片上電源地線網(wǎng)絡(luò)的電路劃分的示意圖;圖3為本發(fā)明基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法的原理圖。
具體實施例方式下面對本發(fā)明的具體實施方式
做詳細(xì)描述。圖1是本發(fā)明基于GPU的集成電路電源地線網(wǎng)絡(luò)的等效模型,供電網(wǎng)絡(luò)中的金屬 線被等效成分布的電阻(稱R模型),各元器件被建模成了獨立電流源(稱為吸納電流源)。 這種供電網(wǎng)絡(luò)是規(guī)則的水平和垂直方向的金屬線交織而成的網(wǎng)狀的結(jié)構(gòu),即為二維規(guī)則的 供電網(wǎng)絡(luò)。在集成電路制造中供電網(wǎng)絡(luò)水平和垂直金屬線在不同的金屬層,交點處通過通 孔連接,當(dāng)通孔的阻值相對小很多時,可以忽略掉通孔得到二維規(guī)則的供電網(wǎng)絡(luò)。圖2是本發(fā)明基于GPU的集成電路電源地線網(wǎng)絡(luò)的電路劃分的示意圖,導(dǎo)納矩陣 A中的每個非零元素對應(yīng)于圖中的每一條邊,包括實線和虛線。每一條邊都需要進行處理, 會是一個很龐大的矩陣計算,因此本發(fā)明將電路進行分塊劃分,利用GPU的多線程并行計算的功能對各分塊的內(nèi)部進行處理,而塊與塊之間如圖虛線部分的間隙,需將處理好的各 分塊按順序存放到共享內(nèi)存中再進行間隙處理,因間隙產(chǎn)生在相鄰兩行和兩列,所以處理 方式可以轉(zhuǎn)化為向量計算。圖3是本發(fā)明基于GPU的集成電路電源地線網(wǎng)絡(luò)并行仿真方法的原理圖,本實施 例采用節(jié)點分析法對電源地線網(wǎng)絡(luò)進行仿真,節(jié)點分析法的原理如下對于一個節(jié)點k,應(yīng)用基爾霍夫定律,可以得到
j*k其中Vx表示節(jié)點χ的電位,Ik表示所有流入節(jié)點k的電流源之和,表示節(jié)點k 和節(jié)點j之間的電導(dǎo)值(不直接相鄰的節(jié)點電導(dǎo)值為0)。如果取地線的電位為0,并且對 其它所有節(jié)點都應(yīng)用基爾霍夫定律,就會得到一個線性方程組 其中電位向量ν是各節(jié)點的電位,是待求值;電流源向量i是各節(jié)點匯入的電源流 之和,為已知值;導(dǎo)納矩陣A的非對角元素為兩節(jié)點間的電導(dǎo)的相反數(shù),對角線元素是與該 節(jié)點關(guān)聯(lián)的所有電導(dǎo)的總和。本實施例依據(jù)上述節(jié)點分析法的原理,對節(jié)點的個數(shù)在1024*1024到4096*4096 之間的二維規(guī)則網(wǎng)絡(luò)進行仿真計算,步驟如下步驟(1)根據(jù)GPU硬件的限制,將節(jié)點的個數(shù)在1024*1024到4096*4096之間的 二維規(guī)則網(wǎng)絡(luò)劃分為多個16*16的分塊。步驟(2)向CPU輸入導(dǎo)納矩陣A和電流源向量I,電流源向量I是各節(jié)點匯入的電 源流之和;導(dǎo)納矩陣A的非對角元素為兩節(jié)點間的電導(dǎo)的相反數(shù),對角線元素是與該節(jié)點 關(guān)聯(lián)的所有電導(dǎo)的總和。步驟(3)根據(jù)經(jīng)驗設(shè)置初始解Xtl,初始時設(shè)置所有節(jié)點的電壓降都是20毫伏。步驟(4)忽略電路邊界和供電引腳,使用水平方向和垂直方向金屬線段的平均電 阻得到預(yù)條件矩陣的一個分塊&,其大小為16*16 ;然后再利用普通的數(shù)值計算軟件求出其 逆矩陣B/。步驟(5)導(dǎo)納矩陣A和電流源向量I按各分塊劃分,GPU內(nèi)的各線程組分別將對 應(yīng)各分塊的導(dǎo)納矩陣Ap和電流向量Ip讀入到局部內(nèi)存中,并計算各分塊的初始值k = 0, rk = Ip-ApXk, sk = zk = B1^rk,其中下標(biāo)ρ為分塊編號。步驟(6)每一個線程組將對應(yīng)各分塊的中間向量ApSk讀入到共享內(nèi)存中,并按各 分塊的順序進行存儲。步驟(7)在共享內(nèi)存中,處理中間向量ApSk的行間隙和列間隙,得到向量Ask; 由于只涉及相鄰兩行和兩列,因此可以轉(zhuǎn)化成向量操作,使用CUDA例程庫完成,其中, CUDA (Compute Unified Device Architecture,通用并行計算架構(gòu))包含了指令集架構(gòu) ISA (Instruction Set Architecture)以及 GPU 內(nèi)部的并行計算引擎。步驟⑶各線程組分別利用向量Ask進行以下計算處理使用CUDA例程庫中的cublasSdot函數(shù)計算(zk,rk)和(sk,Ask)的內(nèi)積,然后計 算出系數(shù) Ok= (zk, rk)/(sk,Apsk);使用CUDA例程庫中的cublasSaxpy函數(shù)計算xk+1 = rk+ α ksk,以及rk+1 =
7rk—o kAsk。
步驟(9)各線程組將對應(yīng)各分塊向量rk/1讀入共享內(nèi)存并調(diào)整成按塊存放的順序,進行預(yù)條件計算,即使用CUDA例程庫中的cublasSgemm函數(shù)計算B。一1與r㈩的乘法,得到Z㈩一Bp lr㈩,并將Z㈩的順序恢復(fù)到按塊存放的順序;
使用CUDA例程庫中的cublasSaxpy函數(shù)計算S㈩一Z㈩一p kSk。
步驟(10)置k—k+l,并判斷是否已經(jīng)滿足結(jié)束條件,若未滿足,重復(fù)步驟(6)一(9),若滿足,進行下一步驟。
步驟(11)將結(jié)果X、從GPU傳回CPU和主存,并釋放占用的GPU空間。
步驟(12)通過計算機輸出或顯示出仿真結(jié)果。
本實施例使用的GPU為nVidia GeForce 9800G/硬件,該型號硬件包含112個流處理器和1GB顯存。使用的軟件支持是CUDA2.1(包括了驅(qū)動程序、編譯器nvcc release2.1VO.2.122l、CUBLAS 2.1等)。
在精度相同的前提下,對于規(guī)模為1024.1024和4096*4096的電路GPU加速后的運行時間分別為1.44秒和20.9秒,相比于CPU上的相同算法有20倍左右的加速比。
本發(fā)明的實質(zhì)是求解Ax一工式中X向量的值,采用預(yù)條件共軛梯度算法求解過程如下
InputA,工,X。(預(yù)設(shè)初始值)
OutputAx一工的解向量X
r。一工一AX。
S。一r。
for k一0,l,2,.....
do o k一(Zk,rk)/(Sk,Ask)
Xk/l—r/o ksk
rk/l—rk—o kAsk
Zk/1一M 1rk/1
p k一(Zk+l,rk+1)/(Zk,rk)
Sk/l—Zk/l—p kSk
return Xk+l
其中,M為預(yù)條件矩陣。若不進行分塊處理,采用CPU串形處理的方式計算將是很龐大的計算過程,計算的過程會很慢。
而本發(fā)明是將M劃分成塊,并由各分塊構(gòu)成一個對角矩陣如下
其中,B、,B,,…B,為各分塊預(yù)條件矩陣;
分塊求逆即得曠,如下
如果忽略整個供電網(wǎng)絡(luò)的邊界或者供電引腳,各個分塊是相同的,即
] 這樣,只需要預(yù)先計算一個維數(shù)較小的分塊預(yù)條件矩陣的逆矩陣即可。
經(jīng)過上述的處理后,本發(fā)明就可以充分利用GPU的多線程運行的特點,對每一分塊進行并行地處理。實際在GPU中,每一線程組只處理各分塊內(nèi)的部分,然后再集中處理分塊之間的部分(即各分塊的行間隙和列間隙);進行預(yù)條件計算時,即Zk/1一M rk/1步計算,實際是各線程組分別對相應(yīng)分塊的處理,即Zk/1一B。rk/1,再對每個分塊進行并行的迭代求解,直到滿足結(jié)束條件后,得到各分塊的X州向量(集成電路電源地線網(wǎng)絡(luò)各節(jié)點的電位值仿真結(jié)果);將結(jié)果Xk/1向量按分塊順序從GPU傳回CPU和主存,釋放占用的GPU的空間,并通過計算機輸出或顯示出結(jié)果。
以上,僅為本發(fā)明的較佳實施例,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求所界定的保護范圍為準(zhǔn)。
權(quán)利要求
一種基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,其特征在于,包括以下步驟(1)將集成電路電源地線網(wǎng)絡(luò)簡化為二維規(guī)則網(wǎng)絡(luò),CPU將所述二維規(guī)則網(wǎng)絡(luò)劃分為滿足GPU硬件要求的兩個以上的分塊,并向GPU傳輸分塊信息;(2)GPU接收CPU傳輸?shù)募呻娐冯娫吹鼐€網(wǎng)絡(luò)的分塊信息,并將各分塊信息讀入到與其線程組對應(yīng)的局部內(nèi)存中;(3)GPU對上述分塊信息進行預(yù)條件共軛梯度計算;(4)GPU將計算結(jié)果輸出給所述CPU。
2.根據(jù)權(quán)利要求1所述的基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,其特征 在于,步驟(1)具體包括步驟a c :a.輸入所述二維規(guī)則網(wǎng)絡(luò)的信息到CPU,并計算出導(dǎo)納矩陣A和電流源向量I;b.設(shè)置初始值Xtl和各分塊的預(yù)條件矩陣B/;c.將初始值Xtl,導(dǎo)納矩陣A和電流源向量I按各分塊劃分; 步驟(2)具體包括步驟d d.GPU的各線程組分別將對應(yīng)各分塊的導(dǎo)納矩陣Ap和電流向量Ip讀入到局部內(nèi)存中, 并在其內(nèi)計算各分塊的初始值k = 0,rk = Ip-ApXk, sk = zk = Bp^rk ;其中,下標(biāo)ρ表示分塊編號;步驟(3)具體包括步驟e k :e.各線程組并行地計算出各分塊的中間向量Apsk;f.處理各分塊的中間向量ApSk之間的行間隙和列間隙,得到Ask;g.各線程組分別利用向量Ask進行以下計算處理 α k = (zk,rk)/(sk, Ask)Xk+1 — rk+ Q kSk rk+i = rk_ α kAskh.將各分塊向量rk+1讀入共享內(nèi)存并調(diào)整成按塊存放的順序;i.進行預(yù)條件計算,zk+1= Bp-1Iv1,并將各分塊zk+1的順序調(diào)整成按塊存放的順序; j.計算系數(shù)3k,利用計算sk+1,^ k — (Zk+1,rk+i) / (Zk,rk) Sk+1 — Zk+1_ ^ kSkk.置k = k+l,并判斷是否已經(jīng)滿足結(jié)束條件,若未滿足,重復(fù)步驟(e)至步驟(j),若 滿足,計算結(jié)束。
3.根據(jù)權(quán)利要求2所述的基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,其特征 在于,每個分塊的預(yù)條件矩陣Bp均相同,其中,構(gòu)成預(yù)條件矩陣Bp的各元素為二維規(guī)則網(wǎng)絡(luò) 中各節(jié)點水平方向和豎直方向上金屬線段的平均電阻值。
4.根據(jù)權(quán)利要求2所述的基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,其特征 在于,所述導(dǎo)納矩陣A和電流源向量I根據(jù)輸入電路的電學(xué)參數(shù),依照定義在CPU中計算生 成。
5.根據(jù)權(quán)利要求1所述的基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,其特征 在于,計算完成后的結(jié)果從GPU傳回CPU和主存,釋放占用的GPU的空間,并通過計算機輸出或顯示出仿真結(jié)果。
全文摘要
本發(fā)明公開一種基于GPU的集成電路電源地線網(wǎng)絡(luò)的并行仿真方法,主要是利用GPU強大的浮點數(shù)處理和并行處理能力,以及預(yù)條件共軛梯度算法來加速集成電路電源地線仿真計算的方法。本發(fā)明將集成電路電源地線網(wǎng)絡(luò)簡化為二維規(guī)則網(wǎng)絡(luò),CPU將所述二維規(guī)則網(wǎng)絡(luò)劃分為滿足GPU硬件要求的兩個以上的分塊,并向GPU傳輸分塊信息;GPU接收CPU傳輸?shù)募呻娐冯娫吹鼐€網(wǎng)絡(luò)的分塊信息,并將各分塊信息讀入到與其線程組對應(yīng)的局部內(nèi)存中;GPU對上述分塊信息進行預(yù)條件共軛梯度計算;GPU將計算結(jié)果輸出給所述CPU。本發(fā)明與目前主流的CPU上的相同算法相比,它的計算效率能提高20倍左右。
文檔編號G06F17/50GK101908087SQ20101022864
公開日2010年12月8日 申請日期2010年7月16日 優(yōu)先權(quán)日2010年7月16日
發(fā)明者周強, 石晉, 蔡懿慈 申請人:清華大學(xué)