Tag Archives: pFind

流水帐.2009.11.11

  压力很大,有段时间没有写BLOG的心境。修养不够,乱发火,还需要磨练,还需要反省,还需要成长。

  投稿Journal of Proteome Research,被传说中的副主编不经同行评审直接拒稿。yb打电话聊天,安慰:有些人就是怀疑,认为中国大陆做不出那么出色的科研成果。其实还好,还好。宁愿相信是自己做得还不够牛。即使真涉及技术外的因素,是不是歧视,取决于你最终到底做成什么样。姚明得分超过30,巴克利就该kiss驴屁股,否则人家就是有先见之明。短暂抑郁,转投Rapid Communications in Mass Spectrometry。这次遇到的责任编辑还是06年投稿的那位,很快就进入peer review了。fy老大催着赶紧申请专利,否则文章一发表,就来不及了。

  瓶子哥在曙光5000A上测试,320核条件下,加速效率达到80%。欣慰。这段时间的交流,意识到随着分布式规模的扩大,pFind集群的特点逐渐向I/O密集型靠拢。也就是说越来越像web搜索引擎。明年要搞点MapReduce的尝试。另外购买4000块的昂贵显卡。一直在关注GPU在科学界的应用。生物制药、物理航天、天气地质、游戏娱乐……短时间出现了爆炸性的增长。计算机行业的一个有趣的特点就是,工业界常常跑在前面,搞出一些破坏性创新,给学术界造成了很大的压力。

  雪下得好大,积雪没过了鞋帮,咯吱咯吱的。大家注意身体,别H1N1。今天见到了好久没联系的jw。原来是班车11点还因为大雪堵在路上,他索性下车到我们这里交流。忙过这一阵,要去看看朋友们。当然,还是会逼着大家给pFind引擎提意见。

  在各种场合听到关于创业的讨论。创业当然主要跟钱有关,但是必须有一点钱以外的东西。Boss H说得对,一时的热情最容易消散。必须有点功利以外的理由,让自己在最痛苦时平静下来,坚持下去。

  douban.com在测试“豆瓣电台”,根据你的历史行为推荐音乐。上来就给我推荐了几首没听过的张震岳、周杰伦和涅磐。查了查,豆瓣在招聘“算法和数据挖掘专家”。应聘要求包括:“热爱探索和钻研,相信算法能够改变人们的生活;极佳的逻辑分析能力和学习能力,善于应对各种智力挑战;熟悉海量数据处理和挖掘的基本算法, 或有高性能科学计算的相关经验”。

流水2009.10.4

  • pFind并行调度论文投稿了,最后是第17版。30页英文改了这么多遍,最后时刻仍不断收到试读人的大量意见,说明作者逻辑和英语有多弱。(谢谢大家!)特感谢瓶子哥的韧劲,10月1日还在修,直到临晨2点。接下来着手申请专利。
  • 被人提醒追求完美要有限度。不过人家又赞了一句:执着的人,够酷。明年,在千核集群上继续研发,让世界上其他竞争对手团队望尘莫及。老大说:“你是火鸡的时候,别的鸡不会承认你个头大,只有变成鸵鸟,才能让它们彻底服气。”
  • 双节,老娘的60大寿。陪她看《建国大业》。老一代不数星星,更关注历史本身,一闪而过的边缘人物她都清楚来龙去脉。不过,老太太还是知道些八卦的:“那个声嘶力竭喊‘毛委员’的,娶了个法国老婆,叫刘烨”。
  • 有幸和我老娘同一天生日,缜密平衡的天枰座的家伙,生日快乐。
  • 上周有一天,房间进了三只蚊子。半夜爬起来,用了一个半小时逐一消灭掉。在等待蚊子“嗡嗡”声出现的间歇,读完了《卡萨诺瓦是个书痴》
  • 在用Google Music听《私房音乐(费洛蒙)》,开始用它的原因,是别的在线音乐服务对Firefox支持都不太好。

