若没有GPU可使用AutoDL云GPU服务器,运行环境已配置,上传购买代码即可运行。运行环境链接见https://www.codewithgpu.com/i/HuTianlong1994/betaNTI/betaNTI_gpu_autoDL
1 先说效果
18个样本,抽平到8500条序列,4344个OTUs,计算beta-NTI共花费时间如下。如果更好的显卡,更大的数据量,节约的时间应该更加可观。
> GPU(GTX1050):1分20秒
> iCAMP包 的`bNTIn.p()` 函数4核并行:约16分钟
2 计算`beta-NTI`提速的努力
- Stegen等最初在2011年发表论文,利用`beta-NTI`推断群落构建,但其原始代码过多的使用for循环,效率很低。
- 尝试利用并行的方法加速
beta-NTI
的计算过程,取得一定的效果,但picante
包的comdistnt
函数计算beta-MNTD的效率也同样很低,所以速度还是偏慢(但比之前Stegen的原始代码好很多了,取决于使用的线程数) iCAMP
包对beta-MNTD
的函数的算法进行了优化,极大提高了计算的速度,同样也支持使用多线程。尽管如此,计算的速度和普通的beta多样性计算相比还是慢了很多(毕竟要进行1000次零模型的模拟)。- 本文尝试利用
python
基于cuda
的cupy
包调用GPU计算beta-NTI
(总体的运行依然是在R中运行的)
3 测试数据内容如下:
OTU表:
otu table.txt遗传发育树:
treeconda的依赖文件:
bnti_gpu.yaml调用GPU的python函数:
bnti_gpu.pyR脚本的jupyter-notebook文件:
beta-nti-gpu-r.ipynbR脚本的Rmarkdown文件:
beta-nti-gpu-r.RmdR脚本的Rmarkdown文件:
beta-nti-gpu-r.Rmd- 咨询微信号和QQ号,报错可微信或QQ及时咨询。添加好友时,请备注购买日期和内容即可。