即:在理論方面比較完備,方向也很明確,但由於目前計算機的計算能力達不到而實現不了。從基礎科學理論研究到實際生產中的應用都算。最好大家從不同的專業來談。謝謝。


我有一個夢想:等以後有錢了,我要買兩個超算,一個用來搞科研,一個用來暖房間。

計算物理這樣的科研領域中,處處都能看見計算力不足帶來的瓶頸。

舉例來說,計算物理中常見的分子動力學(Molecular Dynamics, MD)模擬方法,其底層原理是經典力學(也有基於量子力學的,這裡就不展開了),牛頓爵爺幾百年前就搞明白了的東西。

一個最簡單經典力學問題就是拋體運動:給出初始速度拋出一個物體,求其在重力下的運動軌跡。這類問題基本上是高中難度。MD其實跟拋體問題差不多,只不過把單個物體換成了N個原子,把重力換成原子間作用力(一般當作是已知的)。給定N個原子的初速度,已知原子間的相互作用力,按牛頓運動方程一步步算出其運動軌跡就行,就這麼簡單。

原理雖然簡單,但MD算起來卻不容易,這一點往往體現在MD的計算量上。MD的計算量粗略的正比於原子步,也就是原子數N乘以模擬步數(模擬時間)。以一滴水為例,它包含約 10^{21}個原子。MD每算一步大概能模擬10^{-15} 秒,所以模擬一秒需要10^{15} 步。二者相乘,大約在10^{36} 原子步量級。

那麼,我們有多少計算力呢?不妨看看中國最快的超算太湖之光,它的浮點運算速度大約是每秒 10^{17} 次。樂觀的假設一次浮點運算就能完成一個原子步(實際上遠遠不夠),那麼用中國最快的超算,在虛擬空間內將一滴水模擬一秒鐘,至少要消耗10^{19} 秒的現實時間(約3171億年)

所以,限於有限的計算資源,多數情況下,研究人員往往只能對幾十萬個原子進行不到一微秒的小尺度模擬。

千億分之一秒內,一個納米水滴(含1032個水分子)撞碎在牆上的MD模擬

這樣小尺度、短時間的模擬固然有其用武之處,但很多時候的卻是滿足不了研究需求的。例如想要模擬核輻射對材料的損傷,就得對材料進行數年的輻照模擬。類似的鋼材的疲勞斷裂、酸性環境對金屬的腐蝕等模擬,都對時間和空間尺度有很高的要求。

用有限的計算能力來模擬尺度巨大的真實世界,必然要做很多取捨(近似),以精度換尺度。這就好比用渣像素相機拍一副精細的風景畫,遠看還行,放大一看全是馬賽克,關鍵信息一個都看不清楚。

相關收藏:

認真寫科普?

www.zhihu.com圖標


其實影視、設計行業對計算能力的要求也極高,例如場景的渲染計算、物理效果(剛體、柔體、流體、粒子、破碎等)模擬等都非常吃計算機資源,切身體驗過學習摸索那些東西例如搞3D就因為計算性能限制真的苦不堪言,渲染時CPU長期滿載,有時候調整一下參數看實際改變的結果就要等好久。那是幾百、上千萬甚至更多的多邊形搞光線追蹤(模擬光線的反射折射傳播、光子的運動)以及4K以上解析度的挑戰。還好近年來GPU計算髮展越來越快。用GPU跑那些比CPU快的多,相對就舒坦不少(更重要的是成本降低)。當然藝術方面用的是單精度浮點運算能力,科學領域用的是雙精度浮點運算。

生成下面那些以假亂真的場景(都是我做著玩的,不是照片)都需要大量的計算,比玩遊戲的計算量大多了。

那些好萊塢大片的炫酷場景都是一大堆渲染伺服器組聯網慢慢渲染的(渲染農場)。如果計算能力進一步提高,一方面可以更快更便宜的完成特效、動畫製作。另一方面也能更好更真實(特別是光影和物理效果)。讓預算有限的小團隊小工作室也能製作出阿凡達、復仇者聯盟、海王等那些大片的影視特效,有效降低科幻電影成本。順便說一下人工智慧的發展能很好的優化性能提升效率,特別是消除惱人的噪點和鋸齒,不必再一味的暴力計算了,快很多。

還有大家喜聞樂見的全息顯示,除了顯示技術本身的挑戰外對渲染能力的需求也是瘋狂暴增的,畢竟真正的全息顯示是同時渲染很多視角,而不是一個或兩個(立體電影)。特別是用上體積像素渲染和物理模擬後更是需要難以想像的計算性能。

最後希望AMD能注重通用計算的生態建設,不要繼續讓老黃的CUDA壟斷。這樣可以用廉價點的A卡跑各種高性能計算了。現在支持A卡計算的專業軟體太少了。


