志愿计算:足不出户,窥探星辰

本文遵守首页的CC版权声明:署名-非商业性使用-禁止演绎,请自觉遵守。

本文在科学松鼠会发表,链接:http://songshuhui.net/archives/52446

在我打下这行字之时,我的电脑正在分析着无线电信号,尝试在其中找到一种特殊的模式。这些无线电信号可能来自数万光年外的星球,而我的电脑正在寻找 的,是一种特殊的无线电波模式,它最可能来自一种特殊的天体系统:由两颗超高密度的天体——其中一颗是中子星或者黑洞——紧密围绕组成的双星系统。这种系 统非常稀少,现今发现的不过几十。

不要被术语吓倒,其实我和你一样,对天体物理所知甚少。我所做的,只是简单地下载了一个叫BOINC的软件,加入了Einstein@home项目,让它利用我的电脑空闲时的资源,为科学而计算。

大众科学

长久以来,科学似乎一直给人的印象,是少数有天赋的科学家才能成就的伟大事业。从牛顿到爱因斯坦,从波义耳到凯库勒,科学一直以来都有着这种精英主 义式的印象。才智似乎是参与科学不可或缺的要素。但在近代,随着计算机的发展,起码在实验科学中,数据逐渐变得重要起来。现在的技术条件越发进步,使得研 究人员能获得大量的数据,而在以前这是不可想象的。例如密立根的油滴实验,当年需要研究人员肉眼盯着实验仪器手工记录油滴的运动状况,而现在,如果配备上 适当的图像处理系统,研究人员只需简单敲敲键盘就能获得数据。

当数据丰盛起来之时,难题也随之而来:单凭人类的能力,无法处理越来越海量的数据。一个极端的例子是在日内瓦的大型强子对撞机(LHC),它每秒钟 吞吐的数据量可达800MB,每秒的数据能填充一张CD还有余,一天下来大约有10万张CD-ROM,大概一万张DVD。这种“能压死人”级别的数据,如 果没有计算机的强大计算能力的话,研究人员早已被数据淹没。

计算机在数据处理中的地位日渐强化,也意味着只要拥有计算机,一般人也可以参与到科学研究中。尽管没有实验仪器,对分析后数据的意义也不甚了解,但 通过运行特定的数据处理程序,一般的科学爱好者也可以在科学研究中助研究人员一臂之力。就像我虽然不懂天体物理,但仍能搜寻新的天体,算是能一偿夙愿。另 一方面,研究人员也需要对海量数据处理的能力。希望为科学出一份力的志愿者,需要计算能力的研究人员,两者干柴烈火一拍即合。

这种新的科研形式,就是志愿计算。

蓬勃发展

在1996年1月,George Woltman将他编写的Prime95程序发布到网上,并开始组织一场针对梅森素数的互联网大搜索,这个宏大的计划被命名为GIMPS(Great Internet Mersenne Prime Search)。当时,最强大的个人电脑CPU不过是奔腾Pro,奔腾II还要在一年半后才推出。在短短一年内,数以千计的数学奇客(Geek)参加了这 个项目。也正是在这一年,一位参加者Joel Armengaud在他的电脑上发现了这个项目的第一个梅森素数:21398269-1,打破了当时最大质数的世界纪录。这也许是Woltman意料之中的,但也许在他意料之外的是,他的这个项目开创了志愿计算的新时代,也是普通人参加科学研究的新时代。

至今,志愿计算仍在蓬勃发展。从寻找梅森素数的GIMPS到寻找外星文明的SETI@home,从搜寻引力波的项目Einstein@home到计 算蛋白质折叠的Rosetta@home,这些志愿计算项目在研究领域上形成了一个很宽的谱。直至现在,活跃的志愿计算项目数量已经过百,其中新项目多半 使用了志愿计算平台BOINC。这个平台与SETI@home这个人气最高的志愿计算项目是由同一个小组开发的。这就不难理解为何小组的负责人,加州大学 伯克利分校教授David Anderson,会被一些志愿者视为这个领域的偶像了。

同时,志愿者的数量和捐献的计算能力也在不断增长。仅在BOINC平台上,目前活跃捐献计算能力的志愿者大约有30万名,投入了大约50万台计算 机,计算能力大约是5.8TFlops,计算能力相当于2台目前最强的超级计算机——天河1A超级计算机。虽然总量很大,但志愿计算利用的,实际上只是计 算机的空闲资源。在技术不断发展的今天,一般家用电脑的性能已经远超人们的想象。一台电脑,如果只是上上网写写报告的话,用到的CPU资源不过20%,而 剩下的80%相当于浪费了。志愿计算利用的,正是这80%的资源。

聚沙成塔,对于研究人员来说,志愿计算项目就像一台便宜的超级计算机。如果研究课题能吸引大众兴趣的话,只要建立一个项目并做适当的宣传,研究人员 就可以获得相当充足的计算资源。当然,这些运算能力并不是凭空得来的。谁能抓住志愿者那慷慨的心,谁就抓住了巨大的计算能力。项目的流行程度其实也就反映 了该领域的流行程度。目前来说,最热门的是SETI@home,这反映了人们对地外文明的关注,其次就是物理类、生物医药类和环境气候类。

硕果累累

虽然只有15年的历史,但不少领域得益于志愿计算,作出了不少成果。基于不同志愿计算项目的结果发表的论文数以百计,而且还在不断增长中,其中不乏高素质的研究成果。

例如Einstein@home,本来是用于处理引力波探测器LIGO和GEO 600的信号,尝试找到广义相对论所预言的“引力波”——时空的波动。大约在2008年,他们开始了一个新的子项目:搜寻短周期脉冲双星。脉冲双星 (Binary Radio Pulsar,简称BRP)指的是两颗高密度星体——至少其中一颗是脉冲星——相互绕转组成的双星系统。这种双星系统会引起不小的时空弯曲,理论上来说也 会发射引力波,可能成为以后探测的重点观察对象。此前多年的努力也只发现了8个BRP,但仅仅经过两年,这个子项目就找到了两个新的BRP。这也属于一种 歪打正着。

另一个更现实的项目——Climate Prediction.Net——进程则稳定得多。这个项目旨在通过计算机模拟来研究各种不同要素对气候的影响。他们先后研究了洋流、硫化合物对气候稳态 的影响,然后又对增加的二氧化碳浓度如何逐步演变气候进行了研究,而研究结果很多发表在重要的期刊上,比如说Nature。由于掌握了巨大的计算能力,这 个项目的计算结果使研究人员对全球气候的变化有了更深的了解。在全球变暖的背景下,这些结果看来是相当重要的。

其实很多研究团队,如果有足够的计算能力的话,也能做出不俗的工作。但由于经费的问题,他们常常不能如愿。如果只需要下载一个软件自动运行就能帮助这些研究人员,那么何乐而不为呢?

——————————

