掌桥专利:专业的专利平台
掌桥专利
首页

面向软件超结点的OpenCL编程框架构建方法和装置

文献发布时间:2023-06-19 10:05:17


面向软件超结点的OpenCL编程框架构建方法和装置

技术领域

本申请涉及异构型计算机系统技术领域,特别是涉及一种面向软件超结点的OpenCL编程框架构建方法、装置、计算机设备和存储介质。

背景技术

异构计算以其高性能、高能效的特点在高性能计算领域得到不断发展,涌现出越来越多的专用加速器,如GPU、FPGA、DSP、AI加速器等等。通常,加速器是以PCIe(PeripheralComponent Interconnect Express,快速外围组件互连)外设的形式连接到主机端CPU上,构成紧耦合的异构计算结点,再由多个结点构建并行系统。这种方式计算高效但不易扩展,当出现新型加速器时,很难加入已经构建好的高性能计算系统。

针对以上问题,我们设计并构建了一种阵列异构型计算机系统,在硬件层面,将加速器单独构成阵列,通过高速互联网络与已有系统互联,当加速器需要替换或出现新型加速器时,只需要在加速器阵列中增加或减少结点即可,易于扩展。同时,构建了一种面向阵列异构型计算机系统的软件超结点环境。软件超结点环境将多个物理上分离的结点组织为一个虚拟的异构结点,超结点内包括一个主结点和若干个从结点,每个物理结点上均运行一个常驻后台的守护程序,负责管理超结点内部的信息,主要包括超结点中物理结点的数量、所在结点的身份(主结点或从结点)、所在结点在超结点内部的编号、超结点内所有结点的通信端口号等信息。守护维护了一片共享内存,可以与同一结点内其他进程进行通信,此外,守护也支持超结点内任意结点间的通信。

但现有技术中,还没有对应的编程框架,能够实现对超结点内部和跨超结点的计算资源的访问。

发明内容

基于此,有必要针对上述技术问题,提供一种能够实现对超结点内部和跨超结点的计算资源进行访问的面向软件超结点的OpenCL编程框架构建方法、装置、计算机设备和存储介质。

一种面向软件超结点的OpenCL编程框架构建方法,所述方法包括:

获取阵列异构型计算机系统的物理结点列表,构建所述阵列异构型计算机系统的软件超结点;所述软件超结点中包括一个主结点和多个从结点;所述物理结点列表中的每个物理结点上均运行一个守护程序;

在所述主结点上启动OpenCL主进程,并初始化所述OpenCL主进程上的第一通信端口,通过所述主结点的守护进程向所述从结点的守护进程广播所述第一通信端口的第一通信端口地址;

在每个接收到所述第一通信端口地址的所述从结点上以及所述主结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,以使所述物理结点根据所述第一通信端口地址,向所述OpenCL主进程发送所述第二通信端口的第二通信端口地址;

通过所述OpenCL主进程将接收到的所有所述第二通信端口地址和所述第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有所述物理结点,以使所述物理结点上的所述OpenCL-handler进程接收所述全局地址信息,完成所述软件超结点OpenCL编程环境的构建。

在其中一个实施例中,所述主结点的守护进程中包含主结点共享内存空间;所述第一通信端口为天河高速通信端口;

在所述主结点上启动OpenCL主进程,并初始化所述OpenCL主进程上的第一通信端口之后,还包括:

将所述第一通信端口地址写入所述主结点共享内存空间。

在其中一个实施例中,还包括:通过所述主结点的守护进程读取所述主结点共享内存空间中的信息,得到所述第一通信端口地址;

获取所述软件超结点内所述从结点的守护进程的从结点进程号,以使所述主结点的守护进程根据所述从结点进程号通过天河高速通信库接口向所述从结点的守护进程广播所述第一通信端口地址。

在其中一个实施例中,还包括:在通过所述主结点的守护进程向所述从结点的守护进程广播所述第一通信端口地址之后,通过所述主结点的守护进程向所述从结点的守护进程发送启动OpenCL-handler进程的消息。

在其中一个实施例中,还包括:所述从结点的守护进程中包括从结点共享内存空间;

在每个接收到所述第一通信端口地址的所述从结点上,通过所述从结点的守护进程将所述第一通信端口地址写入从结点共享内存空间;所述第一通信端口地址是所述从结点通过天河高速通信库接口接收到的;

通过所述从结点的守护进程使用天河高速通信库接口接收所述主结点的守护进程发送的启动OpenCL-handler进程的消息;

