利用GPU并行计算beta-NTI,大幅减少群落构建计算时间

作品简介

若没有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`提速的努力

  1. Stegen等最初在2011年发表论文,利用`beta-NTI`推断群落构建,但其原始代码过多的使用for循环,效率很低。
  2. 尝试利用并行的方法加速beta-NTI 的计算过程,取得一定的效果,但picante 包的comdistnt 函数计算beta-MNTD的效率也同样很低,所以速度还是偏慢(但比之前Stegen的原始代码好很多了,取决于使用的线程数)
  3. iCAMP 包对beta-MNTD 的函数的算法进行了优化,极大提高了计算的速度,同样也支持使用多线程。尽管如此,计算的速度和普通的beta多样性计算相比还是慢了很多(毕竟要进行1000次零模型的模拟)。
  4. 本文尝试利用python 基于cudacupy 包调用GPU计算beta-NTI (总体的运行依然是在R中运行的)

3 测试数据内容如下:

  1. OTU表:otu table.txt
  2. 遗传发育树: tree
  3. conda的依赖文件: bnti_gpu.yaml
  4. 调用GPU的python函数: bnti_gpu.py
  5. R脚本的jupyter-notebook文件: beta-nti-gpu-r.ipynb
  6. R脚本的Rmarkdown文件: beta-nti-gpu-r.Rmd
  7. R脚本的Rmarkdown文件: beta-nti-gpu-r.Rmd
  8. 咨询微信号和QQ号,报错可微信或QQ及时咨询。添加好友时,请备注购买日期和内容即可。
创作时间:2023-05-15 20:20:54