树人论文网一个专业的学术咨询网站!!!
树人论文网

基于FTM算法的GPU加速分析

来源: 树人论文网发表时间:2020-12-15
简要:摘要:为保障GPU加速方案的可行性,提升GPU的计算效率。本文结合FTM算法的应用参数,提出将FIM算法应用在GPU加速中的运行试验方案。借此在CUDA程序支撑下,控制FIM算法的计算时限,优

  摘要:为保障GPU加速方案的可行性,提升GPU的计算效率。本文结合FTM算法的应用参数,提出将FIM算法应用在GPU加速中的运行试验方案。借此在CUDA程序支撑下,控制FIM算法的计算时限,优化GPU的加速设计,为我国数值模拟技术的创新发展奠定基础。

科学与技术

  本文源自科学与技术【2020年第23期】《科学与技术》杂志坚持以科学技术是第一生产力的思想为宗旨。以马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想为指导,促进科学技术的繁荣和发展,促进科学技术的普及和推广,促进科学技术人才的成长和提高,促进科学技术与经济的结合,致力为读者打造成一份学术性、知识性和动态性的杂志。

  关键词:FTM算法;GPU加速;计算;CUDA

  引言:FIM算法在实际运用中,存在较为突出的计算耗时、并行性能薄弱等问题,而GPU运算能力的开发为FIM算法带来更多可能性。因此,文章以GPU加速为思路,对FTM算法提升GPU计算效率的可行性展开分析,旨在通过GPU加速目标的实现,验证FTM算法与图像处理器运算功能的融合价值。

  一、FTM算法的应用参数

  现代社会中,图像处理器GPU在各领域的实践价值不断凸显,其运算能力在浮点运算技术开发中明显增强。在GPU利用过程中,CUDA是支撑GPU的核心软件,能够简化GPU运算流程,增强GPU计算能力[1]。FTM算法与GPU联合运用,是利用该算法的数学方程特性,高精度的捕捉GPU运动界面的数据,优化计算资源配置,其在GPU加速中的应用参数,主要体现在FTM算法中的N-S控制方程中。在将N-S控制方程渗透在GPU加速计算中时,运动界面的表面张力可集中在同一界面中,需要将其作为体积力乘δ函数,并给出GPU加速界面中的动量方程(1)。

  

