当前位置:
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. Additionally, 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 two 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 which 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 获得的灵活性和动态特性。此外,我们使用消息传递接口 (MPI) 在 RevBayes 中实现了本机并行化,无需外部库; RevBayes+MPI。我们使用 CPU 上的多线程和两个不同的强大 GPU(NVidia Titan V 和 NVIDIA A100)对照 RevBayes+MPI 的本机实现来评估 RevBayes+BEAGLE 的新实现。我们发现,使用多核时,加速效果得到了很好的改善,使用多个 CPU 核心时,加速可达 20 倍,使用多个 GPU 核心时,加速超过 90 倍。改进取决于所使用的数据类型、DNA 或氨基酸以及比对的大小,但较少取决于树的大小。我们还研究了重新缩放部分似然以避免数值下溢的成本,并表明不必要的频繁且低效的重新缩放可能会将运行时间增加多达 4 倍。 最后,我们提出并比较了一种在分支而不是节点上存储部分似然的新方法,该方法可以将计算速度提高到 1.7 倍,但内存要求却是原来的两倍。
更新日期:2024-01-29
中文翻译:
多核计算架构上的贝叶斯系统发育分析:使用 MPI 在 RevBayes 中实现和评估 BEAGLE
系统发育是生物学许多研究领域的核心,通常使用基于可能性的方法进行估计。不幸的是,任何基于可能性的方法,包括贝叶斯推理,对于大型数据集(在序列比对中具有许多分类单元和/或许多位点)或复杂的替换模型来说都可能非常慢。在概率系统发育分析中使用大型数据集和/或复杂模型时的主要限制因素是似然计算,它主导着总计算时间。为了解决这个瓶颈,我们将高性能系统发育库 BEAGLE 合并到 RevBayes 中,它支持多核 CPU 和 GPU 上的多线程,以及硬件特定的矢量化指令以加快似然性计算。我们新实施的 RevBayes+BEAGLE 保留了用户期望从普通 RevBayes 获得的灵活性和动态特性。此外,我们使用消息传递接口 (MPI) 在 RevBayes 中实现了本机并行化,无需外部库; RevBayes+MPI。我们使用 CPU 上的多线程和两个不同的强大 GPU(NVidia Titan V 和 NVIDIA A100)对照 RevBayes+MPI 的本机实现来评估 RevBayes+BEAGLE 的新实现。我们发现,使用多核时,加速效果得到了很好的改善,使用多个 CPU 核心时,加速可达 20 倍,使用多个 GPU 核心时,加速超过 90 倍。改进取决于所使用的数据类型、DNA 或氨基酸以及比对的大小,但较少取决于树的大小。我们还研究了重新缩放部分似然以避免数值下溢的成本,并表明不必要的频繁且低效的重新缩放可能会将运行时间增加多达 4 倍。 最后,我们提出并比较了一种在分支而不是节点上存储部分似然的新方法,该方法可以将计算速度提高到 1.7 倍,但内存要求却是原来的两倍。