一切計算都是調度問題
01-26
2004年我進入中科院遙感所,開始使用IDL編程,當時的版本號是7.0,ENVI的版本號是4.6左右。IDL上手快,文檔齊全,又集成了ENVI這樣的交互界面,在當時是非常實用的選擇。我把幾個遙感圖像模型用IDL接在一起,開始摸索一門姑且稱之為「調參」的可疑手藝——這就要求不但跑的數據量大,而且算得快,結果如果看著不對我好來得及把參數再調一遍。關於調參這件事,需要說明的是,如果你對模型足夠了解,理解所謂敏感度(sensitivity ),有豐富的經驗,手頭又有一些驗證數據,那還可以叫做調參;如果你知道得不多,又有項目的壓力,那就跟猜謎語差不多。為了化解調參的苦悶心情,我突然想到,組裡的全部電腦都在一個區域網中,電腦上都有裝有IDL,如果能夠集中全組的算力來猜謎語,無疑是件好事。我於是寫了一個簡陋的調度程序,訪問放在區域網上的一個任務列單,計算,輸出,每台機器的任務都相互不重複,老機器算得慢些,新機器算得快些,但都做了力所能及的貢獻。每個任務是否正在執行、是否執行完畢完全由文件名鎖來判斷,因為當時確實沒別的方法可用。
每天下班之前,我就掃一眼機房,看那些人晚上不用機器,然後打開他們的電腦,把我的調度程序讀入,運行起來,看一眼任務管理器,確定CPU和內存都達到了峰值,機器在程序的壓榨之下發出沉悶的呻吟,方才興逞而去。隔壁大組的師兄,數據處理量跟我相去彷彿,他的做法是寫了一些類似光榮三國志那種的n多聯動菜單的界面,把數據分期分塊,讓碩士生在上面點來點去,一到月底就好幾號人在上面狂點——數據處理不過來。總之,為了處理大量的數據,各顯神通。我對計算調度的概念就是這麼建立起來的。2009年,我在義大利的里雅斯特(TRIESTE)的國際理論物理中心(ICTP)學習區域氣候模型(RegCM),第一次接觸到計算集群(Cluster)。機房裡的電腦看上去並沒有什麼兩樣,只是網線似乎確實要粗碩些。所有的不同僅在於linux命令行下,交計算任務之前,有一個選擇要多少CPU,多少核,你輸入了,機器嘀咕一聲,再無他話,哪些旁邊的機器被啟動了,任務如何分配?我統統不知道;第二天早上,所有的結果已經靜靜地躺在硬碟里,多麼簡潔!神秘!恰如的里雅斯特的古堡與海灣,讓我留連不已。
人們得通過qsub的腳本去提交任務,申請資源,用一些命令來了解任務等待、運行的情況,有一些文檔可看,但通常都只是一些讓人困擾的信息,在Pleiades上花了很長時間,除了一些調試的技巧,我始終不知道怎樣才能充分地利用它的計算資源。每當有人問我,為什麼交完任務兩天了都沒有被執行?我唯有打入一串不抱希望的命令,然後答道,你還是給系統管理員發個郵件吧。而實際中,超算機上的工作體驗也令人沮喪:各種環境、類庫的管理,只是數據處理速度的加快,但還有大量的後處理、可視化腳本需要編寫和維護,數據、知識的共享和演進仍十分困難,面對海量數據,科學家們孤獨地編織著各自的故事,這些故事的復現、查證和進化要耗費大量的勞動時間,很多情況下幾乎不可能。
推薦閱讀:
2004年,ENVI4.5,對License的管理極為到位
2009年,義大利,的里雅斯特
2011年,我來到位於加州矽谷的NASA Ames研究中心,連入了超級計算機昴宿星(Pleiades),這東西跟我在中科院計算所見到的曙光系差不多,在當時的全球綜合排名已經掉到了12左右。Pleiades里可以接入NEX(NASA數字地球),裡面有下載處理好了的遙感衛星資料和氣象數據,是建模者的夢中後宮。我開始學慣用Python和C搭pipeline,交任務,到Pleiades那個龐大的CPU池裡去要資源。Pleiades的架構是個迷宮,有四套並行的節點系統,有累計25萬個CPU核。但是,CPU多就了不起了嗎?2011年,加州矽谷,NASA Pleiades超算機唯一讓人興奮過一陣的是2013年,超算機奮進號(Endeavour)的接入。沒錯,NASA的超算機常跟太空梭(Space Shuttle)取同一個名,比如奮進號、發現號(Discovery)、哥倫比亞號(Columbia)等等,也不嫌亂。奮進號是一台共享內存(shared-memory)的超算機,別的機器IO還要調度,它直接通過一個傘狀結構把每個CPU的內存接在了一起,使得你在理論上可以同時訪問高達4TB的內存,也就是說,當你拿不準主意如何確定並行粒度的時候可以硬來,根本不用顧慮通常內存的限制,一味蠻幹奮進,機如其名。以後我還會說到我在如何在奮進號上奮進的經歷。
2015年,奮進號太空梭的告別之旅
2013年,Hadoop紅遍全球,成為大數據解決方案的主流平台。人們可以在Hadoop上開發的應用層上運行處理海量數據的應用程序,並能充分利用集群的算力實現高速運算和存儲。一時間,人們的想像力在噴薄激射,看似所有的資源(內存、存儲、處理器)都可以被虛擬化,被動態分配,大家討論著hadoop能不能幹好內核級調度這件事,網路計算,透明計算,什麼都來了。但是,一切都需要一個應用,一個從零到1的應用,它反映出設計者的用心和理解,也能在現實世界獲得回應,它封裝了已有的大量細節,從而把可能性展現給用戶,以實現技術的發展和增長。這就是下面要說到的Google Earth Engine。推薦閱讀:
※群雄逐鹿 誰會成為雲計算行業第一股?
※2018年或成為雲計算轉折之年:IaaS整合 PaaS崛起 SaaS蓄勢
※王東臨:創新從未停止 IT基礎架構革命蘊含新機會
※雲計算市場增長迅速 IBM逆勢下滑的糾結與希望
※雲計算進入下半場 各大廠商比拼的是什麼實力?