[World Community Grid] 捐出你電腦的閒置時間,為人類科學做點事!


利用家中電腦來計算更有營養價值的米。







所謂『捐出你電腦的閒置時間』,並不是要你把寶貴的電腦捐出去哦!而是利用你電腦在開機時過剩的運算能力,來計算一些科學性的研究計劃。這種運用全世界個人電腦來達到分散式處理的概念及做法,以經有大約 10 年的歷史。由於超級電腦仍是非常不易取得的資源,所以科學家們就想到運用分散於全世界各角落的個人電腦,來進行非常龐大且複雜的科學運算。這些運算可以是對疾病的研究,可以是氣候變化對某些地區的影響,也可以是尋找更有效率且環保的能源。在文末我會稍微提一下這種『分散式處理』的概念及發展,不過在此先介紹兩個頗大型的組織:World Community Grid (簡稱 WCG),及 Folding at Home (簡稱 F@H)。

  • World Community Grid (WCG)


WCG 的模擬人類蛋白質折疊運算。

WCG 是以美國加州柏克萊大學 (U.C. Berkeley, USA) 所發展出來的一套程式,加上 IBM 的贊助,來提供全世界一些非營利性的科學研究計劃。會擺在第一個來介紹,就是因為他們的研究範圍非常廣汎,可以是人類的各種疾病、氣候變化的研究、新型的能源、更營養的米...... 等等。一般來講,個人能夠幫忙的部份,就是下載一個小程式並裝在自己的電腦上,經由簡單的設定 (或是幾乎不用設定啥),然後該程式會自動去下載研究計劃、執行、以及傳回任何執行完畢的結果,然後再去下載新的計畫.......。

有關 WCG 的組織,可參考此連結 http://www.worldcommunitygrid.org/

想要加入 WCG 的計劃,必須要先在 WCG 的網站上註冊好一個 user name,然後下載一個小程式回來裝上。如果想要裝在超過一台以上的電腦,必須要在不同的電腦上登入後再分別下載才行。因為每下載一個程式,只適合該電腦安裝而以,無法移到另一台電腦上去裝。


安裝完後執行,會先出現以上的畫面。這是功能比較簡單的畫面,建議按右下角紅色框理的 "Advanced View" 來做一些進階的設定。


進入進階模式。

進階模式理,首先看一下 "Advanced" 的選項。在 "Options" 內可選擇語言,由於我是在 English 的作業系統,所以我只用英文。然後點 "Preferences",那是整個程式的重點設定部份。


在 Preferences 理,可以設定你要用多少核心來計算,以及要用多少百分比的資源。

紅色框理的 "50.00",就是你要用到多少顆 "CPU"。以一個四核心的電腦為例,此處如果設定在 50%,那就是要拿其中的兩核來做運算。等一下在開始跑程式之後,你就會看到同時間有兩個 projects 在計算中。早期的 WCG 程式,是直接填上數自來代表要用到多少顆 CPU,比如說 2 就是用兩核。但是這個新版的程式是用百分比來顯示,也算是挺奇怪的做法! 由於每一個核心,在同一時間只能跑一個 project,所以想看到多個 projects 一起跑的情況,只能使用多核心的電腦。

另外在紅色框的下面是 "100.00" 那個數字,那是代表要用多少 CPU 的資源,在此是使用 100%。所以說,以上圖為例,一台四核的電腦,開啟了其中的兩核來跑,而且每個核心是用百分之百 (100%) 的資源,等於有 200% 的資源 (兩個 project,每個 project 分到 100% 的資源)。換句話說,一台四核的電腦,等於最多可以衝出 400% 的資源,也就是四核同時以 100% 運作,可同時計算 4 個 projects (每個 project 都各是 100% CPU 資源)。


接著在 "Activity" 的地方,選擇 "Run based on preferences",這樣 WCG 程式就會根據剛才的設定來執行,可以在右邊紅框內看到有兩個 projects 在 "running"!如果想要它暫停,就選擇 "Suspend"。基本的操作就是這樣而以,其它的就是像如果有用防火牆的,就要確定讓 WCG 程式能夠自由進出就行。如果有用 proxy 的,就要設定好。

