Tag Archives: pFind

pFind新版、生日

  好久没写BLOG,在忙软件的新版。昨天pFind Studio 2.4.1版发布了。欢迎下载使用。

  五月份发布2.4版时,因为要赶丽江会议的deadline,产品推出有些仓促。这次新版重点针对用户的反馈意见进行完善,尤其是pBuild有了不少改进。当然还要继续努力,下半年主要精力就放在完善pFind Studio产品上。

  除了产品开发,还和yf一起组织专利和软件著作权的申请。俺自己,也提交了pFind集群的算法发明专利以及软件著作权的申请资料。

  虽然紧张,工作与生活之间的平衡还算掌握得不错。帮忙照顾亲戚的小孩子有点头大,还好还好。昨天实在顾不上,我们只好把小朋友寄放到更远的亲戚家里去, 幸亏小姑娘是自来熟。下午pFind Studio安装包测试完成,各种知识产权申请和硬件设备采购都赶上了deadline,下班回家(遭遇地铁故障,煎熬)吃到了生日蛋糕。到晚上,听说亲 戚手术顺利,松口气。

断网断电话一段时间,还有pFind的千核并行进展

  从明天开始,我在一段时间内无法上网,也无法接听电话。

  顺便说说pFind Studio进展。最近hf和xs在全力完善pBuild 2.0。稍后我们会向全球用户群发邮件,邀请大家试用最新版本。另外,于上个月在深腾7000超级计算机上刚完成的实验中,pFind千核并行取得了满意的加速比。瓶子哥正在拼搏(站好最后一班岗),在2048核处理器规模下试验更大规模的数据。

  俺们算初步解决了多修饰海量谱图的高效并行加速问题。用户可以选定15种之多的修饰,或者把母离子误差开到500Da之大,pFind百核集群都能在常规时间内完成搜索鉴定。而现有的公开报道中,世界上其他竞争对手超过32核加速效率就会变差。大言不惭地说,俺们在并行加速方面获得领先。

  但仅考虑海量谱图是不够的,如果面对超常的巨型蛋白质序列库(例如直接搜索人类基因组数据,或这两年很热的用恐龙化石中提取的蛋白质搜索全生物库的需求),主流搜素引擎目前还都无法做到有效并行。仔细分析可知,这种情况下搜索引擎的运算特点就从以计算密集型为主,转为计算密集型和I/O密集型兼有,接近Web搜索引擎。也就是说,Google MapReduce那一套有用武之地了。

pFind集群的论文正式发表

  俺和瓶子的pFind集群论文:An efficient parallelization of phosphorylated peptide and protein identification已在英文期刊RAPID COMMUNICATIONS IN MASS SPECTROMETRY (2.772)正式发表。

  论文主要论述了我们在并行加速方面的研究。实验表明:pFind搜索引擎对一个含有100个Raw文件的磷酸化公共数据集进行鉴定,在100个处理器核 上,加速比为83.7;对另一个更大的、共含有1,366,471张质谱的磷酸化数据进行鉴定,在320个核上,加速比为258.9,加速效率达到 80.9%。

  目前pFind并行版已经投入一线分析实用。俺们正在千核条件下继续研发。

pFind Studio 2.4开始下载了!

  半夜1:30时xs发来新版pBuild。凌晨6:00时kzh和hchi哥发来新版pLabel。又经过今天反复折腾,晚上22:00,伟大的fan博庄严宣布:pFind Studio最后一个已知Bug测试通过。热泪盈眶中。

  欢迎大家到pFind官方网站注册并下载软件

  这两天像炼狱。前天sun老大在首都机场T3起飞前还在测试。昆明转机时,俺还一个电话接一个电话。到了丽江古城,对旅馆外的风土人情毫无感觉,一头扎进房间打开笔记本,开始上网打电话……发了N多骂娘邮件,今天中午一度有点怀疑人生。多亏hfchen、fan博、hchi、kzh、xs诸位夜以继日,日以继夜的长工最终把事情做成了。

  zhw说:第一次见面就说在对付bug,没想到了丽江这么山清水秀的地方,还是躲在黑屋里改bug。

  明早大家一定要去听Boss H精彩的大会报告呀。英文标题很煽情:pFind made in China: past, present and future.另外sun老大也是报告专家之一。

