文/魏臻
高性能計算,高興能計算
文/魏臻
在業界,“高性能計算”是個越來越火的詞,在高校里,它的另一個兄弟“并行計算”更為大家所熟悉,在很多場合,這兩個詞指代的其實是同一個很有意思很有潛力的領域。之所以說它有意思有潛力,是因為年輕的計算機學科和其他歷史悠久的學科交叉結合在一起,迸發了魔術般絢爛奪目的光彩。
2004年我還在中國科學技術大學讀本科大四的時候,在機房做“并行計算導論”課程的上機作業,上這門課程的教師就是并行計算領域的領軍人物陳國良院士和他的弟子、我的朋友孫廣中博士。我正專心敲著代碼呢,幾個不認識的其他院系的同學走了進來,看來也是來上機的。
不過他們進來后不久,就開始抱怨后臺的計算機性能太差,軟件硬件的版本都太落后。
當時我自認為是計算機科學技術專業“科班出身”,自然要比他們對計算機的了解強很多,所以有點輕視地說你們懂高性能計算嗎。這時一個年齡看起來跟我差不多大的學生說了一番話,原話我記不住了,大意就是“你們計算機專業碩士學的這點并行計算內容,在我們實驗室還不如個本科生,我們實驗室的機器也比這機器強多了,要不是這幾天我們的機器出了故障,又急著等一個結果跑出來發論文,我們才不想過來呢。計算機它只有跟各行各業領域充分結合時才能發揮出最大的功用。計算機專業,就是應該做好其他專業行業的服務業。哪一天我們物理、數學、生物這些傳統學科真的不用關心并行計算機、并行算法、并行程序了,才好呢。我不想懂什么高性能計算,我只在乎高興了就能計算。現在是反過來了,要難搞的機器高興了,難寫的算法高興了,難調的程序高興了,我們才能計算,這哪行啊。”于是我啞口無言。
在有少年班的科大,從來都不缺少這樣遭遇牛人的意外。而“我不想懂什么高性能計算,我只在乎高興了就能計算”這樣的論點,我在微軟高性能計算部門工作的三年多中又多次從制造業、金融、多媒體渲染等行業客戶和合作伙伴那里聽到。
這也顯示了一個有趣的現象,高校里最懂高性能計算的,并不一定是計算機專業的師生,而往往是其他學科有高性能計算需求的師生,同樣在業界最懂高性能計算的,也不一定是計算機專業的科學家和工程師,而往往是各行各業的領域專家。
其實在高校關于高性能計算的課程設置和人才培養上也能看出同樣的規律,大多計算機專業只在“計算機體系結構”、“操作系統”、“計算機算法”等課程中對并行概念點到為止,專門開設《并行計算》課程的高校屈指可數,而實施起來也容易變成“空中樓閣”,學生除了用MPI寫寫類似“Hello World”的并行程序,并沒機會接觸實際應用。
相反,數理化專業開設如何利用并行計算幫助科研的課程卻屢見不鮮,學生目標明確,更容易體會到高性能計算的威力和甜頭,只是計算機基礎偏弱,有時候學起來比較費力。
鑒于高性能計算領域的發展,在硬件和軟件上離“高興能計算”的目標都還有距離,我建議,對于有興趣從事高性能計算,或者說用高性能計算來讓自己“高興能計算”的學生,既要認真琢磨清楚并行計算機的體系結構和工作原理、并行算法的一般規律和常見模式、并行程序的開發特性和調試技巧,也要針對某一具體領域的應用夯實基礎,積極實踐,這樣自然能夠積累很多實戰經驗,其中甚至有很大一部分是放之各領域皆準的問題和解決方案的“模式”。
至于是否能在學校開設的課堂上學到這些內容,可能很大程度上受制于學校的辦學條件,比如是否真能合理調配師資力量硬件設備,為交叉學科做好交叉教學。但是在大學階段最應該培養的能力不就是自我學習能力嗎?學生完全可以沒有機會創造機會,借用一句被用濫了的書名模版,讓自己“高性能計算,從入門到精通”。
我相信,我們在高性能計算上培養出來的人才越多,離“高興能計算”的目標也就更近。

魏臻
魏臻,2007年獲得上海交通大學計算機科學與工程系碩士學位。現為微軟亞太研發集團服務器與開發工具事業部的軟件開發工程師,專注于高性能計算的產品開發,先后參與發布了微軟第一、第二代高性能產品。魏臻的另一個身份是高性能計算中文博客http://blogs.technet.com/chinahpc的博主。