所以說,假設公司的電腦是雙核的。如果我等下要去吃飯,或是要開會等等而用不到電腦,那就可以設定雙核一起跑 100%。而平常的時後則跟據當時的使用量,或許設單核跑 100%,或是雙核跑 70% 等等。如果突然間電腦忙起來,就直接按下 "Suspend" 來暫停所有工作,等到忙完後再開始就行。當然啦,要確定能通過公司 IT 部門的防火牆才行。

目前 WCG 的程式,只能利用 CPU 的資源來做運算。以我家一台古早的單核 Sempron 2600+ 跑 100% 來看,大部份的 project 約 8-1x 小時可以跑完一個,小超頻一下還可以再快一點。

我也很偶爾會碰上一些 project 卡住了,永遠跑不完,越跑越久的情況..... 那時就要手動用 "Abort" 來放棄,繼續往下一個 project 進行!

看完 WCG,來看另一個比較 "高階" 一點的....

  • Folding at Home (F@H)


利用顯示卡上的 GPU 來進行大量且複雜的蛋白質折疊運算。

Folding at Home 是另外一個頗大型的全球分散式處理計劃,它所並聯出全世界個人電腦的運算能力,以經可達到 1 petaflop 的程度!以一台現今排名第一的超級電腦來看,它的運算能力大約是 1.1 petaflop,所以 F@H 的計畫所創造出來的運算能力,大概就是一台世界第一快的超級電腦!F@H 是建立在美國史丹佛大學 (Stanford University, USA),它也是要下載小型的程式回來裝好,然後該程式會自動去下載 project 回來運算。目前 F@H 所做的計劃都是人類蛋白質折疊的研究,並不像 WCG 那麼廣汎。

人類的細包,或是比細包還小,在細包間傳遞訊息的一些介體組織等等,全部都是由蛋白質合成的。而從蛋白質在變成細包的這個過程中,就叫做『蛋白質折疊 (protein folding)』,也就是蛋白質會根據不同的須求,自行『折疊』出所要的組織出來。其中,『折疊』其實就是『組合』的意思,在英文是用 "folding",其實它真正的意思就是 "assembly"。這個『折疊』的過程非常神奇也非常有趣,至今人類還搞不清楚為什麼蛋白質能夠自行組合出各種不同的組織!但至少我們知道這個『折疊』的過程非常重要,因為如果中間有點差錯 (misfold),輕則是該組織被拋棄或被摧毀,重則會產生一些疾病像各種不同的癌症、帕金森氏症、狂牛病...... 等等。F@H 就是希望介由全世界個人電腦的運算能力集合起來,一起來瞭解整個折疊的過程。

有關 F@H 的組織,可參考此連結 http://folding.stanford.edu/

想要參與 F@H 的折疊計畫非常簡單,只須要去 F@H 網站上下載適合的程式回來裝好,再加上一點簡單的設定就行了。它支援單一 CPU、多 CPU、高階顯示卡或繪圖卡的 GPU、甚至是 PS3 都行!沒錯,就是 Sony 的 PlayStation 3!此處稍微簡單介紹一下單一 CPU 及 GPU 的操作介面,它們是不同的程式,但卻有一樣的使用者介面。

要用單一 CPU 的用戶,在 F@H 的下載區,去抓 "System tray client installer" 回來安裝。

要用單一 GPU 的用戶,要去 http://folding.stanford.edu/English/DownloadWinOther 抓給 ATI 或 Nvidia 的 System tray client 程式回來裝。要先確定你的 ATI 卡支援 Cal 或是 Nvidia 卡支援 CUDA,並且要先安裝好正確的驅動程式。一般來講,ATI 的是 Radeon HD 2xxx, 3xxx, 4xxx 版的,或是 Nvidia GeForce 8xxx, 9xxx, GTX2xx 版的都行。某些高階的 Nvidia 繪圖卡有支援 CUDA 也行。

以上兩種程式 (CPU 及 GPU) 可以並存,甚至能同時計算不同的 project。


裝好之後第一次執行,要先做一點簡單的設定。

那個 User name 可設可不設。如果不設,那就填上 Anonymous,這樣就是純粹供獻自己的電腦而以,你計算的結果不會被記錄在你的名下。中間的 Team number 也是可設可不設,如果有設,那就表示你願意把你的計算成果一起加入某個團隊當總成績 (個人成績仍然存在)。至於第三個 Passkey 也是可設可不設,但 F@H 建議是去該網站上要一個回來設好.....

