首先我们来认识几个词汇:
- NIH(National Institutes of Health)美国国立卫生研究院;
- NLM(National Library of Medicine)美国国立医学图书馆;
- NCBI (National Center for Biotechnology Information)美国国立生物技术信息中心。
由于意识到信息计算机化过程方法对指导生物医学研究的重要性,美国参议员 Claude Pepper 发起了在 1988 年 11 月 4 日建立国立生物技术信息中心(NCBI)的立法。
隶属关系如下:NCBI 是在 NIH 的 NLM 的一个分支。
- BLAST(Basic Local Alignment Search Tool)):生物信息学研究中经常需要进行序列比对,BLAST 是传统的序列比对工具,可以在蛋白质数据库或 DNA 数据库中进行相似性的比较分析;
- NCBI-BLAST:NCBI 提供的 BLAST 2.0,和最初的 BLAST 相比,已经可以处理有缺口的比对序列了;
随着生物序列数据的快速增长,大批量序列比对变得极为耗时,近年来开始利用 GPU 加速生物序列比对,许多传统的序列比对工具和算法都在 GPU 上得以移植实现。
- GPU-BLAST:可以调用 GPU 的 BLAST 程序;
参考官网 GPU-BLAST 的安装和使用文档,本文详细描述了在 Centos7.0 系统部署 GPU-BLAST 的步骤,并且运行了样例程序,在 K80 平台体验了 GPU-BLAST 的加速效果。
1. 安装 Centos7.0;
可参考 Centos 7.0 (1) 安装。
2. 安装 nvidia 显卡驱动;
可参考 Centos 7.0 (7) 安装 nvidia 显卡驱动。
3. 安装 CUDA;
安装CUDA7.5。
详细安装过程请见附录。
4. 安装GPU-BLAST;
安装 GPU-BLAST 有两种方法。其一是分步安装,先安装 NCBI-BLAST,再安装 GPU-BLAST;其二是同时安装。我们来详细描述方法一的安装。
1)安装 NCBI-BLAST
建立一个工作目录,进入该目录。我们的工作目录是 /root/blast。
# wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.28/ncbi-blast-2.2.28+-src.tar.gz
# tar -xvzf ncbi-blast-2.2.28+-src.tar.gz
# cd ncbi-blast-2.2.28+-src/c++
# ./configure
然后我们可以来编译了,make 后面是可以跟参数的。我们的机器上装了 2 个 E5-2630 v4 的 CPU,有 20 核,所以我们的编译命令是 make -j20。如果不设定参数,直接 make 也可以,只是速度会慢些。
# make -j20
# make install
我们来看一下成功安装后的目录情况:
# ls
可以看到,目录下有一个 GCC482-Debug64 目录,这个目录的命名是和机器的 GCC 版本相关的,可以看出我们机器的 gcc的版本是 4.8.2。
blastp 就在 /root/blast/ncbi-blast-2.2.28+-src/c++/GCC482-Debug64/bin 目录下。这个可执行文件实现蛋白序列到蛋白库中的一种查询,蛋白库中存在的每条已知序列将逐一地同每条待查序列作一对一的序列比对。
2)安装 GPU-BLAST
进入工作目录(/root/blast)。
# wget http://thales.cheme.cmu.edu/gpublast/gpu-blast-1.1_ncbi-blast-2.2.28.tar.gz
# tar -xzf gpu-blast-1.1_ncbi-blast-2.2.28.tar.gz
# sh ./install
我们需要输入 yes
输入 blastp 所在的目录后,成功安装!
5. 使用 GPU-BLAST 的准备工作;
1)我们在工作目录下新建 database 目录,下载 env_nr.gz。
# mkdir database
# cd database
# wget ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/env_nr.gz
# gunzip env_nr.gz
解压缩后,database 目录下有文件 env_nr。
2)在工作目录下新建 queries 目录,下载 queries.tar.gz 文件
# cd ..
# mkdir queries
# cd queries
# wget http://thales.cheme.cmu.edu/gpublast/queries.tar.gz
# tar -xzf queries.tar.gz
解压缩后,目录下会出现很多txt文件,如下图:
3)修改 .bashrc 文件,修改 PATH 内容,增加 blastp 所在的 bin 目录;
# vi ~/.bashrc
增加如下内容:
export PATH=/root/blast/ncbi-blast-2.2.28+-src/c++/GCC482-ReleaseMT64/bin/:$PATH
保存退出。
关掉当前终端窗口,重新开启一个终端窗口。
4)运行时需要调用 CUDA 的库,我们在 /etc/ld.so.conf.d 目录下新建 blast.conf 文件,将所需要用到的库的目录写入。
# vi /etc/ld.so.conf.d/blast.conf
增加内容
/usr/local/cuda/lib64
# ldconfig
6. 使用GPU-BLAST;
先将数据库进行排序,然后将其转化成 GPU-BLAST 支持的格式,这步就可以调用 GPU 来加速了。
1)排序数据库
# cd /root/blast
# makeblastdb -in database/env_nr -out database/sorted_env_nr -dbtype prot -sort_volumes
对下载解压缩后的 env_nr 进行排序,排序后的文件是 sorted_env_nr。
-sort_volumes 选项只对蛋白质的 FASTA 格式的数据库有效。
2)用 CPU 和 GPU 分别处理 sorted_env_nr进行操作。
CPU模式:
# blastp –query queries/SequenceLength_00000100.txt -db database/sorted_env_nr -gpu f
GPU 模式:
# blastp –query queries/SequenceLength_00000100.txt -db database/sorted_env_nr -gpu t
可以看出,调用GPU后,运行时间由33m提高到25s,加速比1.32。
测试服务器的配置是:
CPU :2 颗 E5-2630 v4
内存 :64G
GPU 卡 :1 片 K80
附录:手把手教你安装cuda7.5
1)安装依赖软件;
# yum install freeglut*
2)将 cuda 安装包(如:cuda_7.5.18_linux_64.run)拷贝到相关目录下,进入该目录,为文件增加“可执行”属性;
# chmod 755 ./cuda_7.5.18_linux.run
3)安装 cuda;
# ./cuda_7.5.18_linux.run
可以按空格翻看,或者按 q 结束查看,继续安装。
输入 accept 继续安装。
由于已经安装了 nvidia 显卡驱动,这里我们输入 n 不安装 cuda7.5 自带的显卡驱动(版本为 352.39)。
输入 n 不安装 OpenGL 库。
输入 y 安装 cuda 工具包。
设定 cuda 工具包的目录,默认是 /usr/local/cuda-7.5,这里直接回车接受默认设置即可。
输入 y 建立到 /usr/local/cuda 的软链接
这里可以输入n,不安装 cuda7.5 的样例程序。因为 cuda7.5 toolkit 中是包含样例程序的,不需要重复安装。
修改 .bashrc 文件,修改 PATH 内容,增加 cuda 的 bin 目录;
# vi ~/.bashrc
增加如下内容:
export PATH=$PATH:/usr/local/cuda/bin
保存退出。
关掉当前终端窗口,重新开启一个终端窗口。
尊重作者辛勤劳动,转载请注明出处。