头晕和踢踏舞

  最近我把pFind搜索引擎的并行版逐步由传统“单Master/多Slave”模式向多Master的机制重构,Master的模式很接近 MapReduce。这是为了提高千核CPU并行下的I/O效率。两周前又着手准备pFind Studio 2.4的发布。累坏了。上周六开始偏头痛,周一凌晨甚至从梦里疼醒过来,早上10点才爬起来。这几天脑袋一直晕晕的。硬扛。

  经过周扒皮对长工们的剥削,pFind Studio 2.4的Bug逐渐消失。明天Release Candidate版,最后征集意见。

  从昨天开始抓住瓶子双人编程,在集群跟同步异步消息反复纠结。今天下午结果终于对齐了。神清气爽,头也不晕了。晚上回来还停不下来,继续敲键盘重构代码。

  (原来MPI也提供像MPI_Reduce这样的机制,和Hadoop比起来编程细节繁琐些,运行效率还不错,就是老土一点。)

  最近一两年和人打交道比机器多,从Code里体会到的乐趣也没有高中时代写游戏、大学时代hack美女上网密码那么high了。不过我还是喜欢编程,还是为“软件工程师”的称号而骄傲。巴菲特说,只给那些每天跳着踢踏舞去上班的人投资。愿老天保佑俺们和俺们喜欢的工作吧。

pFind并行版论文接收了!

  终于收到编辑的邮件:

  It is a pleasure to accept your manuscript entitled “An efficient parallelization of phosphorylated peptide and protein identification” in its current form for publication in Rapid Communications in Mass Spectrometry.

  从08年10月开始编写pFind集群版,到如今论文发表,好长好累的一段路。这是我从最低潮逐渐挣扎出来的一年半。所以,尽管同样是反复修改30稿,同样是RCMS英文期刊,这次比07年那篇论文,份量重了好多。如今扛过来了,自信暴涨。编辑邮件说:“thanks for your patience
as we worked to improve the manuscript”;不太轻易表扬人的BOSS H邮件说:“值得钦佩。我欣赏目标高远之人”。尽管人家是客气,我照单全收,哈。

  乌龟在兔子后面慢慢爬,感谢不离不弃的后援团。头一个就是老娘。向粉丝们报告一下老太太近况:1月1日飞去海南玩,上个月去上海看京剧(上火车当天上午,去UME看了IMAX《阿凡达》),本月在玩WII游戏,去钱柜唱K,参观城市雕塑展,到798看小剧场电影,最近忙着组织朋友去欧洲旅行(本来打算去非洲看动物大迁移,被胆小的儿子苦劝阻止),还刚去了中关村逛,准备买台新电脑(屋子里已经4台了)接到液晶电视上看高清Big Bang……

论文最终稿submit了!

  刚登录到RCM网站提交了论文的第二次Revision。最终是第29稿,截图纪念。等编辑的最终决定。始终紧绷着,把身体搞垮了。瓶子也在纠结中挣扎。到今天算是告一段落,熬过去了。晚上吃西湖醋鱼,心情不错。回来路上突然有强烈的疲惫感,的确该放松放松了。

  又回来补:原本周末有些私人安排,没想到明天还得面试人。哇哇哭。

  明白三十岁是啥情况了:不会被轻易忽略,也不会被轻易优待,你就是主力、主流、主干……拥有儿童时代梦想的所谓“成人”的自由、地位和资源,但不再拥有借口。

pFind引擎内核建立Trace机制

  必须上来写点,否则对不起订阅BLOG的读者了。

  这周我们封闭开发,重构pFind引擎内核引入Trace机制。我预研了Log4cppACE_TRACE的源码,还是决定自己动手实现底层机制,更贴近pFind系统的实际要求。

  像pFind这样的复杂系统,不免有大量输出信息,有些是给用户看的,有些是程序员调试时用来追踪进度和现场情况的。传统做法,调试信息会被用宏开关控制,产品发布时被关掉,以免输出过于庞杂导致用户体验变差,但这又会增大事故现场诊断Bug的困难。要调和这对矛盾,就需要灵活的Trace机制,通过设 置参数实时控制输出,例如范围(指定的算法模块、线程或集群节点)、级别(过滤或保留debug信息)和目标(命令行输出或写入日志文件)。

  这种基础设施涉及到整个系统,大部分模块都需要重构,工作量不小。在Win32下开发调试比较顺利,移植到曙光大机的64位Suse Linux时,出现了一些动态链接问题,调整了模块划分。(为了解决这个问题,去查阅俞甲子、石凡和潘爱民的《程序员的自我修养——链接、装载与库》,的确是好书。)