在所述主结点和所述从结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程对应的第二通信端口;所述第二通信端口为天河高速通信端口;

通过所述主结点和所述从结点的OpenCL-handler进程读取所述主结点和所述从结点共享内存空间中的信息,得到所述第一通信端口地址;

以使所述主结点和所述从结点的OpenCL-handler进程根据所述第一通信端口地址,向所述OpenCL主进程发送所述第二通信端口的第二通信端口地址;所述第二通信端口地址是所述主结点和所述从结点通过天河高速通信库接口发送的。

在其中一个实施例中,还包括:所述全局地址信息为全局数组;通过所述OpenCL主进程将接收到的所有所述第二通信端口地址和所述第一通信端口地址进行打包,并将打包得到的全局数组发送给所有所述物理结点,以使所述物理结点上的所述OpenCL-handler进程接收所述全局数组,完成所述软件超结点OpenCL编程环境的构建。

在其中一个实施例中,还包括:通过所述OpenCL主进程将接收到的所有所述第二通信端口地址和所述第一通信端口地址进行打包,并将打包得到的全局地址信息,以使所述OpenCL主进程通过天河高速通信库接口将所述全局地址信息发送给所有所述物理结点;

以使所述物理结点上的所述OpenCL-handler进程通过天河高速通信库接口接收所述全局地址信息,完成所述软件超结点OpenCL编程环境的构建。

在其中一个实施例中,还包括:所述全局地址信息为全局数组。

一种面向软件超结点的OpenCL编程框架搭建装置,所述装置包括:

软件超结点模块,用于获取阵列异构型计算机系统的物理结点列表,构建所述阵列异构型计算机系统的软件超结点;所述软件超结点中包括一个主结点和多个从结点;每个所述物理结点上均运行一个守护程序;

第一通信端口地址广播模块,用于在所述主结点上启动OpenCL主进程,并初始化所述OpenCL主进程上的第一通信端口,通过所述主结点的守护进程向所述从结点的守护进程广播所述第一通信端口的第一通信端口地址;

第二通信端口地址发送模块,用于在每个接收到所述第一通信端口地址的所述从结点上以及所述主结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,以使所述物理结点根据所述第一通信端口地址,向所述OpenCL主进程发送所述第二通信端口的第二通信端口地址;

全局地址信息建立模块,用于通过所述OpenCL主进程将接收到的所有所述第二通信端口地址和所述第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有所述物理结点,以使所述物理结点上的所述OpenCL-handler进程接收所述全局地址信息,完成所述软件超结点OpenCL编程环境的构建。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取阵列异构型计算机系统的物理结点列表,构建所述阵列异构型计算机系统的软件超结点;所述软件超结点中包括一个主结点和多个从结点;所述物理结点列表中的每个物理结点上均运行一个守护程序;

在所述主结点上启动OpenCL主进程,并初始化所述OpenCL主进程上的第一通信端口,通过所述主结点的守护进程向所述从结点的守护进程广播所述第一通信端口的第一通信端口地址;

在每个接收到所述第一通信端口地址的所述从结点上以及所述主结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,以使所述物理结点根据所述第一通信端口地址,向所述OpenCL主进程发送所述第二通信端口的第二通信端口地址;

通过所述OpenCL主进程将接收到的所有所述第二通信端口地址和所述第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有所述物理结点,以使所述物理结点上的所述OpenCL-handler进程接收所述全局地址信息,完成所述软件超结点OpenCL编程环境的构建。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取阵列异构型计算机系统的物理结点列表,构建所述阵列异构型计算机系统的软件超结点;所述软件超结点中包括一个主结点和多个从结点;所述物理结点列表中的每个物理结点上均运行一个守护程序;

在所述主结点上启动OpenCL主进程,并初始化所述OpenCL主进程上的第一通信端口,通过所述主结点的守护进程向所述从结点的守护进程广播所述第一通信端口的第一通信端口地址;

在每个接收到所述第一通信端口地址的所述从结点上以及所述主结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,以使所述物理结点根据所述第一通信端口地址,向所述OpenCL主进程发送所述第二通信端口的第二通信端口地址;

通过所述OpenCL主进程将接收到的所有所述第二通信端口地址和所述第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有所述物理结点,以使所述物理结点上的所述OpenCL-handler进程接收所述全局地址信息,完成所述软件超结点OpenCL编程环境的构建。

