The Preconditioned Conjugate Gradient (PCG) method is widely used for solving linear systems of equations with sparse matrices. A recent version of PCG, Pipelined PCG, eliminates the dependencies in the computations of the PCG algorithm so that the non-dependent computations can be overlapped with communication. In this paper, we propose three methods for efficient execution of the Pipelined PCG algorithm on GPU accelerated heterogeneous architectures. The first two methods achieve task-parallelism using asynchronous executions of different tasks on CPU cores and GPU. The third method achieves data parallelism by decomposing the workload between CPU and GPU based on a performance model. The performance model takes into account the relative performance of CPU cores and GPU using some initial executions and performs 2D data decomposition. We also implement optimization strategies like kernel fusion for GPU and merging vector operations for CPU. Our methods give up to 8x speedup and on average 3x speedup over PCG CPU implementation of Paralution and PETSc libraries. They also give up to 5x speedup and on average 1.45x speedup over PCG GPU implementation of Paralution and PETSc libraries. The third method also provides an efficient solution for solving problems that cannot be fit into the GPU memory and gives up to 2.5x speedup for such problems.
翻译:在本文中,我们提出了三种方法,用于在 GPU 加速混合结构上高效执行管道化 PCG 算法。前两种方法利用对CPU 核心和 GPU 不同任务的不同步处决实现任务平行化。第三种方法通过根据性能模型拆分CPU和 GPU之间的工作量而实现数据平行化。绩效模型考虑到CPG 算法和 GPU 的相对性能,使用一些初步处决和2D 数据解析。我们还提出了在 GPU 加速混合结构上高效执行PCU 核心和 GPU。我们的方法使PCP 执行PCPU 核心和 PETSC 平均速度为3x 加速化。这些方法也无法将CPU 核心和 GPUP 之间工作量的相对性能和 GPPUP 速度解决方案引入G 平均速度化G 的G 快速化方法。