基于图形处理器的计算网络系统、方法及装置的制作方法

文档序号:6355259阅读:266来源:国知局
专利名称:基于图形处理器的计算网络系统、方法及装置的制作方法
技术领域
本发明涉及高性能计算应用技术,尤其涉及基于图形处理器的计算网络系统、方 法及装置。
背景技术
随着图形处理器(GPU,Graphic Processing Unit)体系结构的不断发展,利用GPU 进行通用计算的方法被越来越多的学术和工业界所采用。GPU设备(显卡)拥有计算能力 强,显示内存吞吐量大等特点,尤其适合于细粒度、高度并发的并行算法领域,在高性能计 算领域受到越来越多的关注。例如,石油行业高性能计算是典型的行业应用。其中叠前时间偏移又是石油行业 重要的处理地震信息的方法,是以时间记录的方式来处理地震资料信息,适用于地层速度 横向变化不大的构造。在现有的作为计算网络系统中计算节点的服务器设备中,虽然也有引入GPU设备 应用于譬如叠前时间偏移计算这类大型计算上,但这些GPU设备与服务器设备中的CPU设 备(主卡)只是简单的协同关系,即由CPU设备控制GPU设备,主要的计算操作由GPU设备 完成。显然,这样的工作模式并没有充分利用CPU设备,工作效率较低。将GPU设备尤其是GPU集群应用于计算网络实现大型计算应用是一项非常有意义 的工作。尤其是在引入GPU设备之后,需要设计一种软件方法,使得CPU设备在控制GPU设 备的同时,能够参与计算,由此可以提高设备的工作效率,并避免由于引入GPU设备所引起 的负载不均衡等问题,以及可以更加充分地利用GPU集群的性能优势。

