-----1億是1千萬(wàn)的10倍?-----
早期筆者使用矩量法求解線性方程組,在不使用快速多級(jí)方法,自由度達(dá)到3萬(wàn)時(shí),臺(tái)式機(jī)上已經(jīng)無(wú)法求解出,8G的機(jī)器內(nèi)存不夠用。對(duì)于滿秩矩陣的線性方程組,常規(guī)求解方法時(shí)間復(fù)雜度為n^3(n的3次方)。
對(duì)于自由度1千萬(wàn)以下稀疏矩陣的求解,好的臺(tái)式機(jī)基本能應(yīng)付,而當(dāng)自由度達(dá)到1億的時(shí)候,簡(jiǎn)單的將硬件乘以10倍完全不能滿足要求。因?yàn)橛?jì)算的空間復(fù)雜度,時(shí)間復(fù)雜度并不是線性,通常是NlogN,N^2或者更高。當(dāng)自由度達(dá)到1億時(shí),不僅需要對(duì)硬件核心部件CPU,內(nèi)存擴(kuò)容,而且在磁盤陣列,I/O,并發(fā)計(jì)算,GPU,網(wǎng)絡(luò),帶寬等方面都提出了更苛刻的要求。
在算法方面看,減少網(wǎng)格密度,在物理量梯度大的地方加密,無(wú)變化的地方將網(wǎng)格變稀疏,可以有效減少計(jì)算量;另外優(yōu)化求解算法本身,使其更加易于并行化計(jì)算。
從目前來(lái)看,計(jì)算機(jī)硬件計(jì)算能力的更新速度,跟不上指數(shù)級(jí)求解規(guī)模的增加速度。這也是量子力學(xué)發(fā)展的最大推動(dòng)力!
-----------------
針對(duì)該問題,本文稍微展開一下。
這里的1億,主要指仿真中最終求解線性方程組的自由度個(gè)數(shù),就是剛度矩陣的規(guī)模,即在方程Kx=b中,K的規(guī)模為1億*1億的方陣。
從硬件角度看,性能瓶頸首先在內(nèi)存。目前臺(tái)式機(jī)的內(nèi)存普遍在64G以下。對(duì)于1千萬(wàn)的稀疏矩陣,存儲(chǔ)勉強(qiáng)夠用,加上計(jì)算,一般都不夠用,在windows系統(tǒng)上如果內(nèi)存不夠用,會(huì)啟用虛擬內(nèi)存,也就是用頁(yè)面交換把硬盤當(dāng)內(nèi)存使用,頻繁讀寫磁盤,這時(shí)候性能會(huì)大大降低。而對(duì)于1億自由度的矩陣,可能剛度矩陣組裝都不夠用。對(duì)于一億自由度的矩陣,首先要保證內(nèi)存能夠存儲(chǔ),一般的方法是使用具有超大內(nèi)存的工作站服務(wù)器。
內(nèi)存問題解決后,再就是CPU性能。前面講過,通常矩陣計(jì)算的空間復(fù)雜度,時(shí)間復(fù)雜度并不是線性,而是NlogN,N^2或者更高。使用單核單線程,耗費(fèi)的時(shí)間是條曲線上升趨勢(shì)。雖然稀疏矩陣采用了CSR等方法壓縮數(shù)據(jù),但自由度的平方數(shù)據(jù)仍然還是海量數(shù)據(jù)?,F(xiàn)在的CPU普遍多核多個(gè)邏輯線程。這也要求在進(jìn)行迭代法求解方程組時(shí),合理的進(jìn)行矩陣分解,參考一篇文章入門仿真軟件性能優(yōu)化,采用分治的方法適應(yīng)硬件的需求。
這里需要注意的是單核CPU的性能以及CPU的數(shù)量。根據(jù)實(shí)際情況進(jìn)行分治!
在滿足了單機(jī)CPU運(yùn)行之后,再就是集群分布式計(jì)算。采用多臺(tái)計(jì)算設(shè)備,比如刀片等專業(yè)服務(wù)器,超算等等,這里需要考量的是負(fù)載均衡和網(wǎng)絡(luò)帶寬,即保證單臺(tái)設(shè)備的利用率和整體進(jìn)度保持一致。對(duì)于超大量的計(jì)算,最好能軟件實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃,對(duì)于頻繁交換數(shù)據(jù)的計(jì)算,要注意網(wǎng)絡(luò)帶寬的瓶頸。
再?gòu)能浖矫鎭?lái)看,根據(jù)筆者的研發(fā)經(jīng)驗(yàn),相當(dāng)一部分仿真的性能問題可以通過軟件以及改進(jìn)算法解決。在前處理中,盡量避免軟件中高頻操作,大數(shù)據(jù)拷貝,大量細(xì)小數(shù)據(jù)操作等。如果必須有,對(duì)操作進(jìn)行采樣性能評(píng)估,保證在可接受范圍內(nèi)。在求解線性方程組前,提取矩陣特征,盡可能在最細(xì)度上根據(jù)矩陣特征,同時(shí)結(jié)合模型和業(yè)務(wù)的特點(diǎn),選取最合適的求解方法。
其實(shí)目前對(duì)于數(shù)值計(jì)算方法而言,其算法都是公開透明的,商業(yè)軟件之間真正較量的是業(yè)務(wù)模型的準(zhǔn)確性,算法的穩(wěn)定性以及效率。而這也恰恰是每個(gè)軟件可以改進(jìn)和提升的地方
2004年,ANSYS解出了1億自由度的模型,2008年,ANSYS解出了10億自由度的模型。即使現(xiàn)在來(lái)看,我們認(rèn)為自由度超過1千萬(wàn)的模型是個(gè)大模型,所以1億自由度的模型仍然可以認(rèn)為是超大模型,且只能在超大的服務(wù)器上運(yùn)行,可以想象,隨著硬件的提升和算法的改進(jìn),實(shí)際應(yīng)用中會(huì)有越來(lái)越多的超1億自由度的模型求解。
回到開始的問題,“一億”是“一千萬(wàn)”的十倍嗎?顯然不是。
最后還是以業(yè)內(nèi)的一句話作為結(jié)束語(yǔ):
“如果你的仿真還沒有受到硬件的限制,那說(shuō)明你的仿真還沒有入門”。
編輯:fqj
-
CAE技術(shù)
+關(guān)注
關(guān)注
0文章
9瀏覽量
6945 -
數(shù)值計(jì)算
+關(guān)注
關(guān)注
3文章
5瀏覽量
6897
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論