上述面向软件超结点的OpenCL编程框架构建方法、装置、计算机设备和存储介质,通过在软件超结点的主结点上启动OpenCL主进程并初始化OpenCL主进程上的第一通信端口,通过主结点上的守护进程将第一通信端口广播给软件超结点的从结点,当主结点和从结点都获取到第一通信端口地址后,在所有物理结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,每个物理结点根据第一通信端口将本地的第二通信端口发送给OpenCL主进程,OpenCL主进程将接收到的所有第二通信端口地址和第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有物理结点,以使物理结点上的OpenCL-handler进程接收全局地址信息,完成软件超结点OpenCL编程环境的构建。通过本发明的方法,可以利用OpenCL编程接口访问阵列异构型计算机系统中其他计算结点上的资源,实现对软件超结点的使用。

附图说明

图1为一个实施例中面向软件超结点的OpenCL编程框架构建方法的应用场景图;

图2为一个实施例中面向软件超结点的OpenCL编程框架构建方法的流程示意图;

图3为一个实施例中面向软件超结点的OpenCL编程框架搭建装置的结构框图;

图4为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的面向软件超结点的OpenCL编程框架构建方法,可以应用于如图1所示的应用环境中。其中,软件超结点中包含一个主结点和若干个从结点,主结点中包含守护进程、OpenCL主进程、OpenCL-handler进程,从结点中包含守护进程和OpenCL-handler进程。软件超结点内主结点和从结点之间可以通信,结点内的进程之间可以通信。

在一个实施例中,如图2所示,提供了一种面向软件超结点的OpenCL编程框架构建方法,以该方法应用于图1中的软件超结点为例进行说明,包括以下步骤:

步骤202,获取阵列异构型计算机系统的物理结点列表,构建阵列异构型计算机系统的软件超结点。

软件超结点是由阵列异构型计算系统中多个物理结点组成的。物理结点可以是通用处理器,也可以是多种专用加速器,如GPU(Graphics Processing Unit,图形处理单元)、FPGA(Field-programmable Gate Array,现场可编程逻辑门阵列)、DSP(Digital SignalProcessor,数字信号处理器)、AI(Artificial Intelligence,人工智能)加速器等等。在硬件层面,这些物理结点单独构成阵列,通过高速互联网络与已有系统互联。软件超结点中包括一个主结点和多个从结点;物理结点列表中的每个物理结点上均运行一个守护程序。守护程序在软件超结点的后台上常驻,软件超结点内的主结点维护的共享内存空间内存有所有从结点守护进程的通信端口信息,所有从结点维护的共享内存空间内存有主结点守护进程的通信端口信息,即软件超结点内的主结点和从结点之间可以互相通信。

步骤204,在主结点上启动OpenCL主进程,并初始化OpenCL主进程上的第一通信端口,通过主结点的守护进程向从结点的守护进程广播第一通信端口的第一通信端口地址。

OpenCL运行时环境主要由主线程、命令调度器和命令处理器三个部分组成。主线程接收OpenCL命令,并将命令存入命令队列;命令调度器从命令队列中取命令,并发送给命令处理器;命令处理器将命令分发给不同的OpenCL设备执行。主结点上启动的OpenCL主进程将负责OpenCL编程框架的命令调度,初始化OpenCL主进程的第一通信端口地址,OpenCL主进程的第一通信端口地址用于OpenCL主进程与主结点内的其他进程以及其他从结点进行通信。

步骤206,在每个接收到第一通信端口地址的从结点上以及主结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,以使物理结点根据第一通信端口地址,向OpenCL主进程发送第二通信端口的第二通信端口地址。

在每个物理结点上拉起OpenCL-handler进程,OpenCL-handler进程将负责OpenCL编程框架的命令处理,初始化OpenCL-handler进程的第二通信端口地址,OpenCL-handler进程的第二通信端口地址用于从结点与主结点进行通信。主结点和各个从结点根据第一通信端口地址,向OpenCL主进程发送本地的第二通信端口。

步骤208,通过OpenCL主进程将接收到的所有第二通信端口地址和第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有物理结点,以使物理结点上的OpenCL-handler进程接收全局地址信息,完成软件超结点OpenCL编程环境的构建。

OpenCL主进程接收到所有物理结点发送的第二通信端口地址后,将本地的第一通信端口地址和接收到的所有第二通信端口地址进行打包,OpenCL主进程将打包得到的全局地址信息发送给所有物理结点,以使物理结点上的OpenCL-handler进程接收全局地址信息,当所有物理结点上的OpenCL-handler进程都获得了其他结点OpenCL-handler进程的通信端口地址后,各个物理结点的OpenCL-handler进程就可以互相通信,实现对超结点内部的计算资源的访问,完成软件超结点OpenCL编程环境的构建。

