不靠譜的雪和國際科學大獎
文章來源: | 發布時間:2016-12-05 | 【打印】 【關閉】
2016年11月中旬,在美國鹽湖城召開的全球超級計算大會上,以中國科學院軟件研究所楊超等人完成的“千萬核可擴展大氣動力學全隱式模擬”獲得了本年度的高性能計算應用最高獎——戈登·貝爾獎。
戈登?貝爾獲獎證書
楊超研究員在SC大會現場介紹項目工作成果
這個獎項有多大的意義,獲獎課題到底做出了什么樣杰出的成就,它跟我們的生活又有什么樣的關系?
最近你的朋友圈有沒有被賣萌的中國氣象局刷屏?盡管這次老天爺搗亂,但不得不說,絕大部分時候氣象局和天氣預報還是靠譜的。細想一下,不覺得天氣預報很神奇嗎?足不出戶,也不用掐指去算,我們就能知道明天、后天乃至一周內的天氣變化,這豈不是諸葛再世,孔明重生。
獲獎工作跟天氣預報有著密切的關系,你瞧,名稱中的“大氣動力學”,這可正是氣象學家們預測天氣的法寶之一。要了解獲獎工作的意義,我們先得來了解一下科學家們是怎么用計算機來進行天氣預報的。
如果現在在你頭頂有一片黑壓壓的雨云,而天上又正刮著北風,把雨云往南吹,那你是不是可以預測南方某個地方即將迎來一場大雨?
這是人們依據生活經驗或常識的天氣預報,但要準確的說出這場雨的具體時間、地點、雨量大小、延續的時間,這就遠超出人們的經驗和常識了,需要科學家們出場“施法”。
首先出場的是氣象科學家們,他們需要發現天氣變化的真正奧秘所在,并把這個奧秘清晰的呈現出來。用科學的語言說,那就是氣象學家們需要分析出天氣變化與哪些因素有關,并用一些數學方程描述出這些因素和天氣變化的內在關系。獲獎成果中的“大氣動力學”方程組就是氣象氣候中最重要的奧秘之一,它研究的方程長得就像下面圖示一樣,看起來很復雜。不同的符號代表了不同的物理量,包括速度、氣壓、濕度等。不同物理量可以千變萬化,但不管怎么變化都必須遵循這個方程所限定的規律——是不是有孫悟空翻不出如來佛手掌心的感覺?
獲獎成果所針對的大氣動力學方程組
氣象學家們給出了上面這樣的方程,但計算機可沒法去理解這個,這個時候就需要計算數學家們出場了。
計算數學家們的最主要任務是給出求解上面這個方程的計算方法,也就是算法。首先要做的是離散化。離散化?!蝦米
要認識“離散”,可以從它的天敵“連續”入手。對一個地區比如北京的天氣預報來說,所謂連續就是要預測出這片土地上每一個地方(每一分、每一寸乃至每一個細微點)的天氣情況。那總共要預測多少個地方呢?無數個!這顯然沒有必要。更重要的是,無論是人還是計算機,都沒法處理這種無數個的問題,因為這意味著永遠算不完。既然連續不可能,也沒必要,那就該離散了。
離散就是對北京地域進行打網格,劃分成一個個小格子,每一個小格子內的天氣是一樣的,這樣要對北京進行天氣預報,其實就是對下面的每一個小格子進行預報。不管格子是大還是小,但小格子的數量是有限的,這樣就可以計算處理了。
對北京地域的離散化/網格化
從上面的圖上大家就可以知道,網格越密,那就意味著預測的精度越高。那為了更精確的預報,是不是越密越好呢?確實是越密越準確,但密到一定程度以后要更密,就只能是——臣妾做不到呀。為什么做不到,咱們待會兒細說。
那么北京現在的網格大小是多大呢?度娘說啦,現在是3公里,力爭5年到到1公里。也就是說,在每個3公里×3公里的網格區域里,氣象局認為天氣是一樣的。
回到計算數學家們的工作上來,離散化或者網格化是他們工作的第一步,但需要注意的是,實際的網格可不是像上面地圖一樣是二維的哦,而是包含了高度的三維網格,也就是說不是小方格,而是小方塊。想想也是呀,刮風下雨全在天上呢,研究天氣問題,哪能盯著地面呀。
離散化之后,每一個小方塊就是一個獨立的個體,有自己的壓力、速度、溫度、濕度等數值信息。其中有些點的數值是我們現在知道的,這主要是通過氣象站、氣象衛星、氣象氣球等多種途徑采集的數據,根據這些已知點的信息,然后默念氣象學家們給出的大氣動力學、大氣熱力學等方程口訣,就可以計算推演一段時間以后,所有網格點的參數信息。這就是數值天氣預報,也就是用計算機算出來的未來天氣情況。
計算數學家們最主要的工作,就是將上面的方程翻譯成小方塊之間的計算關系。這里有差分法、有限元法、有限體積法等多種方法,幾乎每一種方法都凝聚了全世界大量數學家的智慧,因為一個好的方法,它必須滿足正確、可靠、穩定、精確、高效等多個條件。
具體的方法我們就不在這里說了,你只要記住,現在,計算數學家將氣象學家的神秘的方程口訣變成了可以在計算機上處理的算法了。那下一個出場的,就該是“程序猿”們了。
程序猿或者計算機科學家面臨的任務,是將算法寫成可以在計算機上執行的程序。這聽起來好像很簡單——打斷一下,你聽說過天河、神威的大名嗎?比如說天河二號,神威·太湖之光?如果沒有聽過,那你就OUT了;如果聽說了,你覺得在這些計算機上寫程序是簡單的事情嗎?要知道,這些可是傳說中的超級計算機,而且還是當前世界上最快的兩臺計算機。什么?有多快,那你聽清啦:神威·太湖之光相當于普通家用電腦的200萬倍!!在這樣的電腦上寫程序,跟在普通電腦上能一樣嘛,難度沒有200萬倍,我看也得有個2萬倍。
超級計算機為什么有那么強大的能力呢?其實很簡單,那就是“人多力量大”、“團結就是力量”!每臺超級計算機都由大量的計算核心(計算節點)組成,計算處理問題時,這些計算核心團結協作,一起努力工作,這就是所謂的“并行計算”。
計算機科學家們的主要任務,就是將計算數學家給出的算法,寫成能在超級計算機上高效執行的并行程序。這可不是簡單的工作。這種不簡單,各行各業的領導們最好體會了:帶團隊不容易呀!尤其是大團隊。想想呀,要將一件工作交給100個人做,協調組織的挑戰該有多大? 有些工作,比如抄寫生字10000遍還行,讓100個人每人抄100遍就行;但有些工作,比如讓100個人蓋間房子或者寫篇小說,這就牽涉到100個人有不同的分工,不同分工的人之間還要頻繁的開會溝通;除此之外,還要考慮100個人有人偷懶,有人生病,…… 計算機科學家們面臨的挑戰和這個類似,他們需要指揮、協調眾多計算核心,讓它們齊心協力,不僅要把工作做對,還要做得快、做得好。
還記得獲獎課題的名稱嗎,“千萬核可擴展大氣動力學全隱式模擬”,這次楊超和他的小伙伴們使用了超過10000000個核來計算一個問題,驚呆了沒?
最后需要補充的是,這三類科學家可都不是獨善其身、明哲保身的人哦,他們通常身兼多職。例如楊超研究員的工作既可屬于計算數學領域,又屬于計算機軟件領域。事實上,只有身兼多職才有更開闊的視野,才更利于合作、研究以及取得成就。
首先,從成果名稱上,我們就能清晰的看到多領域科學家的協作:
l 氣象學家貢獻了大氣動力學;
l 計算數學家負責全隱式模擬算法;
l 而計算機科學家實現千萬核可擴展計算。
當然,還是剛剛所說的,這三個部分不是獨立的,每一部分都需要多領域專家的通力協作。
我們首先來了解一下他們到底做了什么工作吧。這可是我辛辛苦苦閱讀了他們長達12頁的論文之后才領悟的奧妙。
楊超和他的小伙伴們這次完成的是一次氣候的數值仿真。注意哦,這里是氣候,而不是氣象。
通常氣候是指某一地區長時期內(30年或更長)的天氣狀態的綜合表現。氣候和前面所說的天氣預報針對的是同一個問題,只是氣候通常研究的區域更大,計算的時間更長。它不是用來對某一天的天氣進行預報,而是對整個地區乃至全球未來的地理、氣象等因素進行推演預測。所以換句話說,對氣候而言,氣象關心的那都是小事情。當然,問題本質以及如前面所述的數值計算的過程那都是一樣一樣兒的。
但正因為氣候和氣象關心問題的尺度不一樣,它們兩者之間沒法對接:氣象模擬的網格需要精細到幾公里乃至1公里以內,而氣候模擬網格通常為幾十乃至幾百公里;氣象模擬的時間精度要求到小時乃至分鐘,而氣候模擬通常到天、月、年。如果能將氣候模擬和氣象模擬對接起來,那就可以大幅提升彼此預測的準確度,為國計民生乃至全人類的發展有著重大的意義。 美國、歐洲、日本、中國……,全世界的科學家們都在為這個目標而努力著。
獲獎成果的現實或科學意義正體現于此,它在打通氣象和氣候模擬之路上邁出了標志性的一步。
獲獎成果計算的區域是北緯18度至北緯72度之間,在地球儀上沿著兩條線各畫一個圓,計算的就是這兩個圓之間的帶狀區域,差不多占了整個地球表面積的1/3。然后,記得是三維問題哦,從地面往上30公里都在研究范圍內,超出這個范圍,就認為對地表的的氣候沒有影響啦。所以,最后實際計算機需要處理的網格區域大小為40000公里×6000公里×30公里。
在算法層面,他們提出了一個新的全隱式計算方法,可以快速、正確的求解氣象學家給出的那個方程組。和已有的其他算法相比,這個算法最大的優勢在于其高效性,也就是算得快!有多快呢?比美國的同類下一代大氣模擬系統的計算效率提升近一個數量級(接近10倍或幾十倍)!
算得快意味著在相同的時間內,可以算得更多,也就是說,跟現有的其他方法相比,可以算更精細的網格。事實上,他們測試的最小網格已經到了488米,這比現在北京天氣預報的網格還要小!這樣一來,這個新的算法完全可以用來解決氣象和氣候模擬不能打通的問題。
計算結果的呈現:溫度在不同模擬日的變化
這么厲害的算法到底是怎么實現的呢?拜托,這是一篇科普文章,不是科學研究論文,要感興趣的話,去聯系獲獎團隊的成員們吧,他們可有12人呢。
不過,不管他們的算法再精神高妙,本質上,可以用兩個字來形容,那就是“偷懶”!哦,說錯了,其實是“聰明的偷懶”——干的少,可還干得好!用科學的語言來描述呢,那就是“在不降低計算結果正確性的前提下,近可能的減少計算工作量”!計算量少了,計算效率可不就高了嘛。不過看看他們算法的一些關鍵詞,“DD-MG預條件子”、“GP-ILU分解”,這是多么的高大上呀。
除了新的厲害算法之外,成果的另一個主要突破是前面提及的,在高達一千萬個計算核心的超級計算機上實現了算法,并實現了高效的并行計算。
聽起來好厲害!具體是怎么回事呢?讓我們來做點小學數學計算:在40000公里×6000公里×30公里區域上,網格大小是488米(為什么是488而不是500呢,我也疑惑中),總共是(40000×5000×30)/(0.488×0.488×0.488)≈1000多億網格,每個網格有壓力、速度等6個需求求解的未知量,最終的未知數個數約7700億!這樣的問題,也只有世界最快的超級計算機和我國最優秀的一群年輕科學家們能夠勝任!
記得前面說的臣妾做不到的事情嗎,為什么把網格的尺寸縮小或者說把計算的精度提高這么困難呢?這是因為,如果網格尺寸縮小一半,例如從1公里大小縮減到500米,由于處理的網格是三維的,那就是把原來1公里×1公里×1公里的立方塊剖分成了500米×500米×500米的小立方塊,1個變成了……8個!這樣計算機要求解的未知數的個數也是原來的8倍,而求解過程的工作量可是比未知數的平方還要大,也就是說,網格精度每增加一倍,計算機的工作量是原來的近百倍!
這下,大家能更好的理解這次獲獎成果的意義了吧,那就是在前所未有的超級計算機上用出色的算法和高效的程序進行了一次氣候問題前所未有復雜的計算!
未來,這項研究不僅可以用于高分辨率氣候模擬和高精細數值天氣預報,全面提升我國應對極端氣候事件和自然災害時的減災防災能力,還能在航空、地學、能源等科學計算領域有著廣闊的應用前景或重要的參考價值。
最后要指出的是,獲獎成果作為一項最前沿的研究工作,在打通氣候模擬和氣象模擬的探索道路上做出了突破性的貢獻,但距離實際解決氣候氣象超高分辨率模擬,真正大幅提升人類對天氣和氣候預測預報的能力,仍有相當的距離。我們在為楊超和他的小伙伴們歡呼的同時,也期待著更多的氣象氣候、計算數學和計算機科學家早日攻克這一難題。
到那個時候,我們就可以徹底告別那些不靠譜的雪和不正經的風了!
(姚繼鋒 博士,中國科學院軟件研究所,jifeng@iscas.ac.cn)