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.
翻译:合并树是实值函数的一种拓扑描述符。合并树直接或间接用于可视化与拓扑数据分析:计算零维持续同调图、识别连通分量、执行拓扑简化等。科学计算日益依赖GPU实现快速可扩展的计算。为提升效率,数据分析应与主计算在同一位置进行,这激发了对合并树并行算法和可移植软件的研究兴趣——这类软件不仅能运行于CPU,还可部署在GPU或其他类型加速器上。SYCL标准定义了一种编程模型,允许同一套标准C++代码编译到多种并行后端(通过OpenMP或TBB的CPU、通过CUDA的NVIDIA GPU、通过ROCm的AMD GPU、通过Level Zero的Intel GPU、FPGA)。本文将三元合并树算法适配至SYCL,并将我们的实现与VTK-m实现进行对比——据我们所知,VTK-m是唯一其他支持GPU的合并树实现。