上述面向软件超结点的OpenCL编程框架构建方法中,通过在软件超结点的主结点上启动OpenCL主进程并初始化OpenCL主进程上的第一通信端口,通过主结点上的守护进程将第一通信端口广播给软件超结点的从结点,当主结点和从结点都获取到第一通信端口地址后,在所有物理结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,每个物理结点根据第一通信端口将本地的第二通信端口发送给OpenCL主进程,OpenCL主进程将接收到的所有第二通信端口地址和第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有物理结点,以使物理结点上的OpenCL-handler进程接收全局地址信息,完成软件超结点OpenCL编程环境的构建。通过本发明的方法,可以利用OpenCL编程接口访问阵列异构型计算机系统中其他计算结点上的资源,实现对软件超结点的使用。

在其中一个实施例中,主结点的守护进程中包含主结点共享内存空间;第一通信端口为天河高速通信端口;在主结点上启动OpenCL主进程,并初始化OpenCL主进程上的第一通信端口之后,还包括:将第一通信端口地址写入主结点共享内存空间。

当一个阵列异构型计算机系统内有多个软件超结点时,由于软件超结点之间的消息传递是通过MPI通信编程接口实现的,如果软件超结点内部也使用MPI通信编程接口进行消息传递,会造成两层MPI环境相互干扰,无法正确执行消息传递。因此,本实施例中使用天河高速通信接口来实现软件超结点内的消息传递。

主结点内的守护进程维护着一片共享内存空间,在主结点上启动OpenCL主进程,并初始化OpenCL主进程上的第一通信端口之后,将第一通信端口地址写入主结点共享内存空间,以使主结点内的守护进程可以读取到OpenCL主进程的第一通信端口地址。

在其中一个实施例中,通过主结点的守护进程读取主结点共享内存空间中的信息,得到第一通信端口地址;获取软件超结点内从结点的守护进程的从结点进程号,以使主结点的守护进程根据从结点进程号通过天河高速通信库接口向从结点的守护进程广播第一通信端口地址。

软件超结点内的主结点维护的共享内存空间内存有所有从结点守护进程的通信端口信息,所有从结点维护的共享内存空间内存有主结点守护进程的通信端口信息,即软件超结点内的主结点和从结点之间可以互相通信。

软件超结点内主结点守护进程和从结点守护进程的通信是通过天河高速通信库接口实现的,可以防止在进行跨软件超结点的计算机资源访问时,与外层MPI环境产生冲突。

在其中一个实施例中,在通过主结点的守护进程向从结点的守护进程广播第一通信端口地址之后,还包括:通过主结点的守护进程向从结点的守护进程发送启动OpenCL-handler进程的消息。

通过主结点的守护进程向从结点的守护进程发送启动OpenCL-handler进程的消息,以使从结点在接收到启动OpenCL-handler进程的消息后拉起OpenCL-handler进程。

在其中一个实施例中,从结点的守护进程中包括从结点共享内存空间;在每个接收到第一通信端口地址的从结点上,通过从结点的守护进程将第一通信端口地址写入从结点共享内存空间;第一通信端口地址是从结点通过天河高速通信库接口接收到的;通过从结点的守护进程接收主结点的守护进程发送的启动OpenCL-handler进程的消息;在主结点和从结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程对应的第二通信端口;第二通信端口为天河高速通信端口;通过主结点和从结点的OpenCL-handler进程读取主结点和从结点共享内存空间中的信息,得到第一通信端口地址;以使主结点和从结点的OpenCL-handler进程根据第一通信端口地址,向OpenCL主进程发送第二通信端口的第二通信端口地址;第二通信端口地址是主结点和从结点通过天河高速通信库接口发送的。

通过从结点的守护进程将接收到的第一通信端口地址写入其维护的共享内存空间,在从结点拉起OpenCL-handler进程后,OpenCL-handler进程可以从共享内存空间中读取第一通信端口地址,从而与OpenCL主进程进行通信,将OpenCL-handler进程对应的第二通信端口地址发送给OpenCL主进程。OpenCL-handler进程与OpenCL主进程之间的通信也是通过天河高速通信库接口实现的,可以防止在进行跨软件超结点的计算机资源访问时,与外层MPI环境产生冲突。

