Nekbone 中张量积运算在 GPU 上的优化
分布式、并行与集群计算
2020-05-28 v1
摘要
在 CFD 求解器 Nek5000 中,计算由小规模张量运算的求值所主导。Nekbone 是 Nek5000 的代理应用,此前已以 OpenACC 与 CUDA 混合的方式移植至 GPU。本工作中,我们延续该努力并进一步优化 Nekbone 中的主要张量积运算。我们的优化在 CUDA 中完成,并采用不同的 2D 线程结构以逐层进行计算。这使我们能够使用循环展开并高效利用寄存器与共享内存。随后我们在 Pascal 与 Volta GPU 架构上将我们的实现与先前 GPU 版 Nekbone 以及实测 roofline 进行比较。结果表明,我们的实现比先前 GPU Nekbone 实现快 6-10%。与实测 roofline 相比,对于具有 1024-4096 个元素且多项式阶数为 9 的输入,我们在 Nvidia P100 与 V100 GPU 上均获得了 77-92% 的峰值性能。
引用
@article{arxiv.2005.13425,
title = {Optimization of Tensor-product Operations in Nekbone on GPUs},
author = {Martin Karp and Niclas Jansson and Artur Podobas and Philipp Schlatter and Stefano Markidis},
journal= {arXiv preprint arXiv:2005.13425},
year = {2020}
}
备注
4 pages, 4 figures