基于GPU和CPU协同运算的并行数值模拟方法和系统技术方案

技术编号:6904917 阅读:363 留言:0更新日期:2012-04-11 18:40
提供了一种基于GPU和CPU协同运算的并行数值模拟系统,包括:并行模块选择单元,用于从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使CPU执行剩余函数模块;并行粒度确定单元,用于确定由并行模块选择单元选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。

【技术实现步骤摘要】

本专利技术涉及数值模拟技术,更具体地讲,涉及一种并行数值模拟方法及使用该方法的系统。
技术介绍
数值模拟是一种对复杂的工程和物理系统进行仿真的技术,它以电子计算机为手段,通过数值计算和图像显示的方法,达到对工程问题和物理问题乃至自然界各类问题研究的目的,其应用范围包括石油地球物理勘探等领域。近年,随着工程和物理问题变得日趋复杂,数值模拟的数据运算量也在日益增大。 例如,在将数值模拟应用到石油地球物理勘探领域中时,通常需要进行大规模的数据运算。 预计典型地震勘探项目的数据处理计算量将在2010、2015年分别达到&1021、3χ1022次浮点运算,数据量预计将在2010、2015年分别达到5Τ和50Τ的规模,面对石油物探技术对于高性能计算巨大的需求,在进一步提高计算性能、降低系统建设与运行维护成本等方面,IT 产业与石油工业共同面临着一系列的挑战。可编程图形处理单元(GPU,Graphic Processing Unit)已发展成为一种高度并行化、多线程、多核的处理器,具有杰出的计算功率和极高的存储器带宽,能够适应这种大规模数据运算的需要。在传统CPU由单核CPU向多核CPU发展的同时,基于GPU平台的通用计算技术也得到了重大发展,主要是应用GPU的高性能并行处理能力来实现科学计算。CPU 和GPU之间的浮点功能之所以存在这样的差异,原因在于GPU专为运算密集型、高度并行化的运算而设计。GPU的高性能来源于其大规模的并行处理单元,这种设计能使更多晶体管用于数据处理,而非数据缓存和流控制。更确切地说,GPU专用于解决可表示为数据并行运算的问题在许多数据元素上并行执行程序,具有极高的计算密度(数学运算与存储器运算的比率)。因此GPU特别适合于进行密集型数据处理和并行运算,对于需要进行大规模数据运算的数值模拟方法提供了良好的平台。充分利用GPU的并行处理能力,可以将其作为密集运算加速器来为高性能运算提供补充,从而可以在现有的通用计算平台的基础上实现高性价比的高性能运算解决方案。然而,现有的CPU与GPU的协同运算主要是通过将CPU和GPU两种不同架构的处理器结合在一起,从而仅组成硬件上的协同并行模式,这种方式难以灵活有效地利用CPU和 GPU的协同运算来进行数据处理。
技术实现思路
本专利技术的目的在于提供一种基于GPU和CPU协同运算的并行数值模拟方法和系统,通过所述方法和系统,能够有效地控制CPU与GPU两者的协作,充分发挥GPU处理性能高的优势,使得CPU与GPU良好地配合,从而实现数值模拟过程整体上的优化。根据本专利技术的一方面,提供了一种基于GPU和CPU协同运算的并行数值模拟系统, 包括并行模块选择单元,用于从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使CPU执行剩余函数模块;并行粒度确定单元,用于确定由并行模块选择单元选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。所述并行模块选择单元可包括计时单元,用于对数值模拟算法的各个函数模块所消耗的处理器时间进行计时,以找出运算时间比重最大的一个或多个函数模块,其中,并行模块选择单元可对所述一个或多个函数模块之间的依赖关系进行分析,找出可以并行的部分。所述计时单元可通过为数值模拟算法的每个函数模块增加计时器来进行计时。所述计时单元可通过使用程序分析工具gprof来对数值模拟算法的各个函数模块进行计时。所述并行粒度确定单元可包括算法结构调整单元,用于在将适合进行并行运算的函数模块移植到GPU时,根据需要调整各函数模块的算法结构,以获取更大的并行粒度。所述并行粒度确定单元还可包括函数模块拆分单元,用于将具有多个并行粒度的函数模块拆分为若干个内核函数,以使每个内核函数具有其最大并行粒度。如果所述内核函数之间存在依赖关系,则可不进行拆分。所述算法结构调整单元还可用于在进行函数模块移植时,根据需要调整数值模拟算法的程序结构,以降低显存和内存的数据存取次数,减少数据同步。所述系统还可包括数据存取优化单元,用于在进行数据运算时通过优化数据存取方式来提高数据运算效率。所述数据存取优化单元可通过将图形处理单元并行处理单元内线程访问的地址分配集中在同一块来优化数据存取方式。所述系统还可包括数据拆分单元,在进行数据运算时,如果GPU的显存容量小于待处理的数据块大小,则将待处理的数据块拆分为若干个大小不大于显存容量的数据块。可按内存的连续性对数据进行拆分。可通过对每个内核函数分别遍历来对拆分后的多个数据块进行遍历。可在每个内核函数结束后将数据同步在内存中。 可通过对每个数据块分别遍历来对拆分后的多个数据块进行遍历。如果与数据块相关的内核函数之间存在依赖性,则可进行数据同步。可如果与数据块相关的内核函数具有不同的并行粒度,则可在进行函数模块移植时使用算法结构调整单元调整程序结构,以隐藏数据同步。如果与数据块相关的内核函数之间存在依赖性,则可在进行函数模块移植时使用算法结构调整单元调整程序结构,以将所述依赖进行拆分。根据本专利技术的另一方面,提供了一种基于GPU和CPU协同运算的并行数值模拟方法,包括从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使 CPU执行剩余函数模块;确定选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。选择适合于进行并行运算的函数模块的步骤可包括对数值模拟算法的各个函数模块所消耗的处理器时间进行计时,以找出运算时间比重最大的一个或多个函数模块,其中,可对所述一个或多个函数模块之间的依赖关系进行分析,找出可以并行的部分。可通过为数值模拟算法的每个函数模块增加计时器来进行计时。可通过使用程序分析工具gprof来对数值模拟算法的各个函数模块进行计时。确定函数模块的最优并行粒度的步骤可包括在将适合进行并行运算的函数模块移植到GPU时,根据需要调整各函数模块的算法结构,以获取更大的并行粒度。确定函数模块的最优并行粒度的步骤可包括将具有多个并行粒度的函数模块拆分为若干个内核函数,以使每个内核函数具有其最大并行粒度。如果所述内核函数之间存在依赖关系,则可不进行拆分。所述方法还可包括在进行函数模块移植时,根据需要调整数值模拟算法的程序结构,以降低显存和内存的数据存取次数,减少数据同步。根据本专利技术的另一方面,提供了一种GPU中的数据处理方法,包括确定待处理的数据块大小是否大于显存容量;如果所述数据块大小大于显存容量,则将所述数据块拆分为若干个大小不大于显存容量的数据块;对拆分后的数据块进行运算。还可在进行数据运算时通过优化数据存取方式来提高数据运算效率。可通过将图形处理单元并行处理单元内线程访问的地址分配集中在同一块来优化数据存取方式。可按内存的连续性对数据进行拆分。可通过对每个内核函数分别遍历来对拆分后的多个数据块进行遍历。可在每个内核函数结束后将数据同步在内存中。可通过对每个数据块分别遍历来对拆分后的多个数据块进行遍历。如果与数据块相关的内核函数之间存在依赖性,则可进行数据同步。在根据本专利技术的基于GPU和CPU协同运算的并行数值模拟本文档来自技高网
...

