当前位置:
X-MOL 学术
›
Syst. Biol.
›
论文详情
Our official English website, www.x-mol.net, welcomes your
feedback! (Note: you will need to create a separate account there.)
Bayesian Phylogenetic Analysis on Multi-Core Compute Architectures: Implementation and Evaluation of BEAGLE in RevBayes With MPI
Systematic Biology ( IF 6.1 ) Pub Date : 2024-01-29 , DOI: 10.1093/sysbio/syae005 Killian Smith 1, 2 , Daniel Ayres 3 , René Neumaier 1 , Gert Wörheide 1, 2 , Sebastian Höhna 1, 2
Systematic Biology ( IF 6.1 ) Pub Date : 2024-01-29 , DOI: 10.1093/sysbio/syae005 Killian Smith 1, 2 , Daniel Ayres 3 , René Neumaier 1 , Gert Wörheide 1, 2 , Sebastian Höhna 1, 2
Affiliation
Phylogenies are central to many research areas in biology and commonly estimated using likelihood-based methods. Unfortunately, any likelihood-based method, including Bayesian inference, can be restrictively slow for large datasets—with many taxa and/or many sites in the sequence alignment—or complex substitutions models. The primary limiting factor when using large datasets and/or complex models in probabilistic phylogenetic analyses is the likelihood calculation, which dominates the total computation time. To address this bottleneck, we incorporated the high-performance phylogenetic library BEAGLE into RevBayes, which enables multi-threading on multi-core CPUs and GPUs, as well as hardware specific vectorized instructions for faster likelihood calculations. Our new implementation of RevBayes+BEAGLE retains the flexibility and dynamic nature that users expect from vanilla RevBayes. In addition, we implemented native parallelization within RevBayes without an external library using the message passing interface (MPI); RevBayes+MPI. We evaluated our new implementation of RevBayes+BEAGLE using multi-threading on CPUs and 2 different powerful GPUs (NVidia Titan V and NVIDIA A100) against our native implementation of RevBayes+MPI. We found good improvements in speedup when multiple cores were used, with up to 20-fold speedup when using multiple CPU cores and over 90-fold speedup when using multiple GPU cores. The improvement depended on the data type used, DNA or amino acids, and the size of the alignment, but less on the size of the tree. We additionally investigated the cost of rescaling partial likelihoods to avoid numerical underflow and showed that unnecessarily frequent and inefficient rescaling can increase runtimes up to 4-fold. Finally, we presented and compared a new approach to store partial likelihoods on branches instead of nodes that can speed up computations up to 1.7 times but comes at twice the memory requirements.
中文翻译:
多核计算架构的贝叶斯系统发育分析:使用 MPI 在 RevBayes 中实现和评估 BEAGLE
系统发育是生物学许多研究领域的核心,通常使用基于似然的方法进行估计。遗憾的是,任何基于似然的方法(包括贝叶斯推理)对于大型数据集(序列比对中有许多分类群和/或许多位点)或复杂的替换模型来说都可能非常缓慢。在概率系统发育分析中使用大型数据集和/或复杂模型时,主要限制因素是似然计算,它主导着总计算时间。为了解决这一瓶颈,我们将高性能系统发育库 BEAGLE 整合到 RevBayes 中,从而在多核 CPU 和 GPU 上实现多线程,以及硬件特定的矢量化指令,以加快似然计算速度。我们新实施的 RevBayes+BEAGLE 保留了用户期望从普通 RevBayes 中获得的灵活性和动态特性。此外,我们在 RevBayes 中实现了原生并行化,无需使用消息传递接口 (MPI) 的外部库;RevBayes + MPI 的我们在 CPU 和 2 个不同的强大 GPU (NVidia Titan V 和 NVIDIA A100)上使用多线程评估了 RevBayes+BEAGLE 的新实现与我们的 RevBayes+MPI 原生实现。我们发现,使用多个内核时,加速性能有很好的提升,使用多个 CPU 内核时,加速最高可达 20 倍,使用多个 GPU 内核时,加速提升高达 90 倍以上。改进取决于所使用的数据类型、DNA 或氨基酸以及比对的大小,但较少取决于树的大小。我们还研究了重新缩放部分似然以避免数值下溢的成本,并表明不必要地频繁和低效的重新缩放可以将运行时间增加多达 4 倍。 最后,我们提出并比较了一种在分支而不是节点上存储部分似然的新方法,该方法可以将计算速度提高 1.7 倍,但内存需求是其两倍。
更新日期:2024-01-29
中文翻译:
多核计算架构的贝叶斯系统发育分析:使用 MPI 在 RevBayes 中实现和评估 BEAGLE
系统发育是生物学许多研究领域的核心,通常使用基于似然的方法进行估计。遗憾的是,任何基于似然的方法(包括贝叶斯推理)对于大型数据集(序列比对中有许多分类群和/或许多位点)或复杂的替换模型来说都可能非常缓慢。在概率系统发育分析中使用大型数据集和/或复杂模型时,主要限制因素是似然计算,它主导着总计算时间。为了解决这一瓶颈,我们将高性能系统发育库 BEAGLE 整合到 RevBayes 中,从而在多核 CPU 和 GPU 上实现多线程,以及硬件特定的矢量化指令,以加快似然计算速度。我们新实施的 RevBayes+BEAGLE 保留了用户期望从普通 RevBayes 中获得的灵活性和动态特性。此外,我们在 RevBayes 中实现了原生并行化,无需使用消息传递接口 (MPI) 的外部库;RevBayes + MPI 的我们在 CPU 和 2 个不同的强大 GPU (NVidia Titan V 和 NVIDIA A100)上使用多线程评估了 RevBayes+BEAGLE 的新实现与我们的 RevBayes+MPI 原生实现。我们发现,使用多个内核时,加速性能有很好的提升,使用多个 CPU 内核时,加速最高可达 20 倍,使用多个 GPU 内核时,加速提升高达 90 倍以上。改进取决于所使用的数据类型、DNA 或氨基酸以及比对的大小,但较少取决于树的大小。我们还研究了重新缩放部分似然以避免数值下溢的成本,并表明不必要地频繁和低效的重新缩放可以将运行时间增加多达 4 倍。 最后,我们提出并比较了一种在分支而不是节点上存储部分似然的新方法,该方法可以将计算速度提高 1.7 倍,但内存需求是其两倍。