论文部分内容阅读
在过去10年中,计算机技术和集成电路技术依旧发展迅猛。GPU已经发展成一种专门面向计算密集型的CPU协处理器,服务于大规模和高并行化的计算应用。在由CPU和GPU构建的异构系统架构中,CPU和GPU的协同并行计算已成为高性能计算的研究热点,主要涉及到该系统架构能够根据计算任务的特点将计算资源合理分配给CPU和GPU,从而提高计算资源的利用率,以低开销实现高计算性能。本文对流固耦合问题数值模拟的CPU-GPU和CPU-MIC并行算法进行了探索。格子玻尔兹曼法(Lattice-Boltzmann method,LBM)是对复杂流场进行数值模拟的主要方法,浸入边界法(Immersed Boundary method,IBM)则是对固体结构沉浸在流场中微观作用情况进行处理的方式之一。LBM将流体抽象成大量的微观粒子,并在网格上进行迁移和碰撞,反应微粒分布的统计函数进行时空演化得到流场宏观变量,而IBM将固体边界对流场的影响转化成体积力的形式让流场感知。用IB-LBM(Immersed Boundary-Lattice-Boltzmann method)对不可压缩流体的流固耦合问题进行模拟计算和分析。但是IB-LBM属于计算密集型应用,当模拟的规模增大时,对计算性能的要求迅速提高。为此,文章采用 CUDA(Computer Unified Device Architecture)编程框架,设计了基于异构系统的IB-LBM模拟流固耦合的并行算法。首先,采用D2Q9的LBM格子模型,结合IBM对有固体浸入的流场完成数值框架的建立,将测试数据与已有数据进行对比验证。通过给定处理器粗细粒度分布方式,描述了更新LBM和修正IBM的并行算法,提出了三种数.据结构对算法性能进行优化。其次,将IB-LBM并行算法在CPU-GPU和CPU-MIC两种异构并行系统进行实现,并且设计出针对这两种异构系统的新的计算资源分配策略,对算法性能进一步优化。最后,使用MFLUPS理想标准值对三种数据结构、线程数扩展性、两种体积分数以及不同网格大小等方面对性能的影响进行了分析和评估。