

普罗计算运动
作者:鲁伊(文 / 鲁伊)
IBM的技师正在检查IBM的超级计算机——每秒计算120万亿次(路透/Reaters)
今年的11月14日,20岁的加拿大少年迈克尔·卡梅伦(Michael Cameron)报告,他发现了第39个梅森素数213466917-1。在法国数学家马林·梅森(Marin Mersenne,1588~1648)提出梅森素数的近400年中,寻找梅森素数的人员名单中出现过欧拉、费马这样鼎鼎大名的数学家(虽然最常被提到的往往是他们在寻找梅森素数中所犯下的计算错误)。可不要因为这样就误认为我们的卡梅伦是个当代的数学天才。不,他甚至可能对数论的全部了解不超过“1以外的自然数是由素数和素数的乘积所构成的合数组成的”这样的基本范畴。您也许还会说,在这样一个超级CPU的时代,或许卡梅伦是一台超级计算机的拥有者,而他的成功要归功于那台ASCI White每秒12万亿次的浮点运算能力。但答案依然是否定的。卡梅伦所使用的,只是一台极其普通的个人电脑,它的配置,或许还比不上你桌面上的那台崭新的P4。而且,即使使用那样一台比标准篮球场还要大一点的超级计算机,计算出这样一个长达400万位的数字依然要花上许多年的时间。
其实,卡梅伦只是参加“互联网梅森素数大搜索”(Great Internet Mersenne Prime Search,简称GIMPS)活动的几万人中的一个幸运儿。他所做的,只是从GIMPS的网站上下载了一个最早由乔治·沃特曼(George Woltman)编写于1995年的、采用卢卡斯·里梅(Lucas-Lehmer)算法的梅森素数寻找程序Prime95。当他的电脑联网工作时,这一程序在后台自动运行,利用闲置的CPU资源计算梅森素数。搜索分配区间和报告计算结果的工作都是通过建立于1997年的PrimeNet自动完成的。从GIMPS开始运作到现在,已经发现了5个梅森素数,并且对8000000以下的数字都进行检查,排定了39个梅森素数的顺序。回顾一下数学家们寻找梅森素数的曲折过程,如果没有众多个人计算机的参与,这样的成果是绝不可能在这么短的时间内完成的。
GIMPS所依赖的,是被称为分布式计算(distributed computing)的技术。根据统计,个人计算机运行时,大约有90%的时间CPU是处于一种闲置或半闲置的状态中,这实际上是一种极大的浪费,而分布式计算就是一种将这些闲置资源充分利用起来的技术。它将复杂的计算任务分割成小的任务包,分配到参与分布式计算的计算机中去,从而使成千上万台普通的个人计算机形成一台“虚拟超级计算机”。采取这种技术,众多涉及大量计算的问题都可以以一种低成本、高效率、高速度的方式得以解决。而原来只能由专家和大型计算机进行的复杂专业的运算,正在演变成一种全球化的普罗计算运动。
这一点首先体现在数学领域中。在GIMPS的网站上我们能够看到,在应用了分布式计算的短短几年中,曾经困扰数学家几百上千年的难题,曾经需要几间屋子大的处理器计算几年的数据,如寻找10个连续的素数、推算л的小数点后的千的五次方位、研究孪生素数和布朗常数(Brun's Constant)等,都得到了圆满的解决。
如果说,参加GIMPS活动,去寻找一个400万位或是4000万位的素数对于数论研究的进步其实已经没有什么实际的意义,而仅仅可以作为一种人类对自我和荣誉的挑战的话,那么,分布式计算在其他领域中的应用,或许在不久的将来就会为人类带来极大的惊喜和现实的利益。
arecibo的望远镜
如果你曾经在网上下载过一个名叫SETI@home的小程序的话,那么你就可以向别人这样介绍你的工作电脑——“你看到我电脑上的这个画面了吧,表面上看它是一个屏幕保护程序,实际上,它是一个情报员,寻访外星生命的情报员”。这个SETI@home(Search for Extraterrestrial Intelligence at Home的缩写,意为在家中搜索地外文明),就是由美国国家航空航天局(NASA)和加州大学伯克利分校合作的、目前在全世界共有300多万志愿者参加的一项大型的网上分布式计算活动。当参与者的计算机处于待机状态时,它以屏幕保护程序的形式出现,分析由目前世界上最大的Arecibo射电望远镜所收集到的来自太空的电磁波数据。
在以前,分析数据的过程曾经是SETI@home的瓶颈,每天都有大量数据被采集并记录下来,但由于计算能力有限,却只有很少的一部分能够得到及时的分析和处理。分布式计算却将这一切都改变了。加州大学SETI@home工作小组的丹·维塞默尔(Dan Werthimer)在接受《空间》(space)杂志采访时说,“志愿者每天贡献的计算时间长达1000年,迄今为止,他们已经贡献了70万年的计算时间。”300多万台个人电脑联合起来,构成了世界上最强大的超级计算机,它的计算能力甚至令SETI@home的工作人员都始料未及:近来,他们不得不安装新的数据记录仪,从而避免待分析数据不足的情况出现。研究人员乐观的表示,随着越来越多的个人电脑加入到这一项目中来,它的进程将会大大加快,而终有一日,人类能够借此收听到外星生命向我们发来的友好的问候。
在这场普罗计算运动中,近来实施的一系列与寻找治疗癌症、白血病和艾滋病的新药相关的计算项目可能是与人类实际利益关系最为密切、会最早为人类带来福音的项目。其中,牛津大学、美国国家癌症研究基金会(National Foundation for Cancer Research)、英特尔公司(Intel,Inc)和联合设备公司(United Devices,Inc,简称UD)联合推出的“让你的计算机成为志愿者”(Volunteer Your PC)计划是参与人数最多、影响最大的一个。到本文撰写时为止,全世界共有634451人从UD公司的网站上下载了名为THINK的小程序,并进行了共计69390年的计算。同SETI@home一样,它看上去也类似屏幕保护程序。当志愿者的计算机联在网上且不处于工作状态时,它会自动检测到这一点,并从UD的网站上下载一个蛋白质组合模块。目前,在UD的中央处理系统中共储存有1亿多种蛋白质,通过分析这些蛋白质的构成和尝试不同蛋白质的组合,科学家们可能会找出能够治疗癌症的药物来。运用分布式计算技术建立的“虚拟超级计算机”将科学家们从单调而漫长的等待计算结果的过程中解脱出来,而“虚拟超级计算机”强大的运算能力使开发新药的时间至少缩短了3至5年。
在这场全球化的普罗计算运动中,你无需具备任何专业知识,也不用配备任何专门设备,你所需要的,只是一台可以连接在网上的电脑。在这场全球化的普罗计算运动中,你不会有任何的牺牲,然而你的参与,却可能为人类带来荣耀、梦想或是希望。在这场全球化的普罗计算运动中,任何一个微小的个人都可能让整个人类的未来发生改观,而你知道,这并非天方夜谭。
GIMPS大事记
1995年
程序员乔治-沃特曼(George Woltman)编制出梅森素数寻找程序并将其放到网上,“互联网梅森素数大搜索”计划开始。
1997年
斯科特·库尔沃斯基(Scott Kurowski)建立PrimeNet,使分配搜索区间和向GIMPS发送报告的过程自动化。
1996年11月13日
发现梅森素数M(1398269)。
1997年8月30日
重复验证证明M(756839)和M(859433)分别是第32个和第33个梅森素数。
1998年1月27日
发现梅森素数M(3021377)。
1998年3月29日
重复验证证明M(1257787)是第34个梅森素数。
1998年12月18日
重复验证证明M(1398269)是第35个梅森素数。
1999年6月1日
发现梅森素数M(6972593)。
2000年5月19日
重复验证证明M(2976221)和M(3021377)分别是第36个和第37个梅森素数。
2001年4月6日
成功验证了第一个1000万位的数字。
2001年7月25日
M(6972593)以下的梅森素数至少都经过了一遍验证。
2001年11月14日
加拿大志愿者迈克尔·卡梅伦(Michael Cameron)报告发现第39个梅森素数。
2001年12月
经验证,M(13466917)确为第39个梅森素数。