Joel 12条和2006年

  Tinyfool刚刚发了一篇关于著名的Joel 12条的BLOG。我很有成就感。

  一直用Joel 12条作为软件工程实践的基本底线。这12条很朴实,我也实践得很朴实:时不时在PPT里把这12条拿出来给现状打分,不停唠叨直到他们养成习惯,这样坚持了4年。刚开始只有3分。现在超过10分。

  事实证明效果很好。不谦虚的说,这个学生为主,还要兼顾大量科研任务的团队,工程效率超出了很多软件公司。双人编程、重构、代码审核等高级的软件工程实践,是建立在SVN版本管理这类基础设施之上的,这是常识。

  这些年pFind Studio各个软件不断上演龟兔赛跑的故事:刚进入某领域时总是显得缓慢笨拙,等过了2.0版,团队协同的平台效益就明显起来;而很多同行系统越大越纠结,一旦核心牛人的热情和投入减弱,很快就成了焦油坑,演进陷入停滞。

  说到水面以下的积累,前几天“超龙一号”评审,有个院士表扬我们组,举了一个美国国内的统计:持续专注少于8年,团队人数少于8人的科研团队,全部失败,没有一个团队能持续搞出牛的科研成果。

  到现在为止,pFind团队坚持了7年半。

  最难的时光?也许是2006年。那一年,整个组没发表一篇论文,没拿到一分钱,没申请专利和软件著作权,每次例会都有种沉重的气氛。

  但也是那一年,团队下了决心把pFind彻底推倒重来,静下来,老老实实打磨,一次次反复跑实验。现在回头看,个人记忆里,那是困惑挣扎的一年,也是幸福充实的一年。从那以后,开始对pFind变得自信,对自己变得自信。

  BTW:北京、山东、天津、上海又一次集体输球。这次我彻底服了,不知hchi哥服不服。

pFind Studio 2.3 RC

  7月焦头烂额。居然连BLOG都耽误了。这很不好,写BLOG并不妨碍工作,然而对成长的记录却是一种不可缺少的自我投资,坚持得越久,回报越多。实际上,这个月发生了不少好玩的大事小情,当时不立刻记下来,很快就失去鲜活感了。

  突然有敲字的兴致,赶紧登录上来。有些内容先做索引,后面的blog陆续详述。内容散乱,理解精神吧:)

  pFind Studio 2.3发布了Release Candidate。以往,每个新软件或模块的主力作者有权利给作品命名一个昵称,组里惯例是动画片或科幻角色。例如:pFind 2.1内核,hchi哥命名为Doraemon,也就是机器猫的名字;组里两台服务器,hp命名,一个叫shark,《海底总动员》里的鲨鱼;一个叫donkey,《怪物史莱克》里的驴子;所向披靡的pLabel 2.0之父lyxiu,把它命名为Wall.E,《机器人总动员》里的主角。

  yjw mm给pFind 2.3内核起名为EVA,《机器人总动员》里帅帅的侦查机器人,这是组内产品序列的昵称里,首次出现女性名字。08年8月8日,hchi哥的Doraemon发布时,俺就感叹:完美,没想到不到1年,又被拍死在沙滩上了。

  (BTW:前两天30岁生日,怨念和纠结,请组里去钱柜唱K,收到惊喜礼物:一个EVA。你和她说话,她就表演电影里的台词、动作和眼神,一模一样。放在书房里,夜里上网,她就在那里“Wal…l…E”,“E…VA”地不停折腾)

  czh哥给新版索引模块命名为Simba,狮子王里面的主角。

  (BTW:利用pFind新索引的恐怖功能,rxsun大虾做了件很酷的事:对恐龙化石里的胶原蛋白,进行跨物种搜索。结果证明,鸟类的蛋白序列的确和恐龙最接近)

  瓶子哥给pFind并行版内核起名为Monsters,《怪物电力公司》里的主人公。这个月也就是为了它的论文纠结,英文写到吐。下半年还要申请一个发明专利。

  (BTW:在同一个大型集群上跑相同的鉴定任务,SEQUEST折腾了24小时,Monsters仅仅花费2800秒,鉴定准确性上也占压倒优势。牵着俺们的怪兽出去,真的吓坏了不少人)

  业界大事嘛,其实不太关心Google宣布要推出PC的操作系统。我感兴趣的新闻有:C++标准委员会居然否决了concepts;Apple发布新版iPhone SDK;Google发布simple编程语言;久其软件获准IPO,创造100位百万富翁(里面有大量北交大计算机系和通控系的校友,不少是我的好朋友,哈)。

