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-working of the GUDHI library's implementation of Boissonnat and Pritam's Edge Collapser, which can be used as a pre-processing step to dramatically reduce overall run-times in certain scenarios. 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 more efficient data structures. 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 Edge Collapser has fewer software dependencies and improved run-times relative to GUDHI's original implementation.
翻译:我们引入了一个高性能、开放源代码的 Giotto-ph 软件包, 用于计算 Vietoris- Rips 条码。 giotto-ph 软件包基于Morozov 和 Nigmetov 的无锁( 多重) 执行 Ulrich Bauer 的 Ripser 软件包。 它还包含对 GUDHI 图书馆实施 Boissonnat 和 Pritam 的 Edge Coldiker 的重新工作, 这个软件包可以用作预处理步骤, 在某些情形中大幅降低总体运行时间。 我们的贡献有两个方面: 一方面, 我们将现有的最新理念统一整合到一个图书馆, 并为 C++ 代码提供 Python 约束。 另一方面, 我们通过采用效率更高的数据结构, 增加平行化机会, 改善总体性能。 我们的同源后端建立了一种新的状态, 甚至超越了在使用5- 10 CPI 核心时的Repers ++ 。 此外, 我们实施的EDrodge Credistrocker 相对性软性软性软性软性软性软性软性软性软性软性软性软性软性软性。