想去要一個 passkey 的話,可到此 http://folding.stanford.edu/English/FAQ-passkey

至於那個 team number 為什麼用紅色框住呢?因為那個 31403 似乎是目前台灣地區積分最高的團隊,在十幾萬個隊中大概排 6x 名左右。有興趣想要參與 F@H 的人,可以考慮順便加入一個團隊。

有關 Taiwan Team 的資訊,可參考這理 http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=31403


這個就是調整 CPU 或 GPU 使用量的地方。紅框理那個越往右移,用量越多 (最多就是 100%)。

所以通常我就拉在中間附近。如果要去吃飯或開會等等而有一段時間用不到電腦,就會把它拉到最右邊去。


接著在螢幕右下角的工作列上,就會有那個像七彩小泡泡的圖案,那就是 F@H 在工作了.....


對著它按滑鼠右鍵,就能叫出一些選單。

Display 就是秀出一個還算美美的蛋白質圖! Pause work/Resume work 就是當你要它暫停/繼續運算。Pause when done 是算完目前的 project 後就暫時停止。

我想,以上 WCG 及 F@H 的介紹就到此為止吧。剩下的,就是讓它們慢慢的去算囉。

  • 分散式運算 (distributed computing)

簡單來講,所謂分散式的運算,就是想辦法把一些大的 project 拆開來,分給不同的 CPU 去分別處理,最後再彙整起來成為所要的結果。比如說,從 1 加到 50,如果給單一的 CPU 來算,它要算 49 次。但是如果把它拆成 1 加到 25,26 加到 50,並分給兩顆 CPU 來算,那每顆 CPU 只須做 24 次加法就能完成,最後把兩組資料收集起來再加一次,就能得到最後的答案。這樣的做法,等於只做了 25 次的運算而以,於是分散式處理的概念就此產生:把大的 project 分成一些中的,中的再分成一些小的....... 最後再把它們合起來。

早期的分散式處理,多半局限於非常有限的資源且是在比較封閉的環境下進行。比如說一間 computer lab 理有 25 台電腦,用某種方式讓它們連在一起 (或者不見得要連在一起)。有些電腦不斷的在運算一些被拆開來的 projects,有些電腦則是用來彙整所有的結果,或是繼續拆開更多的 projects 準備分出去運算...... 如果這些電腦有用某些方式連線在一起做即時性的溝通 (比如說用網路系統),那這整個系統就可叫做『分散式平行處理系統 (distributed parallel computing system)』。如果沒有即時連線在一起,那它們至少可以組成一個分散式處理系統。

分散式處理的概念,在 1995 年 internet 開放給商業用途之後,開始有了重大的改變。已往只能局限於一個封閉式的處理環境,但在網際網路開放之後,可以把全世界千千萬萬台的電腦連線起來,一起來做一些運算。如果能夠得到全世界夠多台電腦支持的話,這種強大的運算能力,從某個角度來看,並不會輸給一台當時最快的超級電腦。只不過一台超級電腦是屬於『分散式平行處理系統』,因為它能夠即時性的處理所有資料;而這種透過網際網路來結合全世界很多電腦所成的系統,只能算是『分散式系統』而以。某些研究計畫,只適用於超級電腦,因為它的資料是有時效性的,必須要在很短的有限時間內要算完,並且是一個接著一個。而很多其它的研究,並不見得須要那麼即時性的處理能力,於是像 WCG 和 F@H 以及其它一些分散式處理的機構,就漸漸誕生。

早期我有參加一個由 United Devices 所開發出來的分散式處理計畫,當時算的多半是一些癌症的研究。而且以當時的電腦運算能力來看,就算 project 分的再小,也要花很長的時間才能算完一個! 隨著 UD 的計畫成功的在世界上流行開來,除了有些大行的商業機構像 IBM 等等的願意贊助外,也引起了一些其它的研究單位想要成立不同的分散式處理計畫。UD 的成功,除了表示這種概念是可行的,而且是很有效的一種另類超級電腦研究計畫。雖然 UD 在幾年前功成身退,被後起的像 WCG 這樣的機構給取代了,但是 UD 這種創新的精神,仍活在現今每個分散式處理的計畫中。

Ok 啦,有興趣的朋友們,可以考慮看看囉!不知不覺中,我的電腦又算好一些 projects 了.....




沒有留言: