<p>Modern engineering and scientific computing often requires solving sparse linear systems containing point-block matrix to model multiphysics problems. The space-time parallel method is popular and attractive in fluid dynamics, fitting parallel computers very well. In this paper, we design and implement a parallel, multi-GPU enabled GMRES solver for solving linear systems in the Kronecker product form arising from the domain decomposition based space-time parallel methods. To improve the efficiency of the solver, we also design a set of optimization strategies for Sparse Matrix-Vector Multiplication (SpMV) in Kronecker product form. These include: (1) enhancing the Compute-to-Memory Access Ratio (CMAR) to fully utilize the high bandwidth nature of the GPU during the computation phase and (2) introducing a parallel buffering scheme and a pre-mapping algorithm to enable the use of GPU-Direct for accelerating the communication phase. We conducted experiments on 1, 2, 4, and 8 GPUs and compared the performance of OKP-Solver with the cuSPARSE based implementation. On the V100 platform, the Kronecker product based SpMV computation (<InlineEquation ID="IEq1"> <EquationSource Format="TEX">\(T_{Kx}\)</EquationSource> </InlineEquation>) achieves speedups of <InlineEquation ID="IEq2"> <EquationSource Format="TEX">\(2.00\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq3"> <EquationSource Format="TEX">\(1.87\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq4"> <EquationSource Format="TEX">\(1.85\times\)</EquationSource> </InlineEquation>, and <InlineEquation ID="IEq5"> <EquationSource Format="TEX">\(1.91\times\)</EquationSource> </InlineEquation> on 1, 2, 4, and 8 GPUs, respectively, while the communication time (<InlineEquation ID="IEq6"> <EquationSource Format="TEX">\(T_c\)</EquationSource> </InlineEquation>) achieves <InlineEquation ID="IEq7"> <EquationSource Format="TEX">\(9.18\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq8"> <EquationSource Format="TEX">\(6.82\times\)</EquationSource> </InlineEquation>, and <InlineEquation ID="IEq9"> <EquationSource Format="TEX">\(1.54\times\)</EquationSource> </InlineEquation> on 2, 4, and 8 GPUs, respectively. On the A100 platform, <InlineEquation ID="IEq10"> <EquationSource Format="TEX">\(T_{Kx}\)</EquationSource> </InlineEquation> achieves speedups of <InlineEquation ID="IEq11"> <EquationSource Format="TEX">\(1.43\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq12"> <EquationSource Format="TEX">\(1.50\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq13"> <EquationSource Format="TEX">\(1.64\times\)</EquationSource> </InlineEquation>, and <InlineEquation ID="IEq14"> <EquationSource Format="TEX">\(1.64\times\)</EquationSource> </InlineEquation>, while <InlineEquation ID="IEq15"> <EquationSource Format="TEX">\(T_c\)</EquationSource> </InlineEquation> achieves <InlineEquation ID="IEq16"> <EquationSource Format="TEX">\(8.95\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq17"> <EquationSource Format="TEX">\(5.60\times\)</EquationSource> </InlineEquation>, and <InlineEquation ID="IEq18"> <EquationSource Format="TEX">\(1.62\times\)</EquationSource> </InlineEquation>. The overall solver runtime (<InlineEquation ID="IEq19"> <EquationSource Format="TEX">\(T_{all}\)</EquationSource> </InlineEquation>) achieves speedups of <InlineEquation ID="IEq20"> <EquationSource Format="TEX">\(1.70\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq21"> <EquationSource Format="TEX">\(3.48\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq22"> <EquationSource Format="TEX">\(3.70\times\)</EquationSource> </InlineEquation>, and <InlineEquation ID="IEq23"> <EquationSource Format="TEX">\(1.82\times\)</EquationSource> </InlineEquation> on V100, and <InlineEquation ID="IEq24"> <EquationSource Format="TEX">\(1.33\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq25"> <EquationSource Format="TEX">\(3.70\times\)</EquationSource> </InlineEquation>, <InlineEquation ID="IEq26"> <EquationSource Format="TEX">\(3.48\times\)</EquationSource> </InlineEquation>, and <InlineEquation ID="IEq27"> <EquationSource Format="TEX">\(2.28\times\)</EquationSource> </InlineEquation> on A100, for 1, 2, 4, and 8 GPUs, respectively.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

A multi-GPU enabled solver in Kronecker product form for multiphysics problems

  • Wenpeng Ma,
  • Siyuan Zhao,
  • Xiaofan Le,
  • Wu Yuan

摘要

Modern engineering and scientific computing often requires solving sparse linear systems containing point-block matrix to model multiphysics problems. The space-time parallel method is popular and attractive in fluid dynamics, fitting parallel computers very well. In this paper, we design and implement a parallel, multi-GPU enabled GMRES solver for solving linear systems in the Kronecker product form arising from the domain decomposition based space-time parallel methods. To improve the efficiency of the solver, we also design a set of optimization strategies for Sparse Matrix-Vector Multiplication (SpMV) in Kronecker product form. These include: (1) enhancing the Compute-to-Memory Access Ratio (CMAR) to fully utilize the high bandwidth nature of the GPU during the computation phase and (2) introducing a parallel buffering scheme and a pre-mapping algorithm to enable the use of GPU-Direct for accelerating the communication phase. We conducted experiments on 1, 2, 4, and 8 GPUs and compared the performance of OKP-Solver with the cuSPARSE based implementation. On the V100 platform, the Kronecker product based SpMV computation ( \(T_{Kx}\) ) achieves speedups of \(2.00\times\) , \(1.87\times\) , \(1.85\times\) , and \(1.91\times\) on 1, 2, 4, and 8 GPUs, respectively, while the communication time ( \(T_c\) ) achieves \(9.18\times\) , \(6.82\times\) , and \(1.54\times\) on 2, 4, and 8 GPUs, respectively. On the A100 platform, \(T_{Kx}\) achieves speedups of \(1.43\times\) , \(1.50\times\) , \(1.64\times\) , and \(1.64\times\) , while \(T_c\) achieves \(8.95\times\) , \(5.60\times\) , and \(1.62\times\) . The overall solver runtime ( \(T_{all}\) ) achieves speedups of \(1.70\times\) , \(3.48\times\) , \(3.70\times\) , and \(1.82\times\) on V100, and \(1.33\times\) , \(3.70\times\) , \(3.48\times\) , and \(2.28\times\) on A100, for 1, 2, 4, and 8 GPUs, respectively.