BOINC

伯克利开放式网络计算平台,一个开源的网格计算中间件。

伯克利開放式網絡計算平台(英語:Berkeley Open Infrastructure for Network Computing,簡稱BOINC)是目前主流的分佈式計算平台之一,由加州大學柏克萊分校電腦學系發展出的分散式計算系統。原本專為SETI@home項目而設計,目前納入的領域包括數學醫學天文學氣象學等。BOINC匯集全球各地誌願者的電腦或移動裝置,提供運算能力給研究者。截至2017年3月,BOINC在全世界有約815,912台活躍的主機,提供約18.971PetaFLOPS的運算能力[2]

BOINC
使用麥金塔操作系統執行BOINC程式
使用麥金塔操作系統執行BOINC程式
開發者加利福尼亞大學柏克萊分校太空科學實驗室
當前版本
  • 8.0.2(2024年5月24日;穩定版本)[1]
編輯維基數據鏈接
源代碼庫 編輯維基數據鏈接
編程語言Linux
MacOS
Microsoft Windows
Android
語言38種語言
類型分布式計算
網格計算
許可協議
編輯維基數據鏈接
網站boinc.berkeley.edu 編輯維基數據
數據截至2024-03-13

運行原理

安裝BOINC軟件的電腦在閒置時,會使用電腦的CPUGPU進行運算。即使電腦正在使用,BOINC將利用空閒的CPU週期作計算。如果志願者的電腦裝有NVIDIAAMDIntel的GPU並選擇使用其作為運算硬體,則某些BOINC專案的計算速度將比單純使用CPU的版本提高2至10倍[3]

當志願者使用電腦參與BOINC專案時,BOINC會與專案的伺服器連線,伺服器會向電腦提供工作單位(Workunit,簡稱WU),然後電腦會對工作單位作運算,等待運算完成後,BOINC將把結果上傳至專案伺服器。

專案伺服器負責協調各志願者電腦的工作,包括發送工作單位、接收已處理的結果、核對大量的結果再作處理,成為研究人員需要的數據。由於個別的電腦可能會在運算過程出現錯誤,所以伺服器一般會把同一工作單位傳送至多個志願者,並比較各個結果。

BOINC設有積分系統,積分間接反映志願者的貢獻,因為在BOINC上可以運行的專案千差萬別。例如專案A的工作包在某台電腦上需要3個小時完成,而專案B的工作包在該電腦上需要30個小時才能完成,顯然用完成的工作包的數目來衡量工作量是不可行的;而不同電腦的性能也有差別,用CPU時間來衡量工作量亦是不行的。積分系統只能通過一定的算法得到志願者實際完成的計算量。

BOINC從版本6.4.5起,開始支持GPU運算,目前有GPUgrid.netEinstein@HomeMilkyway@homePrimeGridCollatz ConjectureDNETC@Home等多個GPU專案。

用戶亦可使用BOINC 帳戶管理器(BOINC Account Manager)方便參與和管理不同BOINC平台項目。

除分佈式計算以外的應用

儘管BOINC一般用於進行志願計算,但其平台也可搭建公司私有計算網格或創建校園虛擬超級計算網格。

搭建公司計算網格

搭建BOINC網格主要有幾個步驟:

  • 架設及安裝BOINC伺服器和客戶端
  • 關閉外圍網絡的帳戶創建

這樣的網格與公用網格相比,具有作弊概率低、運算效率高(工作包不用擔心過期)的優勢。

創建校園虛擬計算網格

創建這樣的網格方法類似公司網格,一個較低端的伺服器(約一萬美元)就能勝任幾萬個客戶端的調度工作。倫敦的威斯特斯頓大學創建了一個這樣的網格,據估計,一年可節省約£125,000。[4]

參考文獻

  1. ^ https://github.com/BOINC/boinc/releases/tag/client_release%2F8.0%2F8.0.2; 出版日期: 2024年5月24日.
  2. ^ BOINC首頁統計數據. [2013-06-16]. (原始內容存檔於2013-06-10). 
  3. ^ Use your NVIDIA GPU for scientific computing. [2009-03-12]. (原始內容存檔於2008-12-28) (英語). With NVIDIA's assistance, some BOINC-based projects have applications that run on NVIDIA GPUs using CUDA. These applications run from 2X to 10X faster than the CPU-only version. 
  4. ^ DIY SUPERCOMPUTER SAVES £1,000S--University of Westminster[永久失效連結]

外部連結