基于gpu的三维纵横波分离的弹性波方程的模拟方法及系统的制作方法

文档序号:9396834阅读:394来源:国知局
基于gpu的三维纵横波分离的弹性波方程的模拟方法及系统的制作方法
【技术领域】
[0001] 本发明涉及石油勘探和高性能计算技术领域,特别是涉及一种基于GPU的三维纵 横波分离的弹性波方程的模拟方法及系统。
【背景技术】
[0002] 目前,在石油勘探领域内,三维纵横波分离的弹性波方程的模拟方法是一种研究 弹性波在各向同性完全弹性介质中传播的波场外推方法,即可以帮助人们认识弹性介质中 纵横波的传播机理,同时能得到纵横波分离的波场外推结果,进一步为弹性介质中的逆时 地震波成像提供重要的外推算法。
[0003] 在现有技术中,应用程序对二阶纵横波分离的弹性波方程采用高阶有限差分法进 行数值模拟,该程序对计算能力要求特别大,在CPU平台上计算时间较长,效率较低,硬件 成本尚,能耗尚。
[0004] 基于此,亟需一种能够快速、高效的三维纵横波分离的弹性波方程的模拟方法,以 提高运算速度、降低硬件成本和减少能耗。

【发明内容】

[0005] 有鉴于此,本发明提供了一种基于GPU的三维纵横波分离的弹性波方程的模拟方 法及系统,以达到快速、高效地实现模拟过程,进而提高运算速度、降低硬件成本和减少能 耗。
[0006] 为解决上述技术问题,本发明提供一种基于GPU的三维纵横波分离的弹性波方程 的模拟方法,包括:
[0007] CPU处理器调用GPU加速卡的内核,并利用所述GPU加速卡的内核完成所述三维纵 横波分离的弹性波方程的模拟过程;
[0008] 所述GPU加速卡接受所述CPU处理器的调用,利用CUDA多线程并行完成所述三维 纵横波分离的弹性波方程的模拟过程。
[0009] 上述方法中,优选的,在所述CPU处理器调用所述GPU加速卡的内核之前,还包 括:
[0010] 所述CPU处理器向所述GPU加速卡发送申请内存空间请求;
[0011] 所述GPU加速卡依据所述申请内存空间请求进行内存空间分配,并将内存分配情 况发送至所述CPU处理器;
[0012] 所述CPU处理器接收所述内存分配情况之后,调用所述GPU加速卡的内核。
[0013] 上述方法中,优选的,所述GPU加速卡在分配的内存空间上,利用CUDA多线程并行 完成所述三维纵横波分离的弹性波方程的模拟过程。
[0014] 上述方法中,优选的,所述CPU处理器控制所述模拟过程中数据的I/O操作。
[0015] 上述方法中,优选的,所述CPU处理器调用用于所述CPU处理器与所述GPU之间通 信的通信模块。
[0016] 上述方法中,优选的,在所述GPU加速卡利用CUDA多线程并行完成所述三维纵横 波分离的弹性波方程的模拟过程之前,还包括:
[0017] 所述CPU定义所述CUDA多线程的线程结构。
[0018] 上述方法中,优选的,在所述GPU加速卡利用CUDA多线程并行完成所述三维纵横 波分离的弹性波方程的模拟过程之后,还包括:
[0019] 所述GPU加速卡将模拟结果传递至所述CPU处理器。
[0020] 本发明还提供了一种基于GPU的三维纵横波分离的弹性波方程的模拟系统,包 括:
[0021] CPU处理器,用于调用GPU加速卡的内核,并利用所述GPU加速卡的内核完成所述 三维纵横波分离的弹性波方程的模拟过程;
[0022] 所述GPU加速卡,用于接受所述CPU处理器的调用,利用CUDA多线程并行完成所 述三维纵横波分离的弹性波方程的模拟过程。
[0023] 以上本发明提供的技术方案中,有效利用了 GPU加速卡超强计算的特点,构建 CPU+GPU协同计算方式完成三维纵横波分离的弹性波方程的模拟过程,使CPU和GPU的资源 得到充分利用,GPU加速卡用于模拟过程中的核心计算部分,并通过CUDA超多线程并行计 算加快计算速度,达到了快速、高效地实现模拟过程,进而提高运算速度、降低硬件成本和 减少能耗的目的。
【附图说明】
[0024] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。
[0025] 图1为本发明实施例提供的一种基于GPU的三维纵横波分离的弹性波方程的模拟 方法的流程图;
[0026] 图2为本发明实施例提供的一种CPU+GPU协同计算模式示意图;
[0027] 图3为本发明实施例提供的另一流程图;
[0028] 图4为本发明实施例提供的再一流程图;
[0029] 图5为本发明实施例提供的一种基于GPU的三维纵横波分离的弹性波方程的模拟 系统的结构框图示意图。
【具体实施方式】
[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0031] 本发明的核心是提供一种基于GPU的三维纵横波分离的弹性波方程的模拟方法 及系统,以达到快速、高效地实现模拟过程,进而提高运算速度、降低硬件成本和减少能耗。
[0032] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和【具体实施方式】 对本发明作进一步的详细说明。
[0033] 自从2006年英伟达(NVIDIA)公司推出图形处理器G80以来,图形处理器(GPU, Graphic Processing Unit)在某些大规模并行计算的应用上,相对于CPU来说性能提高可 达100倍以上。GPU拥有更多的晶体管,用于数据处理而不是像CPU那样去处理数据cache 和指令控制,这意味着GPU具有巨大的并行计算能力。GPU加速卡计算资源密度更高,具有 更高的计算性能,双精性能超过lTFlops。GPU计算适合于密集型计算,计算能力相对于CPU 更强,三维纵横波分离的弹性波方程模拟满足GPU计算的应用特点,适合在GPU平台上并行 计算。
[0034] 参考图1和图2,图1示出了本发明实施例提供的一种基于GPU的三维纵横波分离 的弹性波方程的模拟方法的流程图,图2示出了本发明实施例提供的一种CPU+GPU协同计 算模式示意图,该方法具体可以包括如下步骤:
[0035] 步骤S100、CPU处理器(简称CPU)调用GPU加速卡(简称GPU)的内核,并利用 GHJ加速卡的内核完成三维纵横波分离的弹性波方程的模拟过程;
[0036] 本发明中,CPU对GPU的内核模块进行调用,进而实现对GPU内核的调用。其中, CPU控制GPU内核模块的调用是指CPU调用GPU内核,启动GPU进行内核并行计算。
[0037] 进一步,本发明中,CPU还可以控制上述模拟过程中数据的I/O操作、GPU申请空间 模块的调用、CPU与GPU之间的通信模块的调用。
[0038] 其中,
[0039] ① CPU控制的I/O操作是指CPU控制计算需要的读写硬盘操作(即I/O操作)。
[0040] ②CPU控制GPU申请空间模块的调用是指通过CUdaMalloc语句调用GPU空间申 请函数,启动GPU在显存中开辟空间。具体内容在后文详述。
[0041] ③CPU控制CPU与GPU之间的通信是指通过cudaMemcpy等语句进行CPU与GPU 之间的数据通信。
[0042] 步骤SlOl、GPU加速卡接受CPU处理器的调用,利用CUDA多线程并行完成三维纵 横波分离的弹性波方程的模拟过程。
[0043] 本发明中,GPU加速卡具有数千个核心,拥有超强的计算能力,主要用于三维纵横 波分离的弹性波方程模拟的核心计算,利用CUDA超多线程在GPU平台上并行计算三维纵横 波分离的弹性波方程模拟,提高速度,降低成本。
[0044] 其中,GPU加速卡进行内核的计算,CUDA超多线程并行是指在GPU卡上启动多线 程,充分发挥GPU多核的计算能力,加速计算过程。
[0045] 进一步地,在GPU加速卡利用CUDA多线程并行完成三维纵横波分离的弹性波方程 的模拟过程之前,由CPU定义CUDA多线程的线程结构。
[0046] 进一步地,在GPU加速卡利用CUDA多线程并行完成三维纵横波分离的弹性波方程 的模拟过程之后,将模拟结果传递至CPU处理器。
[0047] 以上本发明提供的技术方案中,有效利用了 GPU加速卡超强计算的特点,构建 CPU+GPU协同计算方式完成三维纵横波分离的弹性波方程的模拟过程,使CPU和GPU的资源 得到充分利用,GPU加速卡用于模拟过程中的核心计算部分,并通过CUDA超多线程并行计 算加快计算速度,达到了快速、高效地实现模拟过程,进而提高运算速度、降低硬件成本和 减少能耗的目的。
[0048] 基于上述实施例提供的一种基于GPU的三维纵横波分离的弹性波方程的模拟方 法,本发明还提供了另一实施例,在步骤SlOO中、在CPU处理器调用GPU加速卡的内核之 前,具体地,参考图3,还可以包括如下内容:
[0049] 步骤S300
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1