程序员的自我修养

  遇到了Gcc 3.4.5的这个Bug,编译STL总会出现大量Warning。从GNU Bugzilla上的讨论来看,Gcc 3.*系列的维护已经停止了,推荐升级到4.*系列。一直想升级pFind的默认编译器,但之前尝试时,ACE在Gcc 4.4(MinGW)下无法正常编译(刚刚搜索,貌似今年1月份刚刚有人把这个Bug解决掉了)。像陈硕这篇BLOG说的,ACE很值得学习借鉴,但代码臃肿,有很多使用问题。

  在重构后期,大家已经开始利用Trace本身进行调试。“吃自己的狗食”是个好现象。

  建立Trace机制、升级Gcc消除Warning,都是为单元测试(Unit Test)和持续集成(Continuous Integration)做准备。自动化测试是我今年的重点目标。衡量一个团队有多精锐,不在于统计技术牛人的个数,而要看它是否拥有超出平均水平的制度 平台。我发现凡是不用版本管理(SVN、CVS或VSS均可)的软件开发组都很烂,甭管团队里有多少能工巧匠。前瞻研究实验室年度汇报,听到浩哥讲Godson-T的开发,他们就构建了很强大的自动化测试平台,让人不服不行。

  还在考虑为pFind引擎构建“黑盒子”机制,把一段时间内的系统实时状态都记录下来,用以重现事故现场。云风做过类似的设计。不过这样一来,如何保证运行效率就成了关键问题。

  这周很累,但有成就感。接下来折腾RCMS论文,19日deadline。大家的批改纷纷返回,多谢,汇总中。

去Intel测试、下一版的昵称

  连续加班。筋疲力竭,死扛,晚上总做噩梦惊醒。今天全天开会,16人次讲PPT。晚上聚餐,算是告一段落了。

  前天应邀去Intel公司测试pFind并行版。是国贸旁边的那个实验室,就在央视新楼对面。公司的落地窗正是看焰火的好地方。ch博说,09年元月十五,他就在办公室。

  pFind表现正常。因为时间所限,测试参数不能设置得过“重”。以前提过,随着并行规模的扩大,pFind集群开始出现I/O密集型应用的特点。下一步的千核集群,Master节点应改成异步模式,很多步骤要用MapReduce。 

  从08年底开始做pFind并行计算,逐渐加深理解。现在看来,要兼顾“减少流程冗余”,“均衡负载”和“提高I/O效率”三个要素,才能获得好性能。其实,明确这三个问题,比解决它们更重要。如果RCM论文搞定了,就在BLOG里写写我们的解决方案。

  这次跟着高手学到不少。比如以前不知道用make -j参数,每次编译ACE,都得用三四十分钟。再如这次ch博推荐的paratera.com工具,对分析集群实时状态很有用。

  下一版的pFind内核还没规划,但是已经开始琢磨“昵称”了。按照我们的惯例,需要是科幻或动画角色。我强烈要求用Leonopteryx,《阿凡达》中的红色大鸟

里程碑收尾,论文,雪季开始,理想主义和Hadoop的调度算法

  里程碑接近完成。这一版pFind Studio除了增强搜索引擎内核,也针对用户易用性进行了改进。需求列表很长,但很多问题需要微妙的权衡取舍,没想清楚之前不宜动手。因此在有限时间内,主要是集中解决几个重点问题,减小智力负担,提高用户体验。好几个月没上一线写代码了,都有点生锈。

  leo和hchi的论文一年内被拒两次,终于有希望了。加油!工业级软件、发明专利、国际期刊……一个都不少,科研创新的过程很完整,赞。然而,zhch牛人的新一代后缀树组索引算法,又将取代pFind内核里现有的倒排索引。把前浪拍死在沙滩上。我的论文还在under review。

  最近心情略好,给自己买了条新的单板滑雪裤,去乔波玩了两次。今天听说出事故了,中级道关闭,警察来来回回勘察。阿弥陀佛,大家还是要注意安全,科学练习,初学者最好请教练,不要傻大胆强行冲坡,练单板的人要戴好头盔和护具。自从08年初受伤以后,滑单板变得很谨慎。今年春季dmq老板委婉地说:“忒平稳了”;雪场教练的评价就直接多了:“专拣最没激情的那种动作”;现在,又被总雪龄少于10小时的小朋友在初级道上鄙视了。没办法,十年怕井绳,三十岁的老胳膊老腿了,安全第一安全第一。

  不过,静下心来,就把左右脚的落叶飘和换刃都练熟了。认识了一位不错的专业教练。原来八一队练冬季两项的。年纪很轻、人很帅、脾气不错、技术当然很牛。只可惜受伤提前退役了。我打算上难度的时候,就雇他教一天。

  最新《程序员》里有一篇张岩的自述。讲到考研和求职,讲到亲人突然去世,讲到公司重组,讲到challenge和沟通。文字很朴实。有些话值得年轻人体会,例如“做工程师永远要记住细节是魔鬼,只有在细节上充分积累,技术上才有成长的空间”;又如“请保持理想主义,相信我们做的事能改变生活。我们每天起床和上班,不是为了赚钱糊口,而是因为兴趣和使命感。”

  技术上最引起我注意的是《Hadoop集群作业的调度算法》,正好是下一步工作的重点。豆瓣王守崑的《走进个性化推荐系统》讲的是近期热点,也很有意思。(Resys召集聚会,就在豆瓣公司举办,可惜报名晚了没抢上名额,哇哇哭)