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[永久失效链接]

外部链接