We introduce giotto-ph, a high-performance, open-source software package for the computation of Vietoris--Rips barcodes. giotto-ph is based on Morozov and Nigmetov's lockfree (multicore) implementation of Ulrich Bauer's Ripser package. It also contains a re-implementation of Boissonnat and Pritam's "Edge Collapser", implemented so far only in the GUDHI library. Our contribution is twofold: on the one hand, we integrate existing state-of-the-art ideas coherently in a single library and provide Python bindings to the C++ code. On the other hand, we increase parallelization opportunities and improve overall performance by adopting higher performance data structures. The final implementation of our persistent homology backend establishes a new state of the art, surpassing even GPU-accelerated implementations such as Ripser++ when using as few as 5--10 CPU cores. Furthermore, our implementation of the edge collapser algorithm has reduced dependencies and significantly improved run-times.
翻译:我们引入了一个高性能、开放源代码的 Giotto-ph 软件包, 用于计算 Vietoris- Rips 条码。 giotto-ph 软件包基于 Morozov 和 Nigmetov 的无锁( 多重) 执行 Ulrich Bauer 的 Ripser 软件包。 它还包含重新实施 Boissonnat 和 Pritam 的“ Edge Clodiker ” 软件包, 仅在 GUDHI 库中实施。 我们的贡献是双重的: 一方面, 我们将现有最新理念一致地整合到一个图书馆, 并为 C++ 代码提供 Python 约束。 另一方面, 我们通过采用更高的性能数据结构, 增加平行化机会并改进总体性能。 我们的持续性同性同性后端的后端程序建立了一个新状态, 甚至超越了 PUPUP- ++, 当使用不到 5- CPU 核心时, 我们的边际崩溃算算算算法的实施减少了依赖性, 并大大改进了运行时间 。