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