應該問,有哪個領域目前不受限於計算能力的。

作為一個搞高性能計算的人,深深有種地球人計算機能力已經被外星人鎖死的感覺。

數據分析領域一個演算法隨隨便便就是平方立方的複雜度。

對於一個十億規模大小的數據集,平方複雜度意味著就需要進行一百億億次計算,目前也就太湖之光這種超算能算,立方的話就誰也沒轍了。

未來提高計算性能的路大致有四條,目前看來都很懸:

第一是通過提高CPU頻率來提高單核計算速度,目前看來已經快被榨乾了,再使勁壓榨出個幾倍十幾倍的提高就頂天了。

第二是靠理論科學家研究更快的演算法,但是可惜演算法複雜度是存在下界的,有非常多的問題,包括很多看起來很簡單的問題,目前已知最快的演算法都是指數級別的複雜度,例如,有N個整數,問能不能把他們分成兩堆,使得兩堆整數的和相等。這個問題已知最快演算法都需要 2^N 次計算,而太湖之光每秒大約能計算 2^{60} 次,這意味著N超過100就算不出來了。而且雖然尚未證明,但是學界普遍認為,這些問題的下界就這麼大,不存在更快的演算法。(以前我還專門在一個回答里介紹過:有哪些「大眾默認科學家搞懂了,實際上沒人能解釋清楚」的例子?)

第三是靠堆機器數目或者cpu核數,例如谷歌百度等大公司都有上萬台伺服器組成的大的數據中心,或者像太湖之光這樣的有幾十萬個核的超級計算機。像這種多核或者多機協同計算一個問題的情況,叫做並行計算。這條路有兩個大的限制:

一是其計算能力是線性增長的,當計算量隨著數據平方、立方甚至指數級別提升時,並行計算就顯得力不從心了。

二是非常多問題壓根就不能並行計算,其中包括很多看起來很簡單基礎的問題,像是線性規劃,字典序的深度優先搜索等等。剩下能算的問題裡面,很多問題轉為並行計算後總的計算量是大大增加的,例如原本複雜度是線性的,並行過後變成平方了。當然,同第二點一樣,這一段話的結論目前尚未證明,只是學界大家研究了幾十年沒有任何線索,現在基本處於棄療狀態,所以大多這麼認為。

第四是量子計算。量子計算本身的計算能力可以隨著量子比特數目的增加而指數級提升,所以不害怕計算複雜度的指數式提升。可惜現在對量子計算理論的研究表明,大部分問題可能還是從理論上就沒法用量子計算的模型去算。

那目前大家是怎麼處理大數據的呢?

要麼就是對模型簡化簡化再簡化,簡化到足夠簡單的再去算;

要麼就是用一堆隨機演算法近似演算法去瞎貓碰死耗子,雖然很可能求不出最優解,但是算個差不多的結果勉強能用也就行了。

period


先佔個坑,回頭完善答案細節。

計算材料學和計算凝聚態物理,每年燒掉全球超算相當多的機時,具體的包括但不限於電子結構計算、尤其是強關聯體系的性質,材料光學性質計算;輸運問題中各種高階准粒子相互作用矩陣的計算,比如四聲子散射;材料的degradation、周期性應力引發的金屬疲勞、生物大分子的長時演化的模擬;第一性的分子動力學,尤其是在缺陷和無序的強關聯材料或者Debye溫度很高的材料裡面,這個的難度和對算力的要求某種程度上說是第一性計算和分子動力學疊加在一起了。

在我們計算材料中的電子性質的時候,首先我們需要有描述電子行為的方程,最容易想到的是薛定諤方程。我們從薛定諤方程出發,系統的電子部分的Hamiltonian是:

H = sum_{i}^{n} frac{p_{i}^{2}}{2m_{e}} + frac{1}{2} sum_{i,j}^{n} frac{e^{2}}{4pi epsilon_{0} |r_{i} - r_{j}|} - sum_{i}^{N} sum_{j}^{n} frac{Z_{i}e^{2}}{4 pi epsilon_{0} |R_{i} -r_{j}|} = T_{e} + frac{1}{2} sum_{i,j}^{n} frac{e^{2}}{4pi epsilon_{0} |r_{i} - r_{j}|} + V_{ext}

其中 T_{e} 是電子動能, V_{ext} 是除了電子相互作用以外的勢能部分。因為嚴格求解這個方程需要考慮多電子態,我們做假設多電子態可以分解成單電子態的直積,再考慮了費米子交換反對稱以後可以把電子的多體波函數寫成Slater行列式:

