Finding cycles in directed graphs enables important applications in various domains such as finance, biology, chemistry, and network science. However, as the size of graph datasets continues to grow, it becomes increasingly difficult to discover cycles within them, which necessitates more efficient algorithms and their parallel implementations. In this work, we propose scalable parallelisation of state-of-the-art sequential algorithms for enumerating simple, temporal, and hop-constrained cycles. First, we focus on the simple cycle enumeration problem and parallelise the algorithms by Johnson and by Read and Tarjan in a fine-grained manner. We theoretically show that our resulting fine-grained parallel algorithms are scalable, with the fine-grained parallel Read-Tarjan algorithm being strongly scalable. In contrast, we show that straightforward coarse-grained parallel versions of these simple cycle enumeration algorithms that exploit edge- or vertex-level parallelism are not scalable. Next, we adapt our fine-grained approach to enable scalable parallelisation of state-of-the-art algorithms for temporal and hop-constrained cycle enumeration. Our evaluation on a cluster with 256 physical cores demonstrates a near-linear scalability of our fine-grained parallel algorithms when enumerating all the aforementioned types of cycles. On the same cluster, our fine-grained parallel algorithms achieve, on average, one order of magnitude speedup compared to the respective coarse-grained parallel versions of the state-of-the-art algorithms for cycle enumeration. The performance gap between the fine-grained and the coarse-grained parallel algorithms increases as we use more CPU cores.
翻译:定向图形中的查找周期可以在金融、生物学、化学和网络科学等不同领域进行重要的应用。 但是,随着图形数据集的大小继续增长,在其中发现循环变得日益困难,这就需要更高效的算法及其平行执行。 在这项工作中,我们建议对最先进的同步序列算法进行可缩放的平行法,用于计算简单、时间和跳控制周期。 首先,我们关注简单的循环查点问题,并以精细的分级方式将约翰逊以及Read和Tarjan的算法平行化。 我们理论上表明,我们由此产生的精细的平行算法是可缩放的,这需要更高效的双平行算法。 相反,我们表明,这些简单的循环算法的简单粗粗粗的平行算法是无法缩的。 下一步,我们调整了我们的精细的算法计算方法, 将我们的精细的平行算法的平行算法在接近时间和水平的递增递增的递增的递增的递升算法周期中, 将一个我们的平均递增的递增的递增的递增的递校正的算法, 将我们的递增的算的递增的算算法, 将整个的递增的递增的递增的递增的递增的递增的递增的递增的递增的递增的递增的递增的递增的算算法, 将整个的算法的递增的递增的递归为我们的递算法, 。