发明内容
本发明所要解决的技术问题是提供一种基于图形处理器的计算网络系统、方法及 装置,能够使得CPU设备在控制GPU设备的同时参与部分计算。为了解决上述技术问题,本发明提供了一种基于图形处理器的计算网络中的方 法,涉及计算网络中的管理节点和多个计算节点,该方法包括管理节点获取计算网络中计算节点的个数,根据计算空间大小开辟每一计算节点 的内存;计算节点根据本节点的图形处理器GPU设备的个数和CPU核数开辟CPU计算线程 和GPU计算线程,并划分计算空间数据;管理节点将参与计算的数据广播到各个计算节点;CPU设备调用GPU计算线程与 GPU设备协同完成一部分计算,同时并行调用CPU计算线程完成另一部分计算。进一步地,管理节点获取计算网络中计算节点的个数,根据计算空间大小开辟每 一计算节点的内存,具体包括管理节点获取计算网络中计算节点的个数为M,根据计算空间大小为S为每个计 算节点各开辟大小为S/M的内存,用于各计算节点存储本地的计算空间数据。
进一步地,计算节点根据本节点的GPU设备的个数和CPU核数开辟CPU计算线程 和GPU计算线程,并划分计算空间数据,具体包括计算节点获取本节点所有CPU设备的核数共为N_CPU,GPU设备个数为N_GPU,则开 辟(N_CPU-N_GPU)个CPU计算线程和N_GPU个GPU线程;根据该N_CPU、该N_GPU及GPU设 备与CPU设备计算能力的比值N将计算空间数据按照(N_CPU-N_GPU) N N进行划分, 其中,CPU设备的计算空间数据大小为(N_CPU-N_GPU)/[(N_CPU-N_GPU)+N_GPU*N];GPU设备的计算空间数据大小为N*N_GPU/[(N_CPU-N_GPU)+N_GPU*N]。进一步地,管理节点将参与计算的数据广播到各个计算节点,具体包括管理节点利用消息传输接口并行地将参与计算的数据广播到计算节点。进一步地,CPU设备调用GPU计算线程与GPU设备协同完成一部分计算,同时并行 调用CPU计算线程完成另一部分计算,具体包括CPU设备调用GPU计算线程,初始化GPU设备,向GPU设备传递计算空间数据;在 通过一个接收线程接收到数据后,控制GPU设备将该数据对于划分给GPU设备的计算空间 数据进行相应部分的计算,直至对所有接收的数据计算结束;同时并行调用CPU计算线程 用接收到的数据对于划分给CPU设备的计算空间数据进行相应部分的计算,直至所有接收 的数据计算结束。进一步地,GPU计算线程在GPU设备中开辟两块缓冲区用于缓存数据,并创建两个流标志;当 具有第一流标志的数据到来后向第一缓存区传输,并调用GPU计算核心用该第一缓存区的 数据对于计算空间数据进行计算;当具有第二流标志的数据到来后向第二缓存区传输,并 调用GPU计算核心用该第二缓存区的数据对计算空间数据进行计算。进一步地,还涉及计算网络的存储设备;CPU设备调用GPU计算线程控制GPU设备完成相应的计算后,还包括导出计算的 计算空间数据,以及释放GPU资源;在并行调用CPU计算线程完成相应的计算后,还包括将CPU计算线程与GPU计算 线程各自计算的计算空间数据写回该存储设备。进一步地,该基于图形处理器的计算网络为叠前时间偏移计算网络,该计算空间 数据为成像空间数据,参与计算的数据为参与计算的道数据。为了解决上述技术问题,本发明提供了一种基于图形处理器的计算网络系统,包 括管理节点、多个计算节点以及存储设备,其中管理节点,用于获取计算网络中计算节点的个数,根据计算空间大小开辟每一计 算节点的内存;将从存数设备读取的参与计算的数据广播到各个计算节点; 计算节点,用于根据本节点的图形处理器GPU设备的个数和CPU核数开辟CPU计 算线程和GPU计算线程,并划分计算空间数据;通过调用GPU计算线程与GPU设备协同完成 一部分计算,通过并行调用CPU计算线程完成另一部分计算;
存储设备,至少用于存储参与计算的数据。
进一步地,计算网络系统为叠前时间偏移计算网络系统,计算空间数据为成像空 间数据,参与计算的数据为参与计算的道数据;管理节点获取计算节点的个数为M,根据成像空间大小为S为每个计算节点各开 辟大小为S/M的内存,用于各计算节点存储本地的成像空间数据;计算节点获取本节点所有CPU设备的核数共为N_CPU,GPU设备个数为N_GPU,则 开辟(N_CPU-N_GPU)个CPU计算线程和N_GPU个GPU线程;根据N_CPU、N_GPU及GPU设备 与CPU设备计算能力的比值N将成像空间数据按照(N_CPU-N_GPU) N N进行划分,其 中,CPU设备的成像空间数据大小为(N_CPU-N_GPU)/[(N_CPU_N_GPU)+N_GPU*N];GPU设备成像空间数据大小为N*N_GPU/[(N_CPU_N_GPU)+N_GPU*N]。进一步地,管理节点利用消息传输接口(MPI)并行地将参与计算的道数据广播到计算节点;CPU设备调用GPU计算线程初始化GPU设备,向GPU设备传递成像空间数据;在通 过一个接收线程接收到道数据后,控制GPU设备用道数据对划分给GPU设备的成像空间数 据进行相应部分的计算,直至对所有接收的道数据计算结束;同时并行调用CPU计算线程 用接收到的道数据对划分给CPU设备的成像空间数据进行相应部分的计算,直至所有接收 的道数据计算结束。进一步地,CPU设备调用的GPU计算线程在GPU设备中开辟两块缓冲区用于缓存道数据,并创 建两个流标志;当具有第一流标志的道数据到来后向第一缓存区传输,并调用GPU计算核 心用该第一缓存区的道数据对成像空间数据进行计算;当具有第二流标志的道数据到来后 向第二缓存区传输,并调用GPU计算核心用该第二缓存区的道数据对成像空间数据进行计
笪弁。进一步地,CPU设备调用GPU计算线程控制GPU设备完成相应的计算后,还导出计算的成像空 间数据,并释放GPU资源;在并行调用CPU计算线程完成相应的计算后,还将CPU计算线程 与GPU计算线程各自计算的成像空间数据写回存储设备;存储设备还存储最终计算完成的成像空间数据。为了解决上述技术问题,本发明提供了一种基于图形处理器的计算网络中的计算 节点装置,包括共同计算初始模块、CPU设备、图形处理单元(GPU)设备以及存储模块,其 中共同计算初始模块,分别连接CPU设备和存储模块,用于根据获取的本节点的CPU 核数和GPU设备数开辟GPU计算线程和CPU计算线程,并在存储模块中划分计算空间数据; 将GPU计算线程、CPU计算线程和划分的计算空间数据的地址输出给CPU设备;CPU设备,分别连接GPU设备和存储设备,用于根据GPU计算线程与GPU设备协同 完成一部分计算;根据CPU计算线程完成对收到的道数据和相应地址的成像空间数据的另 一部分计算;
GPU设备,用于在CPU设备的控制下完成对收到的数据和相应的计算空间数据的 部分计算;存储模块,用于至少存储初始的计算空间数据。进一步地,该装置为叠前时间偏移计算网络中的计算节点装置,计算空间数据为 成像空间数据,参与计算的数据为参与计算的道数据;共同计算初始模块获取本节点所有CPU设备的核数共为N_CPU,GPU设备个数为 N_GPU,则开辟(N_CPU-N_GPU)个CPU计算线程和N_GPU个GPU线程;根据N_CPU、N_GPU及 GPU设备与CPU设备计算能力的比值N将成像空间数据按照(N_CPU-N_GPU) N N进行 划分,其中,CPU设备的成像空间数据大小为(N_CPU-N_GPU)/[(N_CPU_N_GPU)+N_GPU*N];GPU设备成像空间数据大小为N*N_GPU/[(N_CPU_N_GPU)+N_GPU*N]。进一步地,CPU设备调用GPU计算线程初始化GPU设备,向GPU设备传递成像空间数据;在通 过一个接收线程接收到道数据后,控制GPU设备用道数据对划分给GPU设备的成像空间数 据进行相应部分的计算,直至对所有接收的道数据计算结束;同时并行调用CPU计算线程 用接收到的道数据对划分给CPU设备的成像空间数据进行相应部分的计算,直至所有接收 的道数据计算结束。进一步地,CPU设备还在控制GPU设备完成相应的计算后,将计算的成像空间数据导出到存 储模块中,并释放GPU资源;在完成本CPU设备相应的计算并保存到存储模块后,将从该存 储模块中读取的成像空间数据上传给计算网络中的存储设备进行存储。进一步地,CPU设备调用的GPU计算线程在GPU设备中开辟两块缓冲区用于缓存道数据,并创 建两个流标志;当具有第一流标志的道数据到来后向第一缓存区传输,并调用GPU计算核 心用该第一缓存区的道数据对成像空间数据进行计算;当具有第二流标志的道数据到来后 向第二缓存区传输,并调用GPU计算核心用该第二缓存区的道数据对成像空间数据进行计
笪弁。本发明充分利用了 CPU/GPU混合异构架构,通过构建基于CPU/GPU混合架构节点 的集群系统,在传统的CPU集群计算的基础上,通过采用CPU/GPU协同计算以实现对GPU操 作的加速,同时通过采用CPU/GPU共同计算以实现大型计算应用的最优化。此外,通过采用 成像空间在CPU设备与GPU设备上的划分来实现这两类计算设备间的负载均衡,并通过采 用GPU设备的双流双缓冲策略以及GPU设备与IO开销的异步调用来达到时间的相互覆盖, 从而实现了一个高效的GPU集群计算方案。


