前不久,Sebastian Anthony為ExtremeTech網站寫了一篇文章,題為《你用超級計算機能做什么?》(http://www.extremetech.com/extreme/122159-what-can-you-do-with-a-supercomputer)。他得出的結論是,“用處不大”;對許多人來說,大抵如此。不過,如果你對超級計算機有更深入的了解,答案也許會變成“用處很大”。
如果指的是世界上最龐大的超級計算機,Anthony的觀點基本上正確。的確,過去對超級計算機一種非常適用的定義是“售價至少達到六位數的計算機都是超級計算機。”在過去,這個定義基本上正確,構筑了想高速處理數字的那些人面前一道相當高的準入門檻。成本之所以這么高,是由于超級計算機與其余計算機在架構方面隔著一道墻。這種系統旨在使用向量處理器,高速執行數學運算。超級計算機的定義相當合適,只不過制造成本使得自行建造向量處理器的費用貴得離譜。
大眾化超級計算機
想證明如今高昂的處理器制造成本是有必要的,唯一的辦法是銷售大量處理器。傳統的超級計算機市場每年銷售的新系統只有數以百計,無力為這么小的市場繼續制造定制處理器。與此同時,由于競爭因素,價格低廉的大眾化x86處理器變得速度更快,這反過來帶來了更大的銷量,證明高昂的制造成本是有必要的。
結果就是,大眾化X86處理器變得高速又便宜。小眾化的向量處理器在這個領域很難有競爭力,幾乎僅剩的所有傳統超級計算機公司都開始銷售基于大眾化處理器集群的并行設計系統。基本的部件包括計算節點(由大眾化處理器、內存、可能還有硬盤組成)、互連系統和某種類型的全局存儲系統。互連系統品種繁多,有的極便宜(速度極慢),起初是快速以太網;有的比較昂貴(速度極快),比如早期的Myrinet或QSnet。之前使用面向Fortran、C和C++的消息傳遞接口(MPI)庫,完成并行編程工作。這種可擴展方法開辟了一個全新的大眾化超級計算機時代。這股潮流在下圖中得到了清楚的體現,該圖表示了在過去的18年間全球速度最快的500臺計算機(按HPL基準測試排名)各自的處理器系列的進化。
高性能計算(HPC)處理器的歷史趨勢(圖片來源Top500.org)
能夠使用大眾化的現成部件,這大大降低了準入門檻,讓科學家和工程師們得以購買符合預算的高性能計算能力。大大小小的集群開始出現在每個地方。使用標準的Linux發行版,也可以僅僅借助幾臺舊的x86系統,“搭建起自己的”集群。 實際上,由于高端與低端之間的區別實際上取決于可以購買多少個處理器,某種級別的“超級計算”可以為大眾所享用。
在這個過程中,“超級計算機”這個術語開始日漸式微,而高性能計算即HPC這個術語開始大行其道。(有時使用HPTC即高性能技術計算)。這種變化主要歸因于傳統超級計算機與大眾化硬件組成的集群之間的壁壘逐漸消失。集群通常把性價比提高了十倍,把準入成本降低了至少十倍。
到底何為超級計算機?
現在定義何為“超級計算機”仍有一些難度。一種簡單的定義是,超級計算機提供了超過單單一臺機器所能提供的性能。不過,這個定義不夠嚴謹,因為把多個圖形處理器(GPU)添加到單單一臺服務器也能組建一臺功能很強大的系統。此外,多核的出現也讓數量眾多的核心可以放置到單單一個服務器機箱中。可能一種更合適的定義是,把單一應用的性能提高到超過目前市面上速度最快的單一處理器/協處理器的任何計算機都是超級計算機。也就是說,如果你結合多個處理器/GPU來提升每秒浮點運算能力(FLOPS),那么你就進入了HPC領域。至于是否擁有“真正的超級計算機”,這似乎不大重要,因為性能是可擴展的。
有人建議,不妨根據世界上速度最快的超級計算機(如全球超級計算機500強排行榜)的某個閥值來定義超級計算機,不過這種方法有點不可靠,因為全球超級計算機500強排行榜是按某一種基準測試排名的。其他機器(包括可提供大量輸入/輸出的機器)在HPL基準測試方面的表現也許不是相當好,但在其他方面能提供破記錄的性能。
超級計算機的定義已變得有點模糊,因而挑選幾臺高速系統來代表HPC計算的范疇有點站不住腳。那篇文章中提到的其他一些概念也需要加以澄清。首先,并非所有的高端HPC機器都采用水冷法。這種情況可能會變,但肯定并非慣例。大多數系統上不需要定制版本的Linux內核;Linux發行版及其含有的內核對大多數集群來說完全足夠了。需要一些另外的軟件,比如MPI庫和管理工具;但是總的來說,常規的Linux發行版用起來夠好了。互連系統各不相同,如今最流行的高性能解決方案是InfiniBand,不過數量眾多的生產集群采用了千兆以太網。使用GPU增強型節點也變得更為常見。用戶常常可以自由選擇哪些部件最適合組建自己的“超級計算機”。當然,有些非常高端的定制部件有助于帶來最高性能,但常常并非一定需要它們才能涉足HPC。
我用超級計算機能做什么?
至于“我用超級計算機能做什么?” 這個問題,回答就是:“與許多方面一樣,這取決于你想用來做什么。”早在第一批PC問世的時候,有人提出了同一個問題,當時一種常見的答復是:“用處不大”。后來軟件開發出來,新市場形成起來,包括《孤島危機2》等游戲,而在當時玩這些游戲無疑需要超級計算機。
如果你需要運算數字,就像為第一代計算機編寫程序的那些人一樣,那么可以用HPC來做好多事情。除了許多免費使用的HPC應用(http://tweaks.clustermonkey.net/index.php/Open/Freely_Available_Cluster_Applications)和編程工具(http://tweaks.clustermonkey.net/index.php/Programming_Tools)外,還有一張不完整的列表(http://agenda.clustermonkey.net/index.php/Cluster_Application_Areas/Markets)。許多應用面向特殊的技術領域,普通的計算機用戶不會感興趣。不過,這些應用對學生、教師、研究人員、科學家和工程師來說非常重要,因為他們可能要訪問比較少的、適量的HPC資源。而且,自行編寫應用程序盡管比大多數編程任務來得困難,但也并非需要拿到高級學位才能動手。Cluster Monkey網站上有許多資源(http://www.clustermonkey.net/Navigation-Page/learning-about-clusters.html)可以幫你入門。
更適合你我的是,HPC還有其他令人關注的用途,其中許多把人工智能(AI)引入到日常使用。你也許沒有注意到,IBM的Watson讓超級計算從下棋進入到全然不同的認知水平。許多超級計算機與Watson一樣,起初基本上是成本高昂的定制機器,最終為價格低廉的小型機器或設備鋪平了道路。“云計算”可能也會在超級計算機應用方面帶來一些令人關注的機會。你最近有沒有用過Siri服務?
最后,個人HPC的準入門檻變得越來越低。不妨考慮Limulus Project,這項計劃旨在把真正的HPC能力引入到價位在5000美元以下的桌面端市場。該項目包括硬件和軟件,讓個人可以運行真正的HPC應用,并且從事有意義的開發工作。考慮到HPC的現狀,我們要提的問題應該是:“我用桌面端16個核心、每秒2000億次浮點運算能力的性能和數TB的存儲系統能做什么?”
只有你回答得了上面這個問題。
桌面端個人超級計算機
http://www.clustermonkey.net/Opinions/supercomputers-getting-it-right-and-wrong.html