5fd0713f64932_html_fc500d30a62ac3c2.gif

 

  (1)

  公式(1)中,Xf表示GPU界面的实际位置,ρ为图像数据运算中的密度场,μ为粘度场,k为计算界面的平均曲率。在利用该公式,计算出界面上的“表面张力”后,可对应的完善FTM算法应用中的函数迭代精度、扩散项、流项的最小值,为GPU加速打好基础。

  二、GPU加速中的CUDA架构

  GPU中含有的CUDA组分为该程序的主机、核心设备。当CUDA主机通过内核函数,将CPU转换为GPU时,程序中的CPU的主要功能在于辅助GPU的海量运算任务,比如建立计算逻辑模型、支撑数据串行计算与并行计算等[2]。另外,GPU加速中的CUDA程序,其在内核函数运行期间,其任务执行的最小单位通常为线程,可在GPU计算中读取共享内存。但是由于CUDA架构中缓存器的存储空间有限,使得该程序中常量、共享、纹理等存储器储存大小无法满足GPU加速要求,所以在应用FTM算法时,需要结合各类存储器的功能优势,灵活的完善GPU的运行性能。

  三、基于FTM算法的GPU加速方法

  (一)引入共享内存,划分计算区域

  FIM算法在将N-S控制方程中的表面张力单项提取后,可利用差分将扩散项、计算临时速度、对流项等数值引入GPU加速运算中[3]。具体来说,首先,运用速度离散方程,缓解海量数据的计算压力,并将该方程中的数据量转移至计算网格内完成计算工作。在此期间,为实现GPU的并行加速计算目标,需将CUDA架构中的最小单位线程作为计算节点。从而在计算网格过大后,以线程为节点对计算区域进行划分。相关人员在CUDA程序运行中,利用线程将FIM算法中的计算区域构建为线程块,分解GPU计算数据,有效改善着GPU的计算性能。

  比如在使用“五点差分”时,GPU加速过程中计算节点(x,y)时,需要同时访问该节点周边计算区域的各个元素(x,y-1)、(x,y+1)、(x+1y),且节点中的数据访问次数要求较高,平均访问次数为5次。但是利用五点差分直接访问全局内存中的计算数据时,GPU的整体计算效率较低,原因在于全局内存中数据读写速度受限,使得GPU计算速度难以提升,制约着FIM算法的合并访存。若引入共享内存,GPU运算时的访问速度明显加快,其在FIM算法的作用下,可一次性读取计算节点中的各个元素,并以多个线程为单位,同步访问各节点的共享内存,提升GPU计算效率。

  在此期间,若计算区域中,共享内存内所存储的节点数据仅与CUDA程序中的线程块相对应,GPU加速计算时,同样需要方位线程周边数据。然而由于各线程块未能建立通信渠道,其数据共享功能不足时,GPU加速时依然需要访问“全局内存”,并根据FIM算法中的逻辑语句,评估各节点与线程块的位置关系,明确计算区域的分支[4]。但是在GPU具体运算时,线程为执行单位时,FIM算法中计算区域多由线程束组成,而线程束是由程序中的32个最小单位线程构成。之后,GPU可利用线程束控制对应的线程,计算各节点的实际数据。通常情况下,FIM算法应用中,线程束、线程接收到同一执行指令后,CUDA程序在完成各分支的计算工作时,各节点数据计算效率不佳,需要在线程设定时,提前利用共享内存划分计算区域,从而提高该程序运行效率,为FIM算法、GPU运算速度的有效提升创造条件。

  (二)应用迭代处理,提升访存效率

  在利用FIM算法,对GPU进行加速处理时,该算法在数据加速计算中所用的压力泊松方程,以及粘度场、密度场分析中,均需利用SOR迭代处理完成求解工作。然而FIM算法中,其迭代处理并行性不佳,需要将原有的SOR迭代法转变为红黑迭代法,提升FIM算法在GPU加速中的并行性。

  具体来说,实现CPU加速时,红黑迭代法可在计算区域中,直接将运算数据划分为红黑两组。计算过程中,红黑两组数据会在计算网格中处于相互环绕的状态,并且在黑色组中的数据Q1更新后,周围红色组在计算中其物理参数可逐渐修正。基于此种迭代处理模式,计算Q1、Q2等数据时,红色组、黑色组的数据计算可并行完成,便于GPU在FIM算法的压力数值求解中快速完成计算任务。

  另外,在GPU加速中提升FIM算法访存效率时,同样可通过迭代处理将数据分组,从而使红色组、黑色组的数据存储地址具有连续性,并在提升GPU访存效率的基础上,避免CUDA程序的存储空间增大[5]。同时在GPU利用FIM算法完成黑色组、红色组的数据计算后,可根据数据运算精确度分析迭代处理需求。在迭代处理后评估迭代处理需求时,GPU、CPU在数据处理中的通信频次会逐渐减少,GPU计算效率相应提升。但是在GPU、CPU通信次数设定值较大时,其通信频次的改变对计算效率的影响较弱,会导致FIM算法的数据计算时间延长,改变GPU的加速效果。因此,为实现GPU加速目标,提升访存效率,应根据图像处理中的数据计算要求,准确分析数据节点的迭代处理次数,避免因迭代次数过多而影响GPU加速效果。

  四、结语

  综上所述,计算机在各领域中的渗透,数值模拟、运算技术优势愈发突出。GPU在实际运行中所涉方程数量较多,利用FIM算法实现GPU的加速,是为进一步提升GPU运行速度,保证GPU在串行、并联计算中的数据计算精度。因此,相关人员在GPU的加速处理中,应深度挖掘FIM算法在计算密集场景中对数据的并行处理价值,提升GPU的计算效率。

  作者简介:李登科,男,汉族,河南驻马店,在读硕士,华北水利水电大学

  研究方向:GPU并行加速

  参考文献:

  [1]李贝贝,李志华,班晓征.GPU加速卷积反投影算法的滤波并行化方法[J].传感器与微系统,2019(05):75-78.

  [2]任衍青,逯志宇,王大鸣.基于GPU加速遗传算法的直接定位研究[J].计算机应用研究,2019(005):1084-1087.

  [3]李国昌.基于LoRa技术和GPU加速的台区拓扑辨识方法[J].电测与仪表,2019(21):96-103.

  [4]丛敏章.可视化算法的GPU加速研究[D].2018(01):1-6.

  [5]李聪,郭大波,刘小文.基于GPU加速的一种新图像特征匹配算法[J].计算机科学与应用,2019(1):9-18.