论文部分内容阅读
在科学计算与工程领域中,将计算问题离散之后,往往会得到大型稀疏线性方程组。线性方程组的求解占用了整个问题计算的很大部分时间,在油藏模拟中这一比例高达80%。因此快速高效地求解大型稀疏线性方程组成为了整个问题求解的关键。Krylov子空间算法作为一种经典的迭代算法,具有容易并行且存储开销小等特点,一直以来都是用来求解稀疏线性方程组的重要方法。
Orthodir(m)算法是众多Krylov子空间算法中的一种。该算法每一次迭代步中需要进行两次向量内积计算,且这两个向量内积具有数据相关性。在分布式存储并行计算机上,向量内积计算需要全局通信,成为了快速高效求解的瓶颈。本文受文献[45]中算法设计方法的启示,提出了一种改进的Orthodir(m)算法(IOrthodir(m)算法)。IOrthodir(m)算法在保证算法正确性的条件下,通过改变原有算法的计算次序,将两个分离的向量内积变为几个连续的向量内积,全局同步化点由两个降低为一个,较明显地减少了并行算法的全局通信开销。理论分析表明改进算法的扩展性优于原算法。当处理器数目满足一定要求时,改进算法计算速快于原算法。在16台曙光天阔集群上进行的数值试验表明,IOrthodir(m)算法计算性能优于Orthodir(m)算法。基于MPI和OpenMP混合编程模型对两个算法进行了编程实现,实验数据表明,在不同多核平台下,IOrthodir(m)算法性能同样优于Orthodir(m)算法。
针对改进算法中的矩阵向量乘积和向量内积的计算时间问题,提出了一种CPU-GPU协同计算策略,进行了计算任务优化分配,采用CPU-GPU异构平台协同求解问题的实验表明:相对CPU计算平台,GPU-CPU异构模式能够更好地提高计算效率。