对志愿计算感兴趣或者有别的疑问的朋友,欢迎访问中国分布式计算总站(http://www.equn.com/),在站点维基上有丰富的资料介绍。

图片取自中国分布式计算总站与LHC官方网站,数据采自2011年4月3日。

Advertisements

分解了一个数

前几天,跟pchu和分布式计算论坛的wreck和wpolly合作分解的那个数终于分解出来了,借了同学的电脑来做post processing。

这个数是(10^924-1)/9的因子,159位的数:

51243498563987652400071559470552988310035202875319399661596369405381220025157486

7826192656169940888503707660331015218051596042340115501376173461440063883161629

它等于以下两个数的乘积:

p79=3925277248426748966984537733816767395325307476622633188305245093834818012069881

p81=130547462818138630777456508666491939964821812774903307594092374520935816757936709

然后我们是用GNFS(广义数域筛法)来分解这个东西的,花了四个人一共大概4个月的时间……

嘛,只要结果好就好~~~

Foldit:蛋白质折叠游戏

Foldit是由Bakerlab所在的华盛顿大学的生物化学系和计算机工程系联合开发的一款在线游戏,旨在利用人的解题能力来帮助科学家寻找蛋白质在现实中的折叠结构。

这里有我做的两个介绍视频:

http://youtube.com/watch?v=UB3R5-NU5pc

http://youtube.com/watch?v=FOwrz1tmGXA

然后有中文讨论帖:

http://www.equn.com/forum/thread-18296-1-1.html

这个是我写的一个小小的经验之谈:

http://www.equn.com/forum/viewthread.php?tid=18296&page=2#pid244623

最近真是事情比较多~~~

有好有坏~~~Just like everything~~~
前几天台湾南部发生了地震(对台湾同胞致以慰问!),导致我国出国网络光缆断了6条,然后在国内上国外的网站的速度骤降。这样,很多分布式计算爱好者的机子就…饿死了。现在情况稍微好一些,但是据说完全修复需要一个来月。现在很多算友都用代理来上,这也算是一种办法吧~~~不过为了防止计算力的浪费,很多算友也算了一下JUST的Pi Segment,这对于推广中国自己的分布式计算项目也算是一种帮助吧~~~

郁闷的第一名~~~顺带说说项目参加近况~~~和开发近况~~~

本来排第一嘛,就不是个坏事,郁闷的原因就在于自己喜欢的项目竟然没有人参加,让一个用一台破机子同时算三四个项目(已经属于主力半主力的~~~)的烂人排第一,这就很不应当了~~~
 
下面列举一下那些使我感到郁闷的项目:
 
1. Cuboids 。首先由大仙绍介进来,然后我就兴冲冲去参加了,并且建了一个小组。说实话我是挺喜欢这个项目的,虽然不是特别特别喜欢。这个项目研究的是一个不等边的骰子在一次投掷中每个面向上的概率。听起来好像有点傻,又好像没有什么实际的意义,但是我觉得这就是这个项目有趣的主要原因。看起来傻乎乎,描述的运动方程也很容易可以写出来,但是模拟出来的结果却各不相同,只消看看显示的图形就觉得比较有趣。几个不算复杂的方程就可以描述那么复杂的现象,真是令人赞叹。后来我就时不时地在机子上跑这个,也不怎么看统计。有一天看了看统计,发现我竟然是我们小组排第一的,当时是很高兴,再看小组里边的人,都是坛子里的朋友。我再一看,大家差我那么远,我又差前面的人那么远。我只是时不时跑一跑,坛子里怎么就没有有实力的人来参加这个项目呢~~~都是玩的(包括我啊~~~)。然后,最 BT 的一点:大仙名字不在上面~~~稍微责怪一下~~~虽然我知道大仙很忙所以没空参加情有可原也是没有什么可以责怪的~~~下面还是留下个网址让感兴趣的朋友看看。项目网址是:http://www.physics.ox.ac.uk/cm/cmt/cuboid/
 
2. The 3x+1 Class Record Search 。这个是 apple 首先试着参加,然后带了我跟跨越地平线来参加。apple算出来一点以后兴冲冲跑去寄给 Eric ,Eric 一看就看出来 Overflowcount 不对,断言是内存错误,然后就不用 apple 算的这个结果了。apple 也深明大义,决定换一台电脑以后再来算,所以就停了。而跨越地平线的进度颇慢,现在还没算完一个,真是不应该~~~我就刚刚完成了一个 Block ,然后问 Eric 拿了原程序来优化了一下,现在正在拿优化了的程序跑第二个。然后也就是三个人参加,没有了~~~也说说我为什么喜欢这个项目吧。是的,这个项目参加有点麻烦,还要手工发电子邮件。但是我就很喜欢 3x+1 这个问题。一个简单的变换,偶数就除以 2 ,奇数就乘以三再加上一,竟然可以引出那么复杂丰富的变化出来。对于每一个正整数,它们的变化轨迹都是变幻莫测,忽上忽下,稀奇古怪。但是无论什么数,无论轨迹如何复杂,终点却总是那个简单的一,令人不能不感叹数学的神奇。我就喜欢这类型的东西:用简单描述复杂、用简单生成复杂,然后由复杂又归结到简单。最玄奥的地方就在这里了。最近大仙让我试着翻译一下这个项目,看能不能吸引到更多参加者。我可是很愿意试试的,因为我也想更多的人参加~~~可是首先要找一个合作的人来一起搞~~~我是个很疏懒的人~~~我已经盯好了目标了~~~朋友们可要小心~~~还是惯例,放一个项目网址:http://www.ericr.nl/wondrous/index.html
 
3. EulerNET。首先是我去试试参加的,然后 apple 也去试了一下,然后我们就合力写了个新手教程,然后我还翻译了数学背景,然后…然后就只有我们两个人四台机器在算~~~没别的人了~~~真是令人郁闷~~~但是也没什么好抱怨的~~~别人参不参加我们不能控制,我们能做的就是做好宣传,让想要参加的人方便一点。老规矩,放出网址:http://euler.free.fr/。这里还有新手指南和教程:http://www.equn.com/forum/viewthread.php?tid=13482&fpage=1
 
看来我感兴趣的别人不感兴趣的主要就是数学了~~~这就充分地说明了我国的数学教育水平还要提高~~~提高了教育水平不仅可以增加分布式计算的参与人数~~~还有助于消灭民科~~~啊~~~如果能让全中国的民科都来算关于数学的分布式计算,那该多好啊~~~
 
然后说一下分布式的近况。最近我停了 BOINC ,因为不在家里控制不方便。现在主要算的是 3x+1 ,外加上 Distributed.NET 和 Cuboids 作缓冲,就是这样子~~~
 
关于项目开发嘛~~~我希望开发的 Ramsey@home 可能要延缓了~~~因为我在编写新的计算核心~~~又因为我是个很疏懒的人所以大家可想而知会有什么结果~~~其实已经用 vb 写出来的了但是转到 C++ 的时候遇到了很多问题~~~于是就暂停了~~~当然也有 3x+1 优化的影响~~~还有就是一些技术问题还没有想好怎么解决~~~还有就是服务器~~~所以大家就容忍一下长期跳票吧~~~
 
p.s.我发现这个 Space 里边的内容,学习跟课外活动严重不成比例~~~大家千万不要学我~~~要以学习和工作为重~~~
 
补记:现在 Cuboids 方面有人超过我了~~~又高兴又不高兴了~~~赶快追上~~~
最近正在翻译 3x+1 页面~~~

Wanting@home论文

已经贴出来了,大家快去看,评价一下~~~
 
【摘要】本文所讨论的烷烃,是指开链烃,即仅由碳和氢两种元素组成的、没有碳环并且所有碳原子均饱和的化合物。由于烷烃构造异构体的数量呈指数形式增长,计算量极为庞大,凭借普通计算机在可以忍受的时间里求解是困难的。为了求解这个问题,需要强大的计算资源和存储资源来支持。分布式计算是一门旨在将需要大量运算的问题分解到很多计算机上解决的计算科学。现在世界上有超过200个分布式计算的项目,每一个项目都获得了足够的计算资源,有的项目的总计算资源甚至超过了世界上最快的大型计算机,而每个项目付出的资金相对来说却微乎其微。所以说,分布式计算拥有便宜、高效的特点。为了完成烷烃构造异构体的枚举,本文提出基于“工作池”(Work pool)的并行算法模型构建分布式计算项目,并设计了新的枚举算法,从而达到提高计算效率的目的。通过对其研究,对如何挖掘因特网上闲置的计算资源潜力进行了尝试和探索。对高中学生而言,建立分布式计算项目还是一种全新的尝试,这能够带来对分布式计算这种利用网络闲置资源的计算科学的更深入的了解。

【关键词】烷烃异构体,分布式计算,工作池模型