【G-BLASTN 1.0正式发布】G-BLASTN使用GPU来加速NCBI-BLAST里的BLASTN模块,单块GTX780比四核CPU平均快6倍。

http://www.comp.hkbu.edu.hk/~chxw/software/G-BLASTN.html

基于NCBI的BLAST源代码进行修改,150多万行的开源代码,刚开始做的时候,并没有引起太多的注意,只是觉得工程庞大,越到后面,越觉得,这个东西太庞大了,里面参杂了C和C++的不同方式的设计模式,找一个功能实现,可能需要翻阅20-30个文件,整个工程太过庞大,BLASTN一个模块,子工程就有179个,每一个工程之间也有调用;

不过也很佩服BLSAT的开发者们,这个工程已经维护了30多年了,有一种说法是比windows的年龄都大,这么庞大的开源项目,里面的设计模式还是相当的清晰,只是调度过程有些冗余罢了。

之前太多的时间浪费在了繁杂的事情上,从去年开始回归,专注于科研,把BLATN作为了第一个目标,本应该在2009年做的一个项目,到了2012年,才算真正拿起来做了,一年的在实验室不分昼夜,基本上杜绝一切的聚会活动,整个过程的艰辛只有自己清楚,再说,要想成功,又哪有那么容易啦?

blastn的整个代码过程分析花了无数个草图,无数个分析文档,有幸拿到的有关BLAST的设计文档也只是从概念上加上文字上的分析,没有整个框架的设计图,没有每一个模块的调度图,都是一行代码一行代码跟踪出来的。这个过程对于学习别人的代码,有了更深层次的了解,对于发文章而言,只需要修改几个核心函数,不用管太多的框架问题,但是真正要做到开源的项目做成成品的时候,就尽量遵循已有的规则,按照以后的框架来修改代码。这样对后来修改的朋友,也是一种交代。

一年多的代码修改,用svn工具统计了一下,差不多前前后后修改了5万多行代码,也算是一个学习的过程吧。

http://www.comp.hkbu.edu.hk/~chxw/software/G-BLASTN.html

BLAST的框架适合在windows上开发,然后在LINUX上做测试,这次过程中,不只是修改了核心的比对部分的代码,还调整了框架,调整了IO部分,调整了冗余部分,对于一个软的优化而言,永远都是一个迭代的过程,热点不停的转变,最终达到理想的最优态。

最新文章

  1. 表单和iframe的使用
  2. CSS background-position 问题
  3. Java知识点总结(不定时更新)
  4. 设计模式原来如此-代理模式(Proxy Pattern)
  5. js动态删除div元素
  6. error recoder,error debug for openStack kilo
  7. mysql的client和sever之间通信password的传输方式
  8. CSU 1659: Graph Center(SPFA)
  9. Calico 的网络结构是什么?- 每天5分钟玩转 Docker 容器技术(68)
  10. [转载] 理解OAuth 2.0
  11. leetcode:程序猿面试技巧
  12. [tornado]使用webscoket的使用总是403错误
  13. 如何查看App provision profile文件中的钥匙链访问组名称
  14. 版本管理工具小乌龟TortoiseGit的安装和使用(1)
  15. scrum学习
  16. 【转载】ucos临界段
  17. STS(eclipse)3.7.3新建项目报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)
  18. SQL Server 2012 R2升级到SQL Server 2016无法正常启动数据库服务解决方案
  19. zookeeper 学习资料
  20. 转:我是否该放弃VB.Net?

热门文章

  1. 数独破解c++代码
  2. Visual Studio Code和Docker开发asp.net core和mysql应用
  3. 并查集及其简单应用:优化kruskal算法
  4. poj 1007 纯水题 排序
  5. poj3507---去掉最小值和最大值
  6. aix rksh 执行CLI命令行限制
  7. java快速排序1000万无序数组JVM-Xmx=256M 耗时2s
  8. fs.rename可以重新写入文件
  9. hdu 4597 Play Game(区间dp,记忆化搜索)
  10. 实现一个做双向NAT的虚拟网卡