arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2005.13425cs.DC
收藏

Nekbone中张量积运算在GPU上的优化

Optimization of Tensor-product Operations in Nekbone on GPUs

Martin Karp, Niclas Jansson, Artur Podobas, Philipp Schlatter, Stefano Markidis

摘要:

在CFD求解器Nek 5000中,计算主要由小张量运算的评估决定。Nekbone是Nek 5000的代理应用程序,之前已经通过混合OpenACC和CUDA方法移植到GPU上。在这项工作中,我们继续这项工作,并进一步优化Nekbone中的主张量积运算。我们的优化是在CUDA中完成的,并使用不同的2D线程结构逐层进行计算。这使我们能够使用循环展开以及有效地利用寄存器和共享内存。我们的实现,然后比较Pascal和Volta GPU架构上以前的GPU版本的Nekbone以及测量的车顶。结果表明,我们的实现优于以前的GPU Nekbone实现6- 10%。与实测的车顶相比,我们获得了Nvidia P100和V100 GPU在1024 - 4096个元素和多项式次数为9的输入下峰值性能的77 - 92%。

英文摘要:

In the CFD solver Nek5000, the computation is dominated by the evaluation of small tensor operations. Nekbone is a proxy app for Nek5000 and has previously been ported to GPUs with a mixed OpenACC and CUDA approach. In this work, we continue this effort and optimize the main tensor-product operation in Nekbone further. Our optimization is done in CUDA and uses a different, 2D, thread structure to make the computations layer by layer. This enables us to use loop unrolling as well as utilize registers and shared memory efficiently. Our implementation is then compared on both the Pascal and Volta GPU architectures to previous GPU versions of Nekbone as well as a measured roofline. The results show that our implementation outperforms previous GPU Nekbone implementations by 6-10%. Compared to the measured roofline, we obtain 77 - 92% of the peak performance for both Nvidia P100 and V100 GPUs for inputs with 1024 - 4096 elements and polynomial degree 9.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