使用HPX-Kokkos与SYCL的恒星并合:将异步多任务运行时系统与SYCL结合的方法
分布式、并行与集群计算
2023-05-10 v2
摘要
从NVIDIA GPU到AMD GPU再到Intel GPU:鉴于当前超级计算机中可用加速卡的异构性,可移植性是现代HPC应用的关键方面。在Octo-Tiger中,我们依赖Kokkos及其多种执行空间来实现可移植的计算内核。进而,我们使用HPX来协调内核启动、CPU任务与通信。这种组合使我们能在可移植的CPU/GPU计算与通信间精细交错,从而在各种超级计算机上实现可扩展性。然而,为使HPX与Kokkos最优协作,我们需要能将Kokkos内核视为HPX任务。否则,我们不得不以栅栏命令主动等待它们,而非将异步Kokkos内核启动集成进HPX的任务图,这浪费了本可另作他用的CPU时间。使用称为HPX-Kokkos的集成层,将Kokkos内核作为任务处理已对某些Kokkos执行空间(如CUDA空间)有效,但对其他(如SYCL空间)则不然。本工作中,我们开始使Octo-Tiger及HPX自身兼容SYCL。为此,我们引入了众多软件改动,最显著的是HPX-SYCL集成。该集成允许我们将SYCL事件视为HPX任务,进而通过扩展HPX-Kokkos的支持以完全支持Kokkos的SYCL执行空间,更好地集成Kokkos。我们展示了两种实现该HPX-SYCL集成的方法,并在NVIDIA A100与AMD MI100上使用Octo-Tiger及其Kokkos内核进行了测试。我们发现,即便仅运行Octo-Tiger中通信与CPU利用尚不成问题的简单单节点场景,启用该集成也带来了温和但可见的加速。
引用
@article{arxiv.2303.08058,
title = {Stellar Mergers with HPX-Kokkos and SYCL: Methods of using an Asynchronous Many-Task Runtime System with SYCL},
author = {Gregor Daiß and Patrick Diehl and Hartmut Kaiser and Dirk Pflüger},
journal= {arXiv preprint arXiv:2303.08058},
year = {2023}
}