使用HPX-Kokkos和SYCL进行恒星合并:与SYCL一起使用异步多任务运行时系统的方法
摘要:从NVIDIA GPUs到AMD GPUs和Intel GPUs:鉴于当前超级计算机中可用的加速器卡的异构性,可移植性是现代高性能计算应用的关键方面。在Octo-Tiger中,我们依赖于Kokkos及其各种可移植计算内核的执行空间。反过来,我们使用HPX来协调内核启动、CPU任务和通信。这种组合使我们能够在各种超级计算机上实现可扩展的可移植CPU/GPU计算和通信的良好交错。然而,为了使HPX和Kokkos能够最优地协同工作,我们需要能够将Kokkos内核视为HPX任务。否则,我们将不得不使用fence命令主动等待它们,这样会浪费本来更好利用的CPU时间。使用一个名为HPX-Kokkos的集成层,将Kokkos内核视为任务的方式已经适用于一些Kokkos执行空间(如CUDA),但对其他执行空间(如SYCL)则不适用。在这项工作中,我们开始使Octo-Tiger和HPX本身与SYCL兼容。为此,我们引入了许多软件变动,最显著的是HPX-SYCL的集成。这种集成使我们能够将SYCL事件视为HPX任务,从而可以通过扩展HPX-Kokkos的支持来完全支持Kokkos的SYCL执行空间。我们展示了两种实现HPX-SYCL集成的方式,并使用Octo-Tiger和其Kokkos内核在NVIDIA A100和AMD MI100上进行了测试。我们发现,通过启用这种集成,即使只是在Octo-Tiger中运行简单的单节点场景,其中通信和CPU利用率还不是问题,也能够获得适度但明显的加速。
作者:Gregor Dai{ss} and Patrick Diehl and Hartmut Kaiser and Dirk Pfl"uger
论文ID:2303.08058
分类:Distributed, Parallel, and Cluster Computing
分类简称:cs.DC
提交时间:2023-05-10