Review: BEAGLE 3: Improved Performance, Scaling, and Usability for a High-Performance Computing Library for Statistical Phylogenetics¶
Citation
- Ayres, D. L., Cummings, M. P., Baele, G., Darling, A. E., Lewis, P. O., Swofford, D. L., Huelsenbeck, J. P., Lemey, P., Rambaut, A., & Suchard, M. A. (2019). BEAGLE 3: improved performance, scaling, and usability for a high-performance computing library for statistical phylogenetics. Systematic Biology, 68(6), 1052–1061.
- DOI
Abstract¶
BEAGLE is a high-performance library for phylogenetic likelihood computation, supporting multi-core CPU and GPU hardware through a common API. Version 3 extends the library with improved scaling for large data sets, new substitution models, and enhanced multi-GPU support. Benchmarks demonstrate substantial speedups over CPU implementations for realistic data sizes and models.
BEAGLE (Broad-platform Evolutionary Analysis General Likelihood Evaluator) is the reference library for high-performance phylogenetic likelihood computation across BEAST, MrBayes, and other major Bayesian phylogenetic programs. Ayres et al. (2019) describes the third major version, with improvements to GPU utilization, scaling, and model coverage.
The key technique documented in Section 2 is per-node rescaling to prevent floating-point underflow. On long branches or with large trees, partial likelihoods at internal nodes near the root can fall below the minimum representable float32 value before the final summation. BEAGLE addresses this by dividing each node's partial likelihood vector by its maximum value and accumulating the log of that maximum in a separate accumulator. The rescaled partial likelihoods remain representable in float32 while the exact log probability is recovered at the root by adding the accumulated log-scalars.
This is exactly the pattern implemented in Hifuku. The constraint of using
float32 for partial likelihoods (documented in CONSTRAINTS.md) is motivated
by GPU memory bandwidth: float32 is twice as compact as float64 and loads twice
as fast from GPU global memory. The per-node rescaling makes float32 viable
for arbitrarily deep trees without loss of mathematical correctness.
BEAGLE 3 also documents the partitioned likelihood approach for partitioned models (different substitution models on different alignment regions), which informed the design of Hifuku's per-partition kernel dispatch. The paper's benchmarks demonstrate that GPU acceleration provides speedups of 10-100x over CPU implementations for typical Bayesian phylogenetic MCMC runs, validating the architectural choice to build Hifuku's likelihood evaluation on CUDA.
In-document navigation¶
| Section | Content |
|---|---|
| Section 2 | Per-node rescaling and float32 stability |
| Section 3 | GPU implementation and memory layout |
| Section 4 | Multi-GPU scaling results |
| Table 1 | API function list (resource allocation, partials, likelihood) |