psi (r_{1},cdots, r_{n}) = left |  egin{array} {ccc} psi_{1} (r_{1})  cdots  psi_{n}(r_{1}) \ cdots  cdots  cdots \ psi_{1} (r_{n})  cdots  psi_{n}(r_{n}) \ end{array}   
ight|

很明顯可以看到,隨著電子數變多,這個行列式會變得非常的大。這個其實就是最早的Hatree-Fock近似,現在考慮靜態和動態關聯效應的話會引入更複雜的微擾或者更高階的多體函數的行列式,相對應的有MP-2和Configuration interaction方法,不過為了說明原理我們可以局限在HF近似下。在HF近似下,系統的計算複雜度是隨著電子 n 增大的,具體來說是 n^{4} 。為了簡化計算,避開多體問題這個大坑,同時也為了在不增加太多計算量的情況下考慮更複雜的電子交換關聯作用,我們引入了密度泛函(DFT),把所有的電子交換關聯作用全部扔給了一個密度泛函,然後從多體電子系統下降到了平均場下的單電子體系密度問題。但是即使如此,計算的複雜度仍然有 n^{3} 。在我們引入了贗勢和Frozen core electron近似以後,實際材料體系的電子數大大下降、通常只需要考慮價電子就可以了。這才使得計算大規模的實際材料體系成為可能。雖然說是大規模的體系,實際上現在我們能算的也就是幾百個原子,對應上百或者上千個電子,即使考慮了周期性邊界條件,還是離很多複雜結構所需要考慮的原子數很遠。

如果我們考慮的材料系統是強關聯繫統的話,那麼我們做的單電子假設就失效了,這時候我們需要用別的方法來計算。如果是DFT+U能夠解決的問題,那麼我們的計算開銷還不算太大。但是如果DFT+U不行,如要引入混合泛函(Hybrid Functional),那麼我們HF和DFT都要算一遍,這個計算複雜度又回到了 n^{4} 。更極端地,如果電子相互作用強到混合泛函都失效了,需要引入更高階的全電子方法,比如coupled cluster、full configuration interaction,甚至只能用Quantum Monte Carlo硬解薛定諤方程的話,那麼計算複雜度會上升到指數級,這時候可以說一方面是算力限制了我們,另一方面也可以說是理論限制了我們。

而第一性的計算材料的光學性質,比如吸收發射譜、能帶、exciton的性質,我知道的方法有Time dependent DFT (TDDFT),GW BSE以及一個Harvard的組做的QED-DFT,這些方法都需要處理電子激發態,以及處理多電子相互作用,或者是展開算費曼圖。不論哪種方法都需要非常高的計算量。

不論如何,第一性地求解材料的電子性質因為計算能力的限制,一般只能在幾百個原子的體系中進行,如果能有更強的算力,或者革命性的計算結構變化(比如用量子計算機直接構造多電子態然後演化Hamiltonian),我們就能第一性地計算更大、更複雜的材料體系。

計算材料內准粒子的相互作用,典型的如四聲子散射(在高熱導率材料比如金剛石中很重要)、電聲相互作用(影響電阻、熱導,決定BCS超導)。因為計算四聲子過程需要考慮四階力常數,或者說四個原子的排列組合,所以本身同樣的截斷距離和原子數下四階力常數會遠遠超過二階和三階力常數,比如,如果我們有40個原子,那麼兩兩組合對應有780個二階力常數、9880個三階力常數、91390個四階力常數,四階力常數的數目是二階的117倍、三階的9倍,基本算是多出了一到兩個數量級。如果我們的晶體對稱性更低、結構缺陷更多、原子數更多,那數量級的差距只會更大。在知道了四階力常數以後,我們需要遍歷所有可能的散射通道,而四聲子過程的散射通道數目可能會是三聲子通道數目的 10^{7} 倍。所以四聲子過程的計算非常消耗算力,目前全球能算實際材料中的四聲子過程的就那麼幾個組,算的材料也僅僅是金剛石、BAs、Si這些組分簡單、對稱性高的材料。

而電聲相互作用情況雖然比四聲子散射好一些,但是仍然很複雜。因為電聲相互作用需要計算散射矩陣元,每個矩陣元正比於 <u_{mvec{k}+vec{q}}|Delta_{
uvec{q}}V_{deform}|u_{nvec{k}}> ,其中 |u_{nvec{k}}> 第n個能帶內波矢為 vec{k} 的電子態,計算需要遍歷電子的k空間和聲子的q空間,遍歷的數目正比於 N_{k}^{2} 	imes N_{q} 	imes n^{2} 	imes m 其中n和m分別是電子能帶數、聲子帶的數目。而往往計算電聲相互作用的時候,k空間和q空間都需要劃分的很細密以保證滿足能量守恆,所以電聲相互作用的計算也是非常耗費計算資源的。需要一提的是,這只是一階電聲相互作用,至於二階或者更高階的嘛……