在其中一个实施例中,全局地址信息为全局数组;通过OpenCL主进程将接收到的所有第二通信端口地址和第一通信端口地址进行打包,并将打包得到的全局数组,以使OpenCL主进程通过天河高速通信库接口将全局数组发送给所有物理结点;以使物理结点上的OpenCL-handler进程通过天河高速通信库接口接收全局数组,完成软件超结点OpenCL编程环境的构建。

全局数组中包含软件超结点内所有物理结点的通信端口地址。

在发送全局地址信息时,OpenCL主进程与OpenCL-handler进程之间的通信也是通过天河高速通信库接口实现的,可以防止在进行跨软件超结点的计算机资源访问时,与外层MPI环境产生冲突。

应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图3所示,提供了一种面向软件超结点的OpenCL编程框架搭建装置,包括:软件超结点模块302、第一通信端口地址广播模块304、第二通信端口地址发送模块306和全局地址信息建立模块308,其中:

软件超结点模块302,用于获取阵列异构型计算机系统的物理结点列表,构建阵列异构型计算机系统的软件超结点;软件超结点中包括一个主结点和多个从结点;每个物理结点上均运行一个守护程序;

第一通信端口地址广播模块304,用于在主结点上启动OpenCL主进程,并初始化OpenCL主进程上的第一通信端口,通过主结点的守护进程向从结点的守护进程广播第一通信端口的第一通信端口地址;

第二通信端口地址发送模块306,用于在每个接收到第一通信端口地址的从结点上以及主结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程的第二通信端口,以使物理结点根据第一通信端口地址,向OpenCL主进程发送第二通信端口的第二通信端口地址;

全局地址信息建立模块308,用于通过OpenCL主进程将接收到的所有第二通信端口地址和第一通信端口地址进行打包,并将打包得到的全局地址信息发送给所有物理结点,以使物理结点上的OpenCL-handler进程接收全局地址信息,完成软件超结点OpenCL编程环境的构建。

第一通信端口地址广播模块304还用于在主结点上启动OpenCL主进程,并初始化OpenCL主进程上的第一通信端口之后将第一通信端口地址写入主结点共享内存空间。

第一通信端口地址广播模块304还用于通过主结点的守护进程读取主结点共享内存空间中的信息,得到第一通信端口地址;获取软件超结点内从结点的守护进程的从结点进程号,以使主结点的守护进程根据从结点进程号通过天河高速通信库接口向从结点的守护进程广播第一通信端口地址。

第一通信端口地址广播模块304还用于在通过主结点的守护进程向从结点的守护进程广播第一通信端口地址之后,通过主结点的守护进程向从结点的守护进程发送启动OpenCL-handler进程的消息。

第二通信端口地址发送模块306还用于在每个接收到第一通信端口地址的从结点上,通过从结点的守护进程将第一通信端口地址写入从结点共享内存空间;第一通信端口地址是从结点通过天河高速通信库接口接收到的;通过从结点的守护进程使用天河高速通信库接口接收主结点的守护进程发送的启动OpenCL-handler进程的消息;在主结点和从结点上启动OpenCL-handler进程,并初始化OpenCL-handler进程对应的第二通信端口;第二通信端口为天河高速通信端口;通过主结点和从结点的OpenCL-handler进程读取主结点和从结点共享内存空间中的信息,得到第一通信端口地址;以使主结点和从结点的OpenCL-handler进程根据第一通信端口地址,向OpenCL主进程发送第二通信端口的第二通信端口地址;第二通信端口地址是主结点和从结点通过天河高速通信库接口发送的。

全局地址信息建立模块308还用于通过OpenCL主进程将接收到的所有第二通信端口地址和第一通信端口地址进行打包,并将打包得到的全局地址信息,以使OpenCL主进程通过天河高速通信库接口将全局地址信息发送给所有物理结点;以使物理结点上的OpenCL-handler进程通过天河高速通信库接口接收全局地址信息,完成软件超结点OpenCL编程环境的构建。

关于面向软件超结点的OpenCL编程框架搭建装置的具体限定可以参见上文中对于面向软件超结点的OpenCL编程框架构建方法的限定,在此不再赘述。上述面向软件超结点的OpenCL编程框架搭建装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种面向软件超结点的OpenCL编程框架构建方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 面向软件超结点的OpenCL编程框架构建方法和装置
  • 面向软件超结点的OpenCL编程框架构建方法和装置
技术分类

06120112410289