图1为本发明的基于图形处理器的计算网络系统实施例的架构示意图;图2为图1所示的系统实施例中CPU设备与GPU设备共同参与计算的示意图3为图1所示的系统实施例中CPU设备与GPU设备数据划分方式示意图;图4为本发明的用于基于图形处理器的计算网络系统中的节点装置实施例的结 构框图;图5为本发明的用于基于图形处理器的计算网络中的方法实施例的流程图。
具体实施例方式以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。下面例举的实 施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。如图1所示,是本发明的基于图形处理器的计算网络系统实施例的架构;在该系 统实施例中,使用了 6个计算节点(即服务器节点0 5)、1个管理节点(即服务器节点 6)以及一个存储设备,每个计算节点包含两个CPU设备和两个GPU设备,计算空间大小为 12GB ;计算节点之间通过以太网或高IB(InfiniBand)网与千兆交换机和万兆交换机互联; 其中管理节点,用于在系统启动后获取计算节点个数,根据计算空间大小为计算节点 开辟内存;将从存储设备中读取的参与计算的数据广播给各计算节点;计算节点,用于在系统启动后由CPU设备获取本地的CPU核数和GPU设备数,据此 开辟CPU计算线程和GPU计算线程,并划分计算空间数据;其中GPU计算线程用于CPU设备 与GPU设备协同完成一部分计算;CPU计算线程则用于CPU设备完成另一部分计算;存储设备,用于存储最终计算完成的计算空间结果数据。譬如,将上述系统实施例运用于石油行业的叠前时间偏移计算中,其中计算空间 例如为叠前时间偏移计算中的成像空间,参与计算的数据例如为道数据。管理节点获取的计算节点个数为6,根据成像空间大小为12GB为每个计算节点 各开辟2GB(12/6)内存,用作各个计算节点本地的成像空间。管理节点利用消息传输接口 (MPI, Message Passing Interface)进行粗粒度并行操作,将从存储设备读取的参与计算 的道数据广播到各个计算节点。每个计算节点利用多线程进行中粒度并发计算操作,其中计算线程的个数与节点 上CPU的核数相同;各计算节点是按照(SPMDJingle-ProgramMultiple-Data)模式进行编 程,并使用额外的一个接收线程进行道数据的接收和处理。每一计算节点的CPU设备获知两个CPU设备的核数总共为8,GPU设备个数为2, 因此两个CPU设备共需开辟6个CPU计算线程和2个GPU计算线程,如图2所示。根据CPU 设备的核数N_CPU、GPU设备的个数N_GPU及GPU设备与CPU设备计算能力的比值N,将成像 空间按照6(N_CPU-N_GPU) N N在CPU设备和GPU设备上进行划分,如图3所示,其中6 比值的成像空间数据为两个CPU设备计算所用,即CPU设备成像空间大小为6/(6+2N)GB ;N 比值的成像空间数据为每一个GPU设备计算所用,即两个GPU设备空间大小为N*2/(6+2N) GB。其中,GPU计算线程在系统启动后完成对GPU设备的初始化,并将划分给GPU设备 的成像空间数据传递给GPU设备;在等待道数据到来后,将道数据传递给GPU设备中的计算 核心进行相应的计算,直至对所有到来的道数据计算完毕,将GPU计算核心计算的成像空 间数据导出,并释放GPU资源。
其中,CPU计算线程在等待道数据到来后将道数据传递给CPU计算核心进行相应 的计算,直至所有到来的道数据计算完毕,将CPU计算核心计算的成像空间数据导出。GPU计算线程的数据传输采用双流、双缓冲策略,即GPU计算线程首先在GPU设备 中开辟两块缓冲区用于缓存道数据,并创建两个流标志;当具有第一流标志的道数据到来 后向第一缓冲区传输,并调用GPU计算核心用该第一缓冲区的道数据对成像空间数据进行 计算,上述操作为异步操作;当具有第二流标志的道数据到来后向第二缓冲区传输,并调用 GPU计算核心用该第二缓冲区的道数据对成像空间数据进行计算;这样可以形成第一流的 计算与第二流的传输在时间上相互覆盖,由此提高工作效率。计算节点将本节点所处理的成像空间数据返回到存储设备中进行存储。本发明针对上述系统实施例,相应地还提供了计算节点装置的实施例,其结构如 图4所示,包括共同计算初始模块410、CPU设备420、GPU设备430以及存储模块440 ;其 中共同计算初始模块410,分别连接CPU设备420和存储模块440,用于根据获取的 本节点的CPU核数和GPU设备数开辟GPU计算线程和CPU计算线程,并在存储模块440中 划分计算空间数据;将开辟的计算线程和划分的计算空间数据地址输出给CPU设备420 ;CPU设备420,分别连接GPU设备420和存储模块440,用于根据GPU计算线程与 GPU设备协同完成一部分计算;根据CPU计算线程完成对收到的道数据和相应地址的成像 空间数据的另一部分计算;GPU设备430,用于在CPU设备420的控制下完成对收到的数据和相应的计算空间 数据的一部分计算;存储模块440,用于存储初始的计算空间数据,并存储由CPU设备420和GPU设备 430分别计算的计算空间数据。CPU设备420还在控制GPU设备430完成相应的计算后,将计算的成像空间数据 导出到存储模块440中,并释放GPU资源;在本CPU设备完成相应的计算并保存到存储模块 440后,将从存储模块440中读取的计算空间数据上传给计算网络中的存储设备进行存储。在上述装置实施例中,要求GPU设备支持通用计算或统一计算设备架构(CUDA, Compute Unified Device Architecture) / 幵放式计算语言(OpenCL)技术。本发明针对上述系统实施例,相应地还提供了基于图形处理器的计算网络中的方 法实施例,其流程如图5所示,包括510:管理节点获取计算网络中计算节点的个数,根据计算空间大小开辟每一计算 节点的内存;例如将上述实施例运用于石油行业的叠前时间偏移计算中,计算空间大小譬如为 叠前时间偏移计算中的成像空间大小。管理节点获取的计算节点个数为6,每一计算节点 上具有两个CPU设备和两个GPU设备;根据成像空间大小为12GB,为每个计算节点各开辟 2GB(12/6)内存,用作各个计算节点本地的成像空间。520 计算节点根据本节点的GPU设备个数和CPU核数开辟CPU计算线程和GPU计 算线程,并划分计算空间数据;例如,用于叠前时间偏移计算的计算节点根据CPU与GPU的计算能力,如在相同成 像空间下CPU与GPU处理相同道数据的时间比例为N 1,根据该N的数值进行CPU设备和GPU设备对成像空间数据的划分。假设CPU设备的核数总共为N_CPU,GPU设备的个数为 N_GPU,则分别属于CPU设备与GPU设备成像空间数据的大小比值为(N_CPU-N_GPU) N_ GPU*N ;单个CPU线程的成像空间大小与单个GPU设备的成像空间大小比值为1 N ;图3 则描述了 CPU设备与GPU设备对于成像空间数据的划分方式。计算节点的两个CPU设备的核数总共为8,GPU设备个数为2,因此CPU设备共需 开辟6个CPU计算线程和2个GPU计算线程。根据CPU设备的核数8、GPU设备的个数2及 GPU设备与CPU设备计算能力的比值N,将成像空间数据按照6 N N进行划分,其中6 比值的成像空间数据为两个CPU设备计算所用,即CPU设备成像空间大小为6/ (6+2N) GB ;N 比值的成像空间数据为每一个GPU设备计算所用,即两个GPU设备空间大小为N*2/(6+2N) GB。530 =CPU设备调用GPU计算线程初始化GPU设备,向GPU设备传递计算空间数据;GPU设备的初始化、IO传输以及GPU内核的资源释放等等,都由GPU计算线程通过 调用GPU计算核心来执行,而不需调用CPU计算核心。531 =CPU设备调用CPU计算线程等待参与计算的数据到来后进行相应部分的计 算,直至所有数据计算结束;CPU线程调用CPU计算核心执行该部分计算。540 =CPU设备通过接收线程接收到数据后,控制GPU设备进行相应部分的计算,直 至所有数据计算结束;GPU设备的IO数据传输和内核调用均采用异步方式进行,其中IO数据传输需要 在GPU设备上开辟两个缓冲区,对应于IO数据传输的两个流分别进行操作。这种IO流操 作与GPU内核计算的时间可以相互覆盖。550 :CPU设备将GPU设备计算的计算空间数据导出,并释放GPU资源;560 =CPU设备将CPU计算线程与GPU计算线程的数据写回存储设备,并结束计算 线程的操作。由上述步骤530、540 550构成了本发明的CPU设备与GPU设备协同计算的流 程;该协同计算流程与步骤531 —起则形成了本发明的CPU设备与GPU设备共同计算的流 程。CPU计算线程与GPU计算线程在各自的计算核心的调用上形成并发处理,由CPU和GPU 共同承担本节点上的总体成像空间数据的计算。上述方法实施例提出了 CPU设备与GPU设备协同计算并结合二者共同计算的新模 式。其中,协同计算是指,对于高并行度、计算密集型任务交给GPU设备进行高速计 算,因此要求GPU设备支持通用计算或CUDA/OpenCL技术;CPU设备在处理一些高复杂逻辑 任务的同时,控制GPU进行高速计算的工作。共同计算是指,CPU设备除了控制GPU设备和复杂逻辑任务之外,还参与与GPU设 备目的一致的密集型计算任务。本发明的上述系统、方法实施例所涉及的集群系统为CPU/GPU混合异构架构系 统,其中每个计算节点都包含一或多个CPU设备或GPU设备。在上述系统、方法实施例中,计算空间的划分方式可根据计算节点个数进行自动 调优,即当计算节点个数发生变化时,重新对计算空间进行优化划分。每一计算节点内的计算空间数据划分方式可根据CPU核数与GPU设备个数进行自动调优,亦即当计算节点的CPU 核数和/或GPU设备个数发生变化时,重新对计算空间数据进行优化划分。本发明通过构建基于CPU/GPU混合架构节点的集群系统,通过采用CPU/GPU协同 计算以实现对GPU操作的加速,同时通过采用CPU/GPU共同计算以实现对于叠前时间偏移 这类大型计算的最优化。此外,通过采用成像空间在CPU设备与GPU设备上的划分来实现 这两类计算设备间的负载均衡,并通过采用GPU设备的双流双缓冲策略以及GPU设备与IO 开销的异步调用来达到时间的相互覆盖,从而给出一个高效的GPU集群计算方案。当然,本发明例举的上述系统、装置及方法不仅适用于叠前时间偏移计算,而且还 适用于其它一些基于CPU/GPU混合架构实现的细粒度、高密集度和高并发度的算法领域 中,譬如金融分析中的Black Scholes方法、MonteCarlo方法;生命科学中的三维电镜重构 方法;生物医疗中的CT设备内的运算方法等。以上说明仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范 围为准。
权利要求
1.一种基于图形处理器的计算网络中的方法,涉及所述计算网络中的管理节点和多个 计算节点,该方法包括管理节点获取计算网络中计算节点的个数,根据计算空间大小开辟每一计算节点的内存;计算节点根据本节点的图形处理器GPU设备的个数和CPU核数开辟CPU计算线程和 GPU计算线程,并划分计算空间数据;所述管理节点将参与计算的数据广播到各个计算节点;CPU设备调用GPU计算线程与 所述GPU设备协同完成一部分计算,同时并行调用CPU计算线程完成另一部分计算。
2.按照权利要求1所述的方法,其特征在于,管理节点获取计算网络中计算节点的个 数,根据计算空间大小开辟每一计算节点的内存,具体包括管理节点获取计算网络中计算节点的个数为M,根据计算空间大小为S为每个计算节 点各开辟大小为S/M的内存,用于各计算节点存储本地的计算空间数据。
3.按照权利要求1所述的方法,其特征在于,计算节点根据本节点的GPU设备的个数和 CPU核数开辟CPU计算线程和GPU计算线程,并划分计算空间数据,具体包括所述计算节点获取本节点所有CPU设备的核数共为N_CPU,GPU设备个数为N_GPU,则 开辟(N_CPU-N_GPU)个CPU计算线程和N_GPU个GPU线程;根据所述N_CPU、所述N_GPU及 GPU设备与CPU设备计算能力的比值N将所述计算空间数据按照(N_CPU-N_GPU) N N 进行划分,其中,所述CPU设备的计算空间数据大小为(N_CPU-N_GPU)/[(N_CPU-N_GPU)+N_GPU*N];所述GPU设备的计算空间数据大小为N*N_GPU/[(N_CPU-N_GPU)+N_GPU*N]。
4.按照权利要求1至3任一项所述的方法,其特征在于,所述管理节点将参与计算的数 据广播到各个计算节点,具体包括所述管理节点利用消息传输接口并行地将所述参与计算的数据广播到所述计算节点。
5.按照权利要求4所述的方法,其特征在于,所述CPU设备调用GPU计算线程与所述 GPU设备协同完成一部分计算,同时并行调用CPU计算线程完成另一部分计算,具体包括所述CPU设备调用GPU计算线程,初始化所述GPU设备,向所述GPU设备传递所述计算 空间数据;在通过一个接收线程接收到数据后,控制所述GPU设备将所述数据对于划分给 所述GPU设备的计算空间数据进行相应部分的计算,直至对所有接收的数据计算结束;同 时并行调用所述CPU计算线程用接收到的数据对于划分给所述CPU设备的计算空间数据进 行相应部分的计算,直至所有接收的数据计算结束。
6.按照权利要求5所述的方法,其特征在于,所述GPU计算线程在所述GPU设备中开辟两块缓冲区用于缓存数据,并创建两个流标 志;当具有第一流标志的数据到来后向第一缓存区传输,并调用GPU计算核心用该第一缓 存区的数据对于计算空间数据进行计算;当具有第二流标志的数据到来后向第二缓存区传 输,并调用GPU计算核心用该第二缓存区的数据对计算空间数据进行计算。
7.按照权利要求1所述的方法,其特征在于,还涉及计算网络的存储设备;所述CPU设备调用所述GPU计算线程控制所述GPU设备完成相应的计算后,还包括导出计算的计算空间数据,以及释放GPU资源;在并行调用所述CPU计算线程完成相应的计算后,还包括将所述CPU计算线程与所述 GPU计算线程各自计算的计算空间数据写回该存储设备。
8.按照权利要求1至3、5、6、7任一项所述的方法,其特征在于,所述基于图形处理器的 计算网络为叠前时间偏移计算网络,所述计算空间数据为成像空间数据,所述参与计算的 数据为参与计算的道数据。
9.一种基于图形处理器的计算网络系统,包括管理节点、多个计算节点以及存储设备, 其中管理节点,用于获取计算网络中计算节点的个数,根据计算空间大小开辟每一计算节 点的内存;将从存数设备读取的参与计算的数据广播到各个计算节点;计算节点,用于根据本节点的图形处理器GPU设备的个数和CPU核数开辟CPU计算线 程和GPU计算线程,并划分计算空间数据;通过调用GPU计算线程与所述GPU设备协同完成 一部分计算,通过并行调用CPU计算线程完成另一部分计算; 存储设备,至少用于存储所述参与计算的数据。
10.按照权利要求9所述的系统,其特征在于,所述计算网络系统为叠前时间偏移计 算网络系统,所述计算空间数据为成像空间数据,所述参与计算的数据为参与计算的道数 据;所述管理节点获取所述计算节点的个数为M,根据成像空间大小为S为每个计算节点 各开辟大小为S/M的内存,用于各计算节点存储本地的成像空间数据;所述计算节点获取本节点所有CPU设备的核数共为N_CPU,GPU设备个数为N_GPU,则 开辟(N_CPU-N_GPU)个CPU计算线程和N_GPU个GPU线程;根据所述N_CPU、所述N_GPU及 GPU设备与CPU设备计算能力的比值N将所述成像空间数据按照(N_CPU-N_GPU) N N 进行划分,其中,所述CPU设备的成像空间数据大小为 (N_CPU-N_GPU)/[(N_CPU-N_GPU)+N_GPU*N]; 所述GPU设备成像空间数据大小为 N*N_GPU/[(N_CPU-N_GPU)+N_GPU*N]。
11.按照权利要求10所述的系统,其特征在于,所述管理节点利用消息传输接口(MPI)并行地将所述参与计算的道数据广播到所述 计算节点;所述CPU设备调用GPU计算线程初始化所述GPU设备,向所述GPU设备传递所述成像空 间数据;在通过一个接收线程接收到道数据后,控制所述GPU设备用所述道数据对划分给 所述GPU设备的成像空间数据进行相应部分的计算,直至对所有接收的道数据计算结束; 同时并行调用所述CPU计算线程用接收到的道数据对划分给所述CPU设备的成像空间数据 进行相应部分的计算,直至所有接收的道数据计算结束。
12.按照权利要求11所述的系统,其特征在于,所述CPU设备调用的所述GPU计算线程在所述GPU设备中开辟两块缓冲区用于缓存 道数据,并创建两个流标志;当具有第一流标志的道数据到来后向第一缓存区传输,并调用 GPU计算核心用该第一缓存区的道数据对成像空间数据进行计算;当具有第二流标志的道数据到来后向第二缓存区传输,并调用GPU计算核心用该第二缓存区的道数据对成像空间 数据进行计算。
13.按照权利要求10至12任一项所述的系统,其特征在于,所述CPU设备调用所述GPU计算线程控制所述GPU设备完成相应的计算后,还导出计 算的成像空间数据,并释放GPU资源;在并行调用所述CPU计算线程完成相应的计算后,还 将所述CPU计算线程与所述GPU计算线程各自计算的成像空间数据写回所述存储设备;所述存储设备还存储最终计算完成的成像空间数据。
14.一种基于图形处理器的计算网络中的计算节点装置,其特征在于,包括共同计算初 始模块、CPU设备、图形处理单元(GPU)设备以及存储模块,其中共同计算初始模块,分别连接CPU设备和存储模块,用于根据获取的本节点的CPU核数 和GPU设备数开辟GPU计算线程和CPU计算线程,并在存储模块中划分计算空间数据;将所 述GPU计算线程、所述CPU计算线程和划分的所述计算空间数据的地址输出给CPU设备;CPU设备,分别连接GPU设备和存储设备,用于根据所述GPU计算线程与GPU设备协同 完成一部分计算;根据所述CPU计算线程完成对收到的道数据和相应地址的成像空间数据 的另一部分计算;GPU设备,用于在CPU设备的控制下完成对收到的数据和相应的计算空间数据的所述 部分计算;存储模块,用于至少存储初始的计算空间数据。
15.按照权利要求14所述的装置,其特征在于,该装置为叠前时间偏移计算网络中的 计算节点装置,所述计算空间数据为成像空间数据,所述参与计算的数据为参与计算的道 数据;所述共同计算初始模块获取本节点所有CPU设备的核数共为N_CPU,GPU设备个数为 N_GPU,则开辟(N_CPU-N_GPU)个CPU计算线程和N_GPU个GPU线程;根据所述N_CPU、所 述N_GPU及GPU设备与CPU设备计算能力的比值N将所述成像空间数据按照(N_CPU_N_ GPU) N N进行划分,其中,所述CPU设备的成像空间数据大小为(N_CPU-N_GPU)/[(N_CPU-N_GPU)+N_GPU*N];所述GPU设备成像空间数据大小为N*N_GPU/[(N_CPU-N_GPU)+N_GPU*N]。
16.按照权利要求15所述的装置,其特征在于,所述CPU设备调用GPU计算线程初始化所述GPU设备,向所述GPU设备传递所述成像空 间数据;在通过一个接收线程接收到道数据后,控制所述GPU设备用所述道数据对划分给 所述GPU设备的成像空间数据进行相应部分的计算,直至对所有接收的道数据计算结束; 同时并行调用所述CPU计算线程用接收到的道数据对划分给所述CPU设备的成像空间数据 进行相应部分的计算,直至所有接收的道数据计算结束。
17.按照权利要求15所述的装置,其特征在于,所述CPU设备还在控制GPU设备完成相应的计算后,将计算的成像空间数据导出到存 储模块中,并释放GPU资源;在完成本CPU设备相应的计算并保存到所述存储模块后,将从 所述存储模块中读取的成像空间数据上传给计算网络中的存储设备进行存储。
18.按照权利要求15至17任一项所述的装置,其特征在于,所述CPU设备调用的所述GPU计算线程在所述GPU设备中开辟两块缓冲区用于缓存 道数据,并创建两个流标志;当具有第一流标志的道数据到来后向第一缓存区传输,并调用 GPU计算核心用该第一缓存区的道数据对成像空间数据进行计算;当具有第二流标志的道 数据到来后向第二缓存区传输,并调用GPU计算核心用该第二缓存区的道数据对成像空间 数据进行计算。
全文摘要
本发明披露了基于图形处理器的计算网络系统、方法及装置,涉及计算网络中的管理节点和多个计算节点,方法包括管理节点获取计算网络中计算节点的个数,根据计算空间大小开辟每一计算节点的内存;计算节点根据本节点的GPU设备的个数和CPU核数开辟CPU计算线程和GPU计算线程,并划分计算空间数据;管理节点将参与计算的数据广播到各个计算节点;CPU设备调用GPU计算线程与GPU设备协同完成一部分计算,同时并行调用CPU计算线程完成另一部分计算。本发明通过采用CPU/GPU协同计算、共同计算实现了大型计算应用的高速化和最优化。
文档编号G06F15/173GK102135949SQ20111004954
公开日2011年7月27日 申请日期2011年3月1日 优先权日2011年3月1日
发明者吴庆, 张清, 谢海波, 赵开勇 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1