论文标题
Nekbone在GPU上的张量产品的优化
Optimization of Tensor-product Operations in Nekbone on GPUs
论文作者
论文摘要
在CFD求解器NEK5000中,计算由小型张量操作的评估主导。 Nekbone是NEK5000的代理应用程序,以前已使用混合的OpenACC和CUDA方法移植到GPU。在这项工作中,我们继续这项工作,并进一步优化Nekbone的主要张量产品。我们的优化是在CUDA中进行的,并使用不同的2D线程结构来逐层进行计算。这使我们能够使用循环展开以及使用寄存器并有效地共享内存。然后,将我们的实施在PASCAL和VOLTA GPU架构上与以前的GPU版本的Nekbone以及测量的屋顶线进行了比较。结果表明,我们的实施的表现优于先前的GPU Nekbone实施6-10%。与测量的车顶线相比,我们获得了NVIDIA P100和V100 GPU的77-92%的峰值性能,其中具有1024-4096元素和多项式度9的输入。
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.