CN102253919A - 基于gpu和cpu协同运算的并行数值模拟方法和系统 - Google Patents
基于gpu和cpu协同运算的并行数值模拟方法和系统 Download PDFInfo
- Publication number
- CN102253919A CN102253919A CN2011101365396A CN201110136539A CN102253919A CN 102253919 A CN102253919 A CN 102253919A CN 2011101365396 A CN2011101365396 A CN 2011101365396A CN 201110136539 A CN201110136539 A CN 201110136539A CN 102253919 A CN102253919 A CN 102253919A
- Authority
- CN
- China
- Prior art keywords
- data
- function module
- parallel
- gpu
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
提供了一种基于GPU和CPU协同运算的并行数值模拟系统,包括:并行模块选择单元,用于从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使CPU执行剩余函数模块;并行粒度确定单元,用于确定由并行模块选择单元选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。
Description
技术领域
本发明涉及数值模拟技术,更具体地讲,涉及一种并行数值模拟方法及使用该方法的系统。
背景技术
数值模拟是一种对复杂的工程和物理系统进行仿真的技术,它以电子计算机为手段,通过数值计算和图像显示的方法,达到对工程问题和物理问题乃至自然界各类问题研究的目的,其应用范围包括石油地球物理勘探等领域。
近年,随着工程和物理问题变得日趋复杂,数值模拟的数据运算量也在日益增大。例如,在将数值模拟应用到石油地球物理勘探领域中时,通常需要进行大规模的数据运算。预计典型地震勘探项目的数据处理计算量将在2010、2015年分别达到5x1021、3x1022次浮点运算,数据量预计将在2010、2015年分别达到5T和50T的规模,面对石油物探技术对于高性能计算巨大的需求,在进一步提高计算性能、降低系统建设与运行维护成本等方面,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协同运算的并行数值模拟方法和系统中,通过将大规模数据运算中耗时较长的运算模块分配给GPU进行并行运算,可有效地利用CPU的高性能并行处理能力,从而通过CPU与GPU之间的数据交互,提高大规模数据运算的效率。
将在接下来的描述中部分阐述本发明另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明的实施而得知。
附图说明
通过下面结合附图进行的详细描述,本发明的上述和其它目的、特点和优点将会变得更加清楚,其中:
图1是示出根据本发明示例性实施例的应用基于GPU和CPU协同运算的并行数值模拟方法的并行处理系统的框图;
图2是示出根据本发明示例性实施例的基于GPU和CPU协同运算的并行数值模拟方法的流程图;
图3是示出根据本发明示例性实施例的基于GPU和CPU协同运算的数据处理方法的流程图。
具体实施方式
以下,将参照附图更充分地描述本发明的示例性实施例,其示例性实施例在附图中示出。然而,可以以许多不同的形式实施示例性实施例,并且不应被解释为局限于在此阐述的示例性实施例。相反,提供这些实施例从而本公开将会彻底和完整,并将完全地将示例性实施例的范围传达给本领域的技术人员。在附图中,相同的标号表示相同的部分。
图1是示出根据本发明的示例性实施例的应用基于GPU和CPU协同运算的并行数值模拟方法的并行处理系统100的框图。
如图1所示,根据本发明的示例性实施例的并行处理系统100包括:并行模块选择单元101和并行粒度确定单元102。
在图1中,并行模块选择单元101用于从数值模拟算法(例如,三维声波波动方程数值模拟算法等)的各个函数模块中选择适合于进行并行运算的函数模块,并将剩余的函数模块移植到CPU中以由CPU执行所述剩余函数模块。如图1所示,并行模块选择单元101可包括计时单元111,所述计时单元111用于对数值模拟算法的各个函数模块所消耗的处理器时间进行计时,以找出运算时间比重最大的一个或多个函数模块。仅作为示例,在根据本发明的示例性实施例中,可通过为数值模拟算法的每个函数模块手动地增加计时器来进行计时,或者可通过使用程序分析工具(例如,gprof)来对各个函数模块进行计时。应该理解,对数值模拟算法的各个函数模块进行计时的方法不限于此,还可使用本领域的技术人员公知的各种计时方法。
在找出运算时间比重最大的一个或多个函数模块之后,分析所述一个或多个函数模块之间的依赖关系,并找出可以并行的部分。具体地讲,例如,在三维声波波动方程数值模拟算法中,层与层之间存在依赖性,只能串行运算,但是每层内部的函数模块是典型的可以并行运算的函数模块,因而能够被选择为可移植到GPU中进行处理的并行部分。
并行粒度确定单元102用于确定由并行模块选择单元101选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理,从而能够最大化利用GPU的运算单元。
通常来说,并行的线程组数量不应少于显卡中的流多处理器(SM,streaming multiprocessor)的数量,每个线程组中的线程数量应该根据不同场景选择。因为SM上的寄存器数量有限,并行的线程越多,每个线程能使用的寄存器就越少。在线程需要使用多个寄存器的时候,可减少线程数量,在线程使用少量寄存器的时候,可增大线程数量。找出各函数模块最优并行粒度,是为了提升GPU的并行运算性能。粒度选择越小并行的线程就越多,但是粒度越小不一定速度越快,在GPU的运算能力被完全使用的情况下,增大并行线程数已经不能提升性能。另外,增大并行线程数也会导致显存的使用率增大。
如图1所示,在根据本发明的示例性实施例中,所述并行粒度确定单元101可包括算法结构调整单元121,用于在将适合进行并行运算的函数模块移植到GPU时,根据需要调整各函数模块的算法结构,以获取更大的并行粒度,提高GPU的运算效率。
仅作为示例,在三维声波波动方程数值模拟算法中,假设在原有CPU运算结构中,需要对30×30×30的三维模型分成27个部分分别计算,每个部分计算10×10×10个元素,因此并行粒度只有1000,需要循环执行27次或者并行27个线程才能完成整个模型的运算。如果按这种结构将其移植到GPU中,则未能最大化地利用GPU的并行能力。因此需要根据GPU的并行处理能力对该三维模型的算法结构进行调整,使得能够以尽可能少的运算次数完成对整个模型的运算,以最大化利用GPU的运算单元进行并行运算。例如,可在进行算法移植之前调整移植的算法结构,使其能够一次对整个模型(即27000个元素)进行运算,从而更好地利用GPU的并行能力,提高GPU的并行运算效率。
此外,由于GPU内核函数(kernel)的异步发射,因此可以和CPU进行并行(例如,输入输出(IO)操作和处理数据,IO操作通过CPU执行,数据的处理通过GPU进行运算)。例如,在三维声波波动方程数值模拟算法中,每一层在处理数据前需要先从文件中取回速度,所以在执行内核函数的时候,CPU就可以去取下一层的速度,从而也能够提高GPU的处理速度。
作为可选方式,根据本发明的示例性实施例,并行粒度确定单元102还可额外包括函数模块拆分单元122,用于将具有多个并行粒度的特定函数模块拆分为若干个内核函数,每个内核函数具有其最大的并行粒度。这是因为在某些函数模块中,可能存在多个不同的并行粒度,如果直接移植,则该函数模块的并行粒度等于其所有粒度中最小的并行粒度。将这样的函数模块拆分为多个内核函数,使得拆分后的每个内核函数有其最大的并行粒度,可提高对该函数模块的处理速度。
仅作为示例,假设一函数模块由两部分组成,第一部分并行粒度为nx,第二部分并行粒度为nx×ny,如果不对该函数模块进行拆分,则需要选取nx作为该函数模块的并行粒度,然后再对第二部分循环执行ny次。然而,可通过将该函数模块拆分成两个内核函数,使得第一个内核函数的并行粒度为nx,第二个内核函数的并行粒度为nx×ny,从而可避免对第二部分执行ny次循环的过程。尽管增加了函数调用的开销,但是可最大化利用GPU的运算单元,并且更加合理地应用GPU资源。
应该理解,仅可对该特定函数模块中不具有依赖性的内核函数进行拆分,如果内核函数之间存在依赖关系,则函数模块拆分单元122可不对其进行拆分。例如,函数模块X包括三个子函数模块A、B和C,如果子函数模块B和C之间存在依赖关系,则函数模块拆分单元122可仅将函数模块X拆分为两个部分,即,函数模块A以及包括子函数模块B和C的另一函数模块。
如图1所示,并行模块选择单元101将获得的可进行并行运算的函数模块输入到并行粒度确定单元102中,以确定各个函数模块的最优并行粒度。然后,将确定了最优并行粒度的各函数模块移植到GPU 103中,以使用移植的函数模块进行数据的并行运算处理。对于数值模拟算法中的剩余函数模块,可将其输入到CPU(未示出)中进行运算。
此外,所述算法结构调整单元121还可在函数模块移植时,根据需要调整数值模拟算法的程序结构,以降低显存和内存的数据存取次数,节约数据在内存和显存间的拷贝时间,并减少数据同步。这是因为考虑到执行内核函数的时间和输入输出(IO)时间成本(包括显存的分配、释放、显存和内存的数据同步),在移植算法的时候,应尽量只进行一次显存的分配和释放,也就是说,尽量保证所有内核函数之间直接通过显存进行通信。
如图1所示,根据本发明的示例性实施例的并行处理系统100还可包括数据存取优化单元104,用于在进行数据运算时优化数据的存取方式,以提高数据处理效率。具体地讲,在对GPU的全局内存进行存取时,warp(图形处理单元并行处理单元)内每个线程存取相邻的地址是最优的,warp执行指令时可以合并这些访问,合并规则根据显卡计算能力不同存在差异(例如,在显卡GTX480上合并规则相对松散)。因此,数据存取优化单元104可使warp内线程访问的地址被分配集中在同一块,例如,线程1访问第一个元素,线程2访问第二个元素,以此类推,从而使数据存取的效率最高。
如图1所示,根据本发明的示例性实施例,并行处理系统100还可包括数据拆分单元105,用于在进行数据运算时根据GPU的显存容量对待处理的数据进行拆分,使得拆分后的数据块大小不大于显存容量。这是因为GPU存储容量有限,或者由于三维模型过大,导致不能分配整个模型的显存,因而需要进行数据拆分。在本发明的示例性实施例中,数据拆分单元105可按内存的连续性对数据进行拆分,例如,假设一个数据块长度为N,最大显存为M,可以考虑把该数据块N拆分成N/M块(如果可以整除)或块(如果不能整除),然后顺序遍历执行每个数据块。应该理解,数据拆分方式不限于此,还可使用本领域技术人员所公知的任何数据拆分方式对数据进行拆分。
可按两种方式遍历拆分后的多个数据块。第一种方式为对每个内核函数分别遍历,第二种方式为对每个数据块分别遍历。第一种方式需要在每个内核函数结束后将数据同步在内存中。第二种方式在不存在内核函数间的依赖性的情况下,可以节约数据同步的时间成本。应该注意,在与数据块相关的内核函数之间存在依赖性的情况下,第二种方式也需要进行数据同步,如果与数据块相关的内核函数具有不同的并行粒度,则在进行函数模块移植时,可以考虑使用算法结构调整单元121调整算法的程序结构来隐藏数据同步。同样,在与数据块相关的内核函数之间存在依赖性的情况下,也可在进行函数模块移植时通过改变算法和程序结构来将依赖拆分。
仅作为示例,以下将说明结合数据拆分、数据存取优化以及算法结构调整处理来提高GPU的运算效率的方法。假设三维声波波动方程数值模拟的处理函数模块包括多个部分,其中,存在两个子函数模块A和B,B需要依赖A的运算结果。当数据过大需要拆分时,仅作为示例,假设三维模型大小为200,显存大小为100,则该三维模型需要运算2次。在未对程序结构进行改变的情况下,对于该三维模型的处理过程如下:
1、加载第一部分数据
2、执行A
3、将第一部分数据从显存复制到内存
4、加载第二部分数据
5、执行A
6、将第二部分数据从显存复制到内存
7、加载第一部分数据
8、执行B
9、将第一部分数据从显存复制到内存
10、加载第二部分数据
11、执行B
12、将第二部分数据从显存复制到内存
而在算法结构进行了调整的情况下,由于将A和B之间的依赖拆分,则该三维模型的处理过程如下:
1、加载第一部分数据
2、执行A
3、执行B
4、将第一部分数据从显存复制到内存
5、加载第二部分数据
6、执行A
7、执行B
8、将第二部分数据从显存复制到内存
比较算法结构改变前后对三维模型的处理过程,IO操作次数明显减少,运算速度将会得到提高。
图2是示出根据本发明的示例性实施例的基于GPU和CPU协同运算的并行数值模拟方法的流程图。
如图2所示,在步骤201,并行模块选择单元101从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,其中,可利用计时单元111来计算数值模拟算法中的各个函数模块所消耗的处理器时间,找出运算时间比重最大的一个或多个函数模块,通过分析找到的函数模块之间的依赖关系确定可进行并行运算的函数模块,并促使CPU执行剩余函数模块。
在步骤203,并行粒度确定单元102确定在步骤201找到的可进行并行运算的各个函数模块的适应于GPU的最优并行粒度。其中,并行粒度确定单元102可通过使用算法结构调整单元121进行算法结构调整来获得最优并行粒度,已结合图1详细描述了通过调整算法结构获得最优并行粒度的方法,因此在此将不再对其进行详细描述。
可选择地,如果在某一函数模块中存在特定数量的不同的并行粒度,则还可通过使用函数模块拆分单元122在进行移植之前将所述函数模块拆分为若干个内核函数,每个内核函数有其最大的并行粒度,以提高GPU 103的利用效率。
优选地,可在在步骤205根据需要使用算法结构调整单元121调整函数模块的程序结构,以优化数据存取,降低显存和内存的数据存取次数,减少数据同步。已参照图1描述了优化数据存取次数的具体方法,在此将不再对其进行描述。
在步骤207,将函数模块移植到GPU,以由GPU使用移植的函数模块进行数据并行运算处理。
图3是示出根据本发明示例性实施例的基于GPU和CPU协同运算的数据处理方法的流程图。
如图3所示,在将数据读取到GPU进行并行运算处理之前,判断待处理的数据块大小是否大于显存容量(步骤301)。如果待处理的数据块大小大于GPU的显存容量,则在步骤303,数据拆分单元105将所述数据块拆分为若干个大小不大于显存容量的数据块,其中,可按内存的连续性对数据进行拆分。已结合图1详细描述了数据拆分的具体方法,因此在此将不对其进行描述。随后,在步骤305对拆分后的数据块进行运算。
如果待处理的数据块大小不大于GPU的显存容量,则可直接在步骤305对该数据块进行运算。
可选择地,在数据运算过程中,还可使用数据存取优化单元104优化数据存取方式来提高数据运算效率,例如,通过将图形处理单元并行处理单元内线程访问的地址分配集中在同一块来优化数据存取方式。
此外,在数据运算过程中,可通过对每个内核函数分别遍历来对拆分后的多个数据块进行遍历,并在每个内核函数结束后将数据同步在内存中,或可通过对每个数据块分别遍历来对拆分后的多个数据块进行遍历,并在与数据块相关的内核函数之间存在依赖性的情况下,进行数据同步。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。
Claims (34)
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所述的系统,其中,如果与数据块相关的内核函数具有不同的并行粒度,则在进行函数模块移植时使用算法结构调整单元调整程序结构,以隐藏数据同步。
18.如权利要求15所述的系统,其中,如果与数据块相关的内核函数之间存在依赖性,则在进行函数模块移植时使用算法结构调整单元调整程序结构,以将所述依赖进行拆分。
19.一种基于GPU和CPU协同运算的并行数值模拟方法,包括:
从数值模拟算法的各个函数模块中选择适合于进行并行运算的函数模块,并促使CPU执行剩余函数模块;
确定选择的各个函数模块的适应于GPU的最优并行粒度,并将确定了最优并行粒度的函数模块移植到GPU中,以由GPU使用移植的函数模块进行数据并行运算处理。
20.如权利要求19所述的方法,选择适合于进行并行运算的函数模块的步骤包括:对数值模拟算法的各个函数模块所消耗的处理器时间进行计时,以找出运算时间比重最大的一个或多个函数模块,
其中,对所述一个或多个函数模块之间的依赖关系进行分析,找出可以并行的部分。
21.如权利要求20所述的方法,其中,通过为数值模拟算法的每个函数模块增加计时器来进行计时。
22.如权利要求20所述的方法,其中,通过使用程序分析工具gprof来对数值模拟算法的各个函数模块进行计时。
23.如权利要求19所述的方法,确定函数模块的最优并行粒度的步骤包括:在将适合进行并行运算的函数模块移植到GPU时,根据需要调整各函数模块的算法结构,以获取更大的并行粒度。
24.如权利要求19所述的方法,确定函数模块的最优并行粒度的步骤包括:将具有多个并行粒度的函数模块拆分为若干个内核函数,以使每个内核函数具有其最大并行粒度。
25.如权利要求24所述的方法,其中,如果所述内核函数之间存在依赖关系,则不进行拆分。
26.如权利要求23所述的方法,其中,在进行函数模块移植时,根据需要调整数值模拟算法的程序结构,以降低显存和内存的数据存取次数,减少数据同步。
27.一种GPU中的数据处理方法,包括:
确定待处理的数据块大小是否大于显存容量;
如果所述数据块大小大于显存容量,则将所述数据块拆分为若干个大小不大于显存容量的数据块;以及
对拆分后的数据块进行运算。
28.如权利要求27所述的方法,其中,还在进行数据运算时通过优化数据存取方式来提高数据运算效率。
29.如权利要求28所述的方法,其中,通过将图形处理单元并行处理单元内线程访问的地址分配集中在同一块来优化数据存取方式。
30.如权利要求27所述的方法,其中,按内存的连续性对数据进行拆分。
31.如权利要求27所述的方法,其中,通过对每个内核函数分别遍历来对拆分后的多个数据块进行遍历。
32.如权利要求31所述的方法,其中,在每个内核函数结束后将数据同步在内存中。
33.如权利要求27所述的方法,其中,通过对每个数据块分别遍历来对拆分后的多个数据块进行遍历。
34.如权利要求33所述的方法,其中,如果与数据块相关的内核函数之间存在依赖性,则进行数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101365396A CN102253919A (zh) | 2011-05-25 | 2011-05-25 | 基于gpu和cpu协同运算的并行数值模拟方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101365396A CN102253919A (zh) | 2011-05-25 | 2011-05-25 | 基于gpu和cpu协同运算的并行数值模拟方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102253919A true CN102253919A (zh) | 2011-11-23 |
Family
ID=44981191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101365396A Pending CN102253919A (zh) | 2011-05-25 | 2011-05-25 | 基于gpu和cpu协同运算的并行数值模拟方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102253919A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572256A (zh) * | 2013-10-29 | 2015-04-29 | 中国石油化工股份有限公司 | 一种地震处理多核异构并行模式自适应匹配通用计算模型 |
CN105468439A (zh) * | 2015-11-19 | 2016-04-06 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 |
CN107783184A (zh) * | 2016-08-31 | 2018-03-09 | 中国科学院地质与地球物理研究所 | 一种基于多流优化的gpu逆时偏移方法及系统 |
CN108804765A (zh) * | 2018-05-07 | 2018-11-13 | 武汉大学 | 高效的明渠非恒定流数值模拟方法 |
CN109636709A (zh) * | 2018-11-28 | 2019-04-16 | 华中科技大学 | 一种适用于异构平台的图计算方法 |
CN109783157A (zh) * | 2018-12-29 | 2019-05-21 | 深圳云天励飞技术有限公司 | 一种算法程序加载的方法及相关装置 |
CN109871553A (zh) * | 2017-12-04 | 2019-06-11 | 北京大学 | 一种针对分子动力仿真模型的并行化加速方法 |
CN110959156A (zh) * | 2017-06-23 | 2020-04-03 | 赛灵思公司 | 到数据库加速器的并行计算卸载 |
CN111124691A (zh) * | 2020-01-02 | 2020-05-08 | 上海交通大学 | 多进程共享的gpu调度方法、系统及电子设备 |
CN112673347A (zh) * | 2018-10-19 | 2021-04-16 | 日本电信电话株式会社 | 数据处理系统、中央运算处理装置和数据处理方法 |
CN112732455A (zh) * | 2019-10-14 | 2021-04-30 | 中国石油化工股份有限公司 | 一种并行化处理sedg文件道数据的方法 |
WO2022012123A1 (zh) * | 2020-07-17 | 2022-01-20 | Oppo广东移动通信有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN117896067A (zh) * | 2024-03-13 | 2024-04-16 | 杭州金智塔科技有限公司 | 适用于国密sm2算法的并行模约减方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060080398A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
CN101606854A (zh) * | 2009-06-10 | 2009-12-23 | 无锡祥生科技有限公司 | 一种高精度实时超声图像扫描变换方法 |
CN101664583A (zh) * | 2009-09-09 | 2010-03-10 | 深圳市海博科技有限公司 | 基于cuda的剂量计算优化方法和系统 |
US20100118041A1 (en) * | 2008-11-13 | 2010-05-13 | Hu Chen | Shared virtual memory |
US20100149199A1 (en) * | 2008-12-11 | 2010-06-17 | Nvidia Corporation | System and method for video memory usage for general system application |
CN101814039A (zh) * | 2010-02-02 | 2010-08-25 | 北京航空航天大学 | 一种基于GPU的Cache模拟器及其空间并行加速模拟方法 |
CN101937343A (zh) * | 2010-09-17 | 2011-01-05 | 上海交通大学 | 异构多核虚拟执行环境的后端翻译框架实现的方法 |
CN102036043A (zh) * | 2010-12-15 | 2011-04-27 | 成都市华为赛门铁克科技有限公司 | 视频数据处理方法、装置及视频监控系统 |
-
2011
- 2011-05-25 CN CN2011101365396A patent/CN102253919A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060080398A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
US20100118041A1 (en) * | 2008-11-13 | 2010-05-13 | Hu Chen | Shared virtual memory |
US20100149199A1 (en) * | 2008-12-11 | 2010-06-17 | Nvidia Corporation | System and method for video memory usage for general system application |
CN101606854A (zh) * | 2009-06-10 | 2009-12-23 | 无锡祥生科技有限公司 | 一种高精度实时超声图像扫描变换方法 |
CN101664583A (zh) * | 2009-09-09 | 2010-03-10 | 深圳市海博科技有限公司 | 基于cuda的剂量计算优化方法和系统 |
CN101814039A (zh) * | 2010-02-02 | 2010-08-25 | 北京航空航天大学 | 一种基于GPU的Cache模拟器及其空间并行加速模拟方法 |
CN101937343A (zh) * | 2010-09-17 | 2011-01-05 | 上海交通大学 | 异构多核虚拟执行环境的后端翻译框架实现的方法 |
CN102036043A (zh) * | 2010-12-15 | 2011-04-27 | 成都市华为赛门铁克科技有限公司 | 视频数据处理方法、装置及视频监控系统 |
Non-Patent Citations (1)
Title |
---|
江雯倩 等: "基于CPU/GPU的日冕偏振亮度并行计算模型", 《空间科学学报》, no. 1, 28 February 2011 (2011-02-28), pages 51 - 56 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572256A (zh) * | 2013-10-29 | 2015-04-29 | 中国石油化工股份有限公司 | 一种地震处理多核异构并行模式自适应匹配通用计算模型 |
CN105468439B (zh) * | 2015-11-19 | 2019-03-01 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 |
CN105468439A (zh) * | 2015-11-19 | 2016-04-06 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 |
CN107783184B (zh) * | 2016-08-31 | 2020-01-21 | 中国科学院地质与地球物理研究所 | 一种基于多流优化的gpu逆时偏移方法及系统 |
CN107783184A (zh) * | 2016-08-31 | 2018-03-09 | 中国科学院地质与地球物理研究所 | 一种基于多流优化的gpu逆时偏移方法及系统 |
CN110959156A (zh) * | 2017-06-23 | 2020-04-03 | 赛灵思公司 | 到数据库加速器的并行计算卸载 |
CN109871553B (zh) * | 2017-12-04 | 2021-07-09 | 北京大学 | 一种针对分子动力仿真模型的并行化加速方法 |
CN109871553A (zh) * | 2017-12-04 | 2019-06-11 | 北京大学 | 一种针对分子动力仿真模型的并行化加速方法 |
CN108804765B (zh) * | 2018-05-07 | 2020-09-22 | 武汉大学 | 高效的明渠非恒定流数值模拟方法 |
CN108804765A (zh) * | 2018-05-07 | 2018-11-13 | 武汉大学 | 高效的明渠非恒定流数值模拟方法 |
CN112673347A (zh) * | 2018-10-19 | 2021-04-16 | 日本电信电话株式会社 | 数据处理系统、中央运算处理装置和数据处理方法 |
CN109636709B (zh) * | 2018-11-28 | 2020-12-08 | 华中科技大学 | 一种适用于异构平台的图计算方法 |
CN109636709A (zh) * | 2018-11-28 | 2019-04-16 | 华中科技大学 | 一种适用于异构平台的图计算方法 |
CN109783157A (zh) * | 2018-12-29 | 2019-05-21 | 深圳云天励飞技术有限公司 | 一种算法程序加载的方法及相关装置 |
CN112732455A (zh) * | 2019-10-14 | 2021-04-30 | 中国石油化工股份有限公司 | 一种并行化处理sedg文件道数据的方法 |
CN111124691A (zh) * | 2020-01-02 | 2020-05-08 | 上海交通大学 | 多进程共享的gpu调度方法、系统及电子设备 |
CN111124691B (zh) * | 2020-01-02 | 2022-11-25 | 上海交通大学 | 多进程共享的gpu调度方法、系统及电子设备 |
WO2022012123A1 (zh) * | 2020-07-17 | 2022-01-20 | Oppo广东移动通信有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN117896067A (zh) * | 2024-03-13 | 2024-04-16 | 杭州金智塔科技有限公司 | 适用于国密sm2算法的并行模约减方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102253919A (zh) | 基于gpu和cpu协同运算的并行数值模拟方法和系统 | |
Kim et al. | Zena: Zero-aware neural network accelerator | |
US9053067B2 (en) | Distributed data scalable adaptive map-reduce framework | |
Zhong et al. | Data partitioning on heterogeneous multicore and multi-GPU systems using functional performance models of data-parallel applications | |
CN102609393B (zh) | 一种线性方程组的数据处理方法及装置 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
Rafique et al. | A capabilities-aware framework for using computational accelerators in data-intensive computing | |
Shan et al. | CNN-on-AWS: Efficient allocation of multikernel applications on multi-FPGA platforms | |
Zeni et al. | Optimized implementation of the hpcg benchmark on reconfigurable hardware | |
CN102662638B (zh) | 一种支持帮助线程预取距离参数的阈值边界选取方法 | |
Song et al. | A fine-grained parallel EMTP algorithm compatible to graphic processing units | |
CN102841881A (zh) | 一种基于众核处理器的多重积分计算方法 | |
CN102722472B (zh) | 一种复数矩阵的优化方法 | |
US10558500B2 (en) | Scheduling heterogenous processors | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
Wang | Power analysis and optimizations for GPU architecture using a power simulator | |
Hu et al. | High-performance reconfigurable DNN accelerator on a bandwidth-limited embedded system | |
Rojek et al. | Parallelization of 3D MPDATA algorithm using many graphics processors | |
Wei et al. | LICOM3-CUDA: A GPU version of LASG/IAP climate system ocean model version 3 based on CUDA | |
Jin et al. | Accelerating Graph Convolutional Networks Through a PIM-Accelerated Approach | |
Muraraşu et al. | Workload balancing on heterogeneous systems: A case study of sparse grid interpolation | |
Wang et al. | Harmonic-Summing Module of SKA on FPGA—Optimizing the Irregular Memory Accesses | |
Nakasato et al. | GRAPE-MPs: Implementation of an SIMD for quadruple/hexuple/octuple-precision arithmetic operation on a structured ASIC and an FPGA | |
CN104951369A (zh) | 消除热点资源竞争的方法和装置 | |
Lastovetsky et al. | How pre-multicore methods and algorithms perform in multicore era |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20111123 |