linux重启gpu_基于GPU的NanoPore三代测序的basecalling
Nanopore作为三代测序的代表之一,虽然其错误率非常让人蛋疼,但是价格相对亲民(一万的测序仪不香么)且具有实时测序实时分析的特点,对于不具有大型测序仪测序条件的地方有其独有的优势。Nanopore测序检测的是通过微孔的若干个碱基的电压变化信号(测序原理请自行了解)。因此,为了获得每个碱基的具体组成(即basecalling),需要解析电信号,涉及到机器学习等方面的算法应用。目前Nanopore官方推荐的basecalling工具为Guppy,其有两种主要模式:一种是CPU模式,即利用CPU进行Basecalling;另一种是GPU模式,即利用GPU进行Basecalling。GPU模式比CPU模式要快很多很多很多。根据一份benchmark(https://esr-nz.github.io/gpu_basecalling_testing/gpu_benchmarking.html#gpu_ram_usage37),使用高性能的GPU进行Basecalling和CPUbasecalling比起来可以说是一个在天上一个在地下。

########################想看正确姿势的这部分可以跳过###################
手头有一DELL T630,然后淘了一块NVIDIA的Tesla M40 24G的GPU,剩下的应该很EASY了。毕竟找到了一份保姆级教程(https://blog.csdn.net/Lucifer_zzq/article/details/88997018)。开干!
1、服务器安装Ubuntu16.04,/var目录单独挂载一个大的盘(>1TB)或将全部容量都挂载在根目录(/)下。
2、重启后从cuda中安装GPU驱动和CUDA,并不用单独安装GPU驱动,但是为了避免出错,我是单独安装的。cuda8下载地址位于
https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
下载cuda8和GPU驱动
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
wget https://download.nvidia.com/XFree86/Linux-x86_64/450.80.02/NVIDIA-Linux-x86_64-450.80.02.run
先要关闭lightdm,也就是图形界面:
sudo service lightdm stop
安装显卡驱动
sudo sh NVIDIA-Linux-x86_64-450.80.02.run
安装时有三个选项需要选
有错误,直接继续安装

DKMS注册到内核,否

是否安装32位驱动,是否都行

安装cuda
sudo sh ./cuda_8.0.61_375.26_linux-run
注意选择不安装驱动和opencl
3、测试
输入nvidia-smi查看显卡安装情况,
然鹅,duang,出现了问题!
$nvidia-smi
Killed
讲道理网上说安装好了出来的都是这种。 同时安了guppy也无法开始basecalling。

我这个貌似不太对!经过反复更换系统版本、更换系统内核版本、更换GPU驱动和CUDA版本依然没有解决这个问题,折腾了三四天之后实在不行了。同时,注意到Nanopre官方说需要算力大于6.1的GP
U,这块M40明显也不够啊。只有借助金钱的力量了。

#####################折腾结束的分割线############################
在我漫长的折腾里面发现了一个令人痛苦的事情,那就是显卡型号、显卡驱动版本、CUDA版本、系统内核版本和Guppy版本这几者是环环相扣的。这不禁让我想到了在某个github里看到的那句让人内牛满面话:

EXTREMELY DIFFICULT!!!
后来我意识到其实根本不需要服务器,所以为了一劳永逸的解决问题去配了一台普通PC,大概的配置如下:
CPU:十代酷睿i7
GPU:NVIDIA GeForce RTX3080 10GB
内存:32G
硬盘:4TB
选择RTX3080的原因是3090太贵,而且从算力上来说是一样的(那你为什么不买3070?)。

后续就是安装Ubuntu 18.04,安装18.04的原因是Nanopre技术支持说他们在逐步放弃对16.04的支持,所以为了避免意外选择了18.安装好ubuntu。进入系统进行一个升级。
sudo apt-get update
sudo apt-get upgrade
安装GPU驱动,可以手动安装也可以用cuda11安装。我是分开安装的
sudo apt-get install nvidia-driver-455
重启后输入nvidia-smi,显示正常
然后安装CUDA11.1,先去https://developer.nvidia.com/zh-cn/cuda-downloads根据你的操作系统选择要下的cuda,选择runfile wget下载再丢到服务器上去或者直接wget下载。

sudo sh./cuda_11.1.0_455.23.05_linux.run
等待片刻解压之后开始安装。出现一个用户须知之后输入accept,
取消勾选安装GPU driver然后直接看是install。安装好后要把cuda的bin和lib加入环境变量,用vim打开 ~/.bashrc
vim ~/.bashrc
在文件的最末加上如下内容:
export CUDA_HOME=/usr/local/cuda-11.1
export PATH=PATH:" role="presentation" style=" font-size: 15px; overflow-wrap: normal; display: inline; line-height: normal; text-align: left; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">PATH:PATH:CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64{LD_LIBRARY_PATH:+:" role="presentation" style=" font-size: 15px; overflow-wrap: normal; display: inline; line-height: normal; text-align: left; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">{LD_LIBRARY_PATH:+:{LD_LIBRARY_PATH:+:{LD_LIBRARY_PATH}}
保存退出(vim不知道的朋友自行百度)
source ~/.bashrc
生效,重启一下系统之后测试一下cuda是否安装成功。
进入
cd NVIDIA_CUDA-11.1_Samples/1_Utilities/deviceQuery
编译
make
运行
./deviceQuery
显示pass即安装成功。
最后安装guppy可以有三种方式,1、直接下编译好的文件;2、deb包安装;3、从源apt安装,方法见nanopore官网
如果是编译好的文件运行:
~/ont-guppy/bin/guppy_basecaller -i ~/data/fast5_pass/ -s ./fastq/--flowcell FLO-MIN106 --kit SQK-LSK109 -x cuda:0
deb包或从源安装运行:
guppy_basecaller -i ~/data/fast5_pass/ -s ./fastq/--flowcell FLO-MIN106 --kit SQK-LSK109 -x cuda:0
然鹅又报错了
[guppy/error] Common::LoadModuleFromFatbin: Loading fatbin file shared.fatbin failed with: CUDA error at /builds/ofan/ont_core_cpp/ont_core/common/cuda_common.cpp:54: CUDA_ERROR_NO_BINARY_FOR_GPU
驱动和cuda都没问题了,你guppy还有问题那就是你的问题了。在nanopore的community上发现guppy的编译涉及到cuda版本的问题,有可能官方发布的guppy不是用11编译的。这种事情明显超出我能解决的范围了,所以我直接去找了技术支持。不得不说nanopore的技术支持还是很迅速和专业的,等了几分钟后一个技术小姐姐出现了,果然她告诉我目前的4.2.2是cuda10.1的,所以结论是你的显卡太新了(黑人问号)。不过没关系,我同事用cuda11做了一个demo版本的,链接(https://mirror.oxfordnanoportal.com/software/analysis/ont-guppy_4.2.2_linux64_cuda11.tar.gz)给你你去用吧。因为是编译好的二进制文件,所以不用安装了,直接用就完事。
再次运行:
~/ont-guppy/bin/guppy_basecaller -i ~/data/fast5_pass/ -s ./fastq/--flowcell FLO-MIN106 --kit SQK-LSK109 -x cuda:0
正常开始运行,总共花了大概70分钟就完成了400多个fast5文件的高精度(HAC)basecalling,相对于CPU的龟速(大概10多个小时,还是fast模式)真的是太快了。

输入watch -n 1 nvidia-smi,一秒一刷新看一下GPU运行情况,正常!

所以,没事还是要多去调戏技术小姐姐。接下来就是进行序列质控和分析了。
更多推荐
所有评论(0)