pFind并行版定型

  里程碑。pFind并行版代码冻结,按期到站。今天彻底休息了一下,睡了一整天,半夜回魂,上网,来随便敲些文字,放松,没逻辑。(瓶子哥被我折磨得快断气了,所以deadline一完,就逃出北京城,找某人疗伤去了)

  最近一个月,除了并行版的研发工作,忽略了所有其他。活在自己的气场里,感觉非常独特。过山车:没进展时,回家的轻轨就显得特别久,疲惫沮丧,手指尖都懒得动;一旦有突破,又好像成了世界之王。

  接下来,做PPT、写技术报告、论文投稿、还想申请发明专利……停,今天不想这些。

  感谢CCTV、感谢MTV……特别赞一下新人,扛起搜索引擎的日常维护,让我省了不少心。组里工程水平已上轨道。每周定期review SVN提交代码,我可改的地方越来越少。

  提到这个,想起BOSS H以前说:“你的最大本事就是那些code style(编程风格)和design patten(设计模式)吧”。这话对也不对,其实关键在于如何培训和实行,让新人遵守规范,习惯双人编程,学会制定Todo List,懂得倾听,整个团队用统一的思路进行编码和架构。

  反过来,也夸夸自己。pFind Studio有十几万行C++,几十个模块。但进组几个月的新人就可以独立调试细节,重构全局流程。干活的人自然是能力出众,也多少显出一点儿我这架构师的本事,哈。

基于云计算的蛋白质组学

  又到了写BLOG的Deadline。对我来说写作是种享受。只是之前这段碎碎念太多,BLOG总在码琐事。所以这次Todo List要求必须写技术。

  这个月的Journal of Proteome Research上刚刚发表了一篇论文,利用Amazon Web Services提供的EC2平台进行质谱数据的肽和蛋白质鉴定。这正是俺加入生物信息课题组五年来朝思暮想的目标。科学界对云计算概念接受速度之快令人惊讶,已经看到物理、生化、机器翻译领域的不少研究,都是租用云服务以完成海量计算任务。

  今年7月我们将发布pFind 2.3。速度精度都将有进一步提高,敬请期待。

  虽说要写技术,还是忍不住写点八卦。

  周五带小弟去和美女们KTV。通宵的麦克风争夺战打完,五打(60瓶)啤酒喝下去,得出鉴定结果:计算所的程序员男生实在太腼腆内向,无论是飙歌还是拼酒,都被生化丫头们比下去了,与写代码时的生猛劲头儿形成鲜明对照。

  和职业有关?错!恰恰是俺们唯一的女生不露怯,对方阵营唯一的男士三次敬酒,wyj美女都是干干脆脆吹下去一整瓶,和她开发新版搜索引擎一样气势逼人。

  没有生人,这帮家伙就活跃多了。上周末,请组里未婚人士到家里玩WII。整晚俺都在担心客厅的木地板,也奇怪楼下邻居为何不在临晨3点报警。