這些複雜的准粒子相互作用雖然非常消耗算力,但是又不能繞開,因為很多輸運的性質都和它們直接相關,比如BAs如果不考慮四聲子過程的話,熱導率會顯著高於實驗結果;高溫下的電導率計算一般需要考慮電聲作用會比較準確。而計算BCS超導的轉變溫度,這個就必須算出來電聲相互作用的強度。因為算力的限制,我們還沒有辦法考慮複雜材料內的這些複雜的准粒子相互作用。

材料degradation、金屬疲勞、生物大分子演化比如大型蛋白質的摺疊,這些問題都屬於材料模擬中的長時模擬。我們之所以想要模擬的時間很長,無非是因為兩點:一是有些動力學過程本身就發生的很慢,比如一些有機分子的旋轉能壘很高、旋轉發生的很慢,並且往往伴隨有積累效應,比如材料的degradation具有累積效應,在輻射劑量比較小或者化學環境沒那麼惡劣的時候需要很長的時間才能看出來效應,這些過程在現實中往往都是以年、甚至百年為單位進行的;二是因為有些我們想要採樣的事件由於能量高或者能壘大而非常罕見,用分子動力學的辦法採樣的話需要考慮非常長的時間。如果僅僅是考慮的時間長,但是每個單位時間的模擬進行的很快也就罷了,偏偏很多複雜體系內的每個單位時間的模擬非常消耗時間。比如生物大分子內,由於原子的數目非常的多,外加各種對分子的幾何或者說拓撲條件限制,需要計算的相互作用複雜,單位時間內能夠進行的模擬並不多,所以我們目前能夠有效計算的時間長度也頂多在ns到 mu s 的量級。然後蛋白質摺疊、液體固化這些過程都在ms的量級,蛋白質運動在秒的量級,所以實際過程的時間尺度與我們能做到的時間尺度的差別導致了我們不能夠有效的模擬實際過程。如果我們能夠有更強的算力,想必就能夠處理更大的體系、模擬更長的時間。

而我上面提到的分子動力學模擬還只是基於Empirical potential的,也就是原子之間的相互作用由經驗公式描述。如果我們要從第一性的角度來描述原子間相互作用進而進行分子動力學模擬的話,恩……相當於分子動力學的每一步都要進行電子結構的計算,可想而知其計算量有多大。而偏偏討厭的是,有很多的體系,我們找不到很好的經驗公式來描述原子間相互作用,比如磁性體系、強關聯電子體系,這種時候就必須用上第一性的計算來進行分子動力學模擬,或者利用第一性計算的結果擬合出來一個夠用的經驗公式。而在複雜結構,比如位錯、grain boundary附近,由於它們的相互作用近似按照 frac{1}{r} 衰減,這意味著我們需要很大的模擬晶胞才能夠放下它們;而在無序體系中由於缺少周期性,理論上我們根本不能用有限的晶胞來模擬(實際會用很大的晶胞)。這些都意味著非常大的模擬體系,也意味著機時的無底洞……

如果我們再進一步的提高問題的難度,降低體系的溫度或者升高系統的Debye溫度,此時原子核的量子效應會非常明顯,這意味著基於牛頓力學的分子動力學的失效,我們必須考慮原子核運動的量子效應。目前的常見做法是路徑積分分子動力學(Path Integral MD, PIMD)。PIMD在每一步演化原子位置的時候都需要大量的計算,不再像牛頓力學裡面那樣簡單積分原子受到的力就可以了。而偏偏我們最常見到的水,就屬於這種情況。水含有大量氫原子,它們的振動頻率很高,所以嚴格考慮水的演化以及涉及到水的系統需要用到PIMD。類似的還有有機晶體。

總而言之,計算材料學和計算凝聚態物理中,由於系統本身的複雜性、計算演算法的複雜性,我們需要非常大量的計算資源才能夠得到一些有意義的結果。所以往往做這方面研究的組都是自己配置小型集群+外部申請大型超算的計算資源,即使如此還會覺得計算資源不足。

另外我知道的還有模擬等離子體裡面的複雜行為,比如湍流、不穩定性,求解大型反應堆內部的中子輸運方程(我聽說他們模擬大型商用反應堆內中子輸運用了上萬個核),高能加速器、對撞機內事件重建,以及大型天文巡天計劃的數據處理,這些方向都是非常消耗算力,也是受限於或者部分受限於算力的。不過這些方向我沒有太具體的了解所以不具體展開了。


RSA加密演算法,涉及到了大數的質因數分解,如果以後算力強到能在短時間內解出來的話,那很多東西都要被顛覆了吧。


推薦閱讀:
相关文章