【技术保护点】
1.一种基于GPU和CPU协同运算的并行数值模拟系统,包括:并行模块选择单元,用于从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使CPU执行剩余函数模块;并行粒度确定单元,用于确定由并行模块选择单元选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。

【技术特征摘要】
1.一种基于GPU和CPU协同运算的并行数值模拟系统,包括并行模块选择单元,用于从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使CPU执行剩余函数模块;并行粒度确定单元,用于确定由并行模块选择单元选择的各个函数模块的适应于GPU 的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。2.如权利要求1所述的系统,所述并行模块选择单元包括计时单元,用于对数值模拟算法的各个函数模块所消耗的处理器时间进行计时,以找出运算时间比重最大的一个或多个函数模块,其中,并行模块选择单元对所述一个或多个函数模块之间的依赖关系进行分析,找出可以并行的部分。3.如权利要求2所述的系统,其中,所述计时单元通过为数值模拟算法的每个函数模块增加计时器来进行计时。4.如权利要求2所述的系统,其中,所述计时单元通过使用程序分析工具gprof来对数值模拟算法的各个函数模块进行计时。5.如权利要求1所述的系统,所述并行粒度确定单元包括算法结构调整单元,用于在将适合进行并行运算的函数模块移植到GPU时,根据需要调整各函数模块的算法结构,以获取更大的并行粒度。6.如权利要求1所述的系统,所述并行粒度确定单元包括函数模块拆分单元,用于将具有多个并行粒度的函数模块拆分为若干个内核函数,以使每个内核函数具有其最大并行粒度。7.如权利要求6所述的系统,其中,如果所述内核函数之间存在依赖关系,则不进行拆分。8.如权利要求5所述的系统,其中,所述算法结构调整单元还用于在进行函数模块移植时,根据需要调整数值模拟算法的程序结构,以降低显存和内存的数据存取次数,减少数据同步。9.如权利要求1所述的系统,还包括数据存取优化单元,用于在进行数据运算时通过优化数据存取方式来提高数据运算效率。10.如权利要求9所述的系统,其中,所述数据存取优化单元通过将图形处理单元并行处理单元内线程访问的地址分配集中在同一块来优化数据存取方式。11.如权利要求1所述的系统,还包括数据拆分单元,在进行数据运算时,如果GPU的显存容量小于待处理的数据块大小,则将待处理的数据块拆分为若干个大小不大于显存容量的数据块。12.如权利要求11所述的系统,其中,按内存的连续性对数据进行拆分。13.如权利要求11所述的系统,其中,通过对每个内核函数分别遍历来对拆分后的多个数据块进行遍历。14.如权利要求13所述的系统,其中,在每个内核函数结束后将数据同步在内存中。15.如权利要求11所述的系统,其中,通过对每个数据块分别遍历来对拆分后的多个数据块进行遍历。16.如权利要求15所述的系统,其中,如果与数据块相关的内核函数之间存在依赖性, 则进行数据同步。17.如权利要求16所述的系统,其中,如果与数据块相关的内核函数具有不同的并行粒度,则在进行函...

【专利技术属性】
技术研发人员:李亚林何光明胡善政陈爱萍刘鸿敬龙江龙资强耿春
申请(专利权)人:中国石油集团川庆钻探工程有限公司
类型:发明
国别省市:90

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1