编译加速、分布式版本管理和IE7漏洞

  pFind代码慢慢变得庞大,每次make clean再make all,等待越来越漫长:喝咖啡、收邮件、伸懒腰、作体操、聊八卦……因此这两天在考虑引入distcc和ccache。

  总踅摸着用python写个make的替代品,今天刚刚接触到scons。不好意思,穿越了。

  一查Google Reader的starred items,发现很早就标过一篇BLOG,解释distcc、ccache和scons如何联用的。

  所以一线体会很重要,没有切身接触到实际问题,对技术方案就不会那么敏感。

  另一个例子:Eclipse CDT的团队负责人Doug Schaefer的BLOG上刚刚发了一篇Time for Distributed Source Control is Now

  好几年前Linus就在谈论内核代码如何利用Git进行分布式版本管理(Google Tech Talk视频)。但我们这里SVN用得还行,相安无事,感觉离那些太空武器还很遥远。然而最近一段时间,团队越来越大,逐渐分成几个方向,出现异地开发(比如到生物学家这里常驻),问题就多起来。

  回头再查,云风的BLOG早把我们面临的问题总结出来了

  若干年前我们淘汰了加锁的协作编码方式,到今天是时候再做一些改变了。或许,分布式的版本控制工具才是未来的发展方向。我想总有一天,CVS/SVN 这类集中式版本控制工具会被淘汰掉的。

  说说我的困扰吧,可能很多开发小组也遇到过。

  1. 我们禁止提交不能编译通过的代码,尽量不提交不能测试通过的代码。结果,对于很复杂的模块,有人几乎一个月都没提交过一次。他总是觉得程序还不太成熟,但几经修改的代码其实从来没有作版本控制。

  2. 有些模块由两个人合作编写,关系非常紧凑。有时候需要在两人之间交换一些代码,为了方便,大家通过代码仓库中转,结果在仓库中留下许多未完成的版本。

  3. 代码被用笔记本带回家,结果在家完成的部分无处可以提交。(为了安全,我们的代码仓库不能从外网访问)

  4. 某人写了一个模块,总是有 bug 没有修改完,而不敢提交。这个时候,另一个人希望协助他找问题,却没有合适的途径 share 那段完成了一半的模块。跑过去 XP 一下么?天哪,为什么我们这里每个人用的编辑器都不一样,还都爱用些特别个性的配色方案呢?

  当然也不是100%同意他的观点。比如第4条,对于我们来说,双人编程和Code Review是很频繁的。

  说到穿越、火星、反应慢,最近还有件事。

  一直患有打补丁强迫症,以前都第一时间升级Windows补丁。可是这次的IE7严重漏洞,直到昨天正在跑实验的机器被Windows Update强制重启后才注意到(微软太霸道,跑了两天的实验又得重新来过)。用惯Ubuntu以后就很少启动Windows,就算启动,一般也用Firefox浏览器。

  搜索了一下,Yahoo上有一篇:Chinese Team Mistakenly Released Unpatched IE7 Exploit。找到文中所提的中国的KnownSec team的BLOG,他们是这么解释的:

  鉴于此漏洞的危险性,作为微软的安全服务提供商,我们已第一时间发布公告,并提交给美国微软相关部门,这里不再公布具体细节。

  KnownSec team于近期捕获利用IE7一个内存越界的漏洞进行攻击的恶意代码。此漏洞于11月在小范围内泄露,于12月9日前后才完全出售流通,有人制出网马生成器,相信会在短期内十分流行。

  由于最初捕获时,在网络上发现了网马及代码帖子,误以为是已修补的漏洞,不是0DAY,便在内部共享粘贴,导致代码散布。这是我们的失误:(

中场休息

  动态分配策略一上线,就顺利超出了预想标准。回想一下从10月底到现在,从一点都没摸过的菜鸟,调通第一个hello world,到一个版本一个版本迭代,逐渐把pFind集群加速比提上来。小马过河,既没有想象中那么容易,也没有想象中那么难。

  松口气,然后就感到很累,像身体里某个开关被突然切断一样。

  今天早上喉咙肿了。索性偷懒,让瓶子哥自己去实验室,自己接着闷头大睡。间或收到瓶子哥的短消息,告知后续实验结果,我发了个“太好了,这样数据就全面了”,接着昏睡。13点,喉咙消肿了,才起来出去吃饭,脑袋还是犯迷糊。一整天下来,只是回复了几封email,给笔记本的ubuntu升级了操作系统内核补丁,听了点儿技术报告,没干什么正事。

  从北京临走时,买了一本村上春树的《舞!舞!舞!》。昨天终于从行李里找出来开始看。刚看到一半,爱死这本小说了。越来越觉得《挪威森林》在村上的书里,并不是最有趣的。

  原本没想买这本。11月初“光合作用”打电话通知雷蒙德·钱德勒的《漫长的告别》到货了。当时pFind 2.2正在紧要关头,把这事扔在一边,拖了一星期再去,又卖完了。郁闷。因为是《寻羊历险记》的后传,所以选了《舞!舞!舞!》。

  过两天找机会去一次上海书城。

  这只是中场休息,到年底还有不到3周,还有事情想做。明天重新披挂,按村上春树的说法,继续“与现实生活短兵相接”。

昵称

  又要起名字了,按组里惯例,昵称都源于动画片

  前两天我们用淘汰的老旧电脑攒了个山寨版集群,用于分布式搜索引擎的调试,瓶子哥起名叫Monsters,真吓人。

  争论最激烈的是pFind 2.2内核,有人推荐WALL.E,有人认为它的女朋友EVA更酷,还有人喜欢圆乎乎的功夫熊猫ABAO。投票表决中。

  好像没在BLOG上提过pFind 2.1内核的昵称。hchi哥是2.1的第一贡献者,他给2.1命名叫DORAEMON。

  现在在上海,刚下火车就开始调试代码。中午又跑去吃牛排。一向喜欢坐火车,有规律的铁轨声让人心境平和。瓶子哥说,那是因为没有屏幕和鼠标键盘。年底还有6周,努力把能搞定的事都按时收摊。

技术报告:pFind研发中的工程问题

  上周领导推荐我参加一线科研骨干的公开报告。其他报告人都是博士,讲的都是高深的学术题目。而我分享的是pFind开发中的工程问题,很浅显。听众反应似乎还不错,大概正是由于简单,大伙都能听得懂吧。

  很多人向我要slides,索性共享在学术主页让大家下载。报告分两部分,前一半是关于计算蛋白质组学的背景介绍,不关心的话,可以直接跳到后面软件工程和架构部分。因为是连夜准备的,排版有些粗糙,有时间我会继续修改完善,不好意思。