A merge tree is a topological descriptor of a real-valued function. Merge trees are used in visualization and topological data analysis, either directly or as a means to another end: computing a 0-dimensional persistence diagram, identifying connected components, performing topological simplification, etc. Scientific computing relies more and more on GPUs to achieve fast, scalable computation. For efficiency, data analysis should take place at the same location as the main computation, which motivates interest in parallel algorithms and portable software for merge trees that can run not only on a CPU, but also on a GPU, or other types of accelerators. The SYCL standard defines a programming model that allows the same code, written in standard C++, to compile targets for multiple parallel backends (CPUs via OpenMP or TBB, NVIDIA GPUs via CUDA, AMD GPUs via ROCm, Intel GPUs via Level Zero, FPGAs). In this paper, we adapt the triplet merge tree algorithm to SYCL and compare our implementation with the VTK-m implementation, which is the only other implementation of merge trees for GPUs that we know of.
翻译:合并树是一个真实价值函数的表层描述符。 合并树直接或作为另一个目的的手段,用于可视化和表层数据分析: 计算0维持久性图、 识别相连接的组件、 进行地形简化等。 科学计算越来越多地依赖 GPUs 实现快速可缩放的计算。 为了效率,数据分析应在与主要计算相同的地点进行, 从而激发对不仅在CPU上运行, 而且在GPU上运行, 或其他类型的加速器上运行的合并树的平行算法和便携式软件的兴趣。 SYCL 标准定义了一个编程模型, 允许在标准 C++ 中写入的相同代码来编集多平行后端的目标( 通过 OpenMP 或 TBB 的CPU、 通过 CUDA 的 NVIDIA GPU、 通过 ROCM 的 AM 的 AM GPUPS、 通过 Zero、 FPGAs 的 Intel GPUs) 。 在本文中, 我们将三重合并树算算算法调整为SYCLCL, 和 VTK-M 的合并执行。