混合计算环境以及混合计算环境中的数据处理方法 【技术领域】
本发明的领域涉及数据处理,或者更具体地,涉及用于混合计算环境中的数据处理的方法、装置和产品。
背景技术
1948年EDVAC计算机系统的开发常常被作为计算机时代的开端。从那时起,计算机系统已经演进为极端复杂的设备。今天的计算机比诸如EDVAC的早期系统要复杂得多。计算机系统通常包括硬件和软件组件的结合、应用程序、操作系统、处理器、总线、存储器、输入/输出(“I/O”)设备等。随着半导体处理和计算机架构的发展将计算机的性能提升的越来越高,已经演进出了更为复杂的计算机软件来利用更高性能的硬件,这导致今天的计算机系统较之仅仅几年以前也要强大许多。
当今计算机系统的进步使得一些计算环境现在包括不同架构的核心组件,其一同操作以完成数据处理任务。在本说明书中,将这种计算环境描述为“混合”环境,其表示此类环境包括具有不同架构的主机计算机和加速器。与很多非混合计算环境相比,尽管混合计算环境在数据处理上计算能力更为强大且更为有效,但是这种混合计算环境仍然为自动化计算体系的学科提出了真正的挑战。
【发明内容】
用于混合计算环境中数据处理的方法、装置和产品,所述混合计算环境包括:具有主机计算机架构的主机计算机;具有加速器架构的加速器,对于特定类型计算功能的执行速度,所述加速器架构相对于主机计算机架构而言是优化的;所述主机计算机和所述加速器彼此适配,以便由系统级消息传递模块进行数据通信;以及在所述主机计算机上执行的主机应用进程。
在按照本发明实施方式的此类混合计算环境中,数据处理包括:在主机应用进程的命令之下,由系统级消息传递模块启动加速器上的执行线程;由系统级消息传递模块将该执行线程的进程标识符(“PID”)返回给主机应用进程;以及由主机应用进程管理加速器上的执行线程,就如同该执行线程是主机计算机上的执行线程一样。
根据附图中所示的本发明示例性实施方式的更为详细的描述,本发明的上述以及其他目的、特征和优点将会显而易见,其中在附图中,相似的标号通常表示本发明示例性实施方式的相似部分。
【附图说明】
图1展示了按照本发明实施方式的有助于数据处理的示例混合计算环境的框图。
图2展示了按照本发明实施方式的有助于数据处理的示例性混合计算环境的框图。
图3展示了按照本发明实施方式的有助于数据处理的另一示例性混合计算环境的框图。
图4展示了按照本发明实施方式的有助于数据处理的又一示例性混合计算环境的框图。
图5展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的示例性方法的流程图。
图6展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。
图7展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的又一示例性方法的流程图。
图8展示了示出按照本发明实施方式的用于混合计算环境中的数据处理地另一示例性方法的流程图。
图9展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的又一示例性方法的流程图。
图10展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。
【具体实施方式】
参考附图来描述按照本发明实施方式的用于混合计算环境中的数据处理的示例性方法、装置和产品,从图1开始。图1展示了按照本发明实施方式的有助于数据处理的示例混合计算环境(100)的框图。本说明书中使用的术语“混合计算环境”是这样的计算环境,其包括可操作地耦合至计算机存储器的计算机处理器,从而以执行计算机程序指令的形式来实现数据处理,其中计算机程序指令存储在存储器中并且在处理器上运行。而且,图1示例中的混合计算环境(100)包括至少一个具有主机架构的主机计算机,其与具有加速器架构的加速器协同操作,其中主机架构和加速器架构是不同的架构。在此示例中,主机架构和加速器架构由架构性寄存器来表征,寄存器可由每个架构上执行的计算机程序指令来访问,寄存器诸如为指令寄存器、程序计数器、存储器索引寄存器、堆栈指针等。换言之,两种架构的架构性寄存器的数量、类型、结构及其之间的关系是不同的,以至于为了在混合计算环境的主机计算机上执行而编译的计算机程序指令通常本质上无法由该混合计算环境的任何关联加速器来执行。
混合计算环境的示例包括数据处理系统,其继而包括:一个或多个主机计算机,每个都具有x86处理器;以及加速器,其架构性寄存器实现PowerPC指令集。为了在主机计算机中的x86处理器上执行而编译的计算机程序指令,其本质上无法由加速器中的PowerPC处理器来执行。而且,读者将认识到,本说明书中描述的某些示例混合计算环境基于在LANL Roadrunner项目(为了新墨西哥州的“州鸟”而命名)中开发的洛斯阿拉摩斯国家实验室(“LANL”)超级计算机架构,该超级计算机架构因率先生成了“petaflop”而出名,即每秒一千万亿次浮点操作。LANL超级计算机架构包括具有双核AMD Opteron处理器的多个主机计算机,其耦合至具有IBM Cell处理器的多个加速器,Opteron处理器和Cell处理器具有不同的架构。
图1的示例混合计算环境(100)包括多个计算节点(102)、I/O节点(108)以及服务节点(112)。计算节点(102)通过用于数据通信的网络(101)彼此耦合,并且与I/O节点(108)和服务节点(112)耦合。数据通信网络(101)可以实现为以太网、互联网协议(“IP”)、PCIe、无限带宽、光纤信道或者具有本领域技术的读者将会想到的其他网络。
在图1的示例混合计算环境(100)中,计算节点执行主要的用户级计算机程序执行,从服务节点(112)上执行的服务器应用(124)接收管理服务(诸如初始程序加载等),并通过I/O节点(108)获得对数据存储(116)和I/O功能(118、120)的访问。在图1的示例中,为了进行数据通信,I/O节点(108)通过使用高速以太网或者本领域技术人员将会想到的其他构造类型的数据通信构造而实现的局域网(“LAN”)(104)连接至I/O设备(116、118、120)。图1的示例混合计算环境(100)中的I/O设备包括:数据存储设备(116)形式的用于计算环境的非易失性存储器;打印机(118)形式的用于混合计算环境的输出设备;以及计算机终端(120)形式的用户(126)I/O设备,其执行服务应用接口(122),服务应用接口(122)为用户提供接口,以用于配置混合计算环境中的计算节点以及由计算节点发起主要用户级计算机程序指令的执行。
在图1的示例中,每个计算节点包括具有主机计算机架构的主机计算机(110)以及具有加速器架构的一个或多个加速器(104)。主机计算机(110)是如下意义上的“主机”:其是执行计算节点与任何特定计算节点之外的混合计算环境的其他组件之间的接口功能的主机计算机。换言之,它是执行初始引导过程、开启自检、基本I/O功能、从服务器节点接受用户级程序加载等的主机计算机。加速器(104)称为“加速器”是在于,每个加速器具有加速器架构,对于特定类型的计算功能的执行速度而言,该加速器架构相对于主机计算机架构是优化的。这种加速的计算功能例如包括向量处理、浮点运算以及本领域技术人员将会想到的其他功能。
由于图1示例中的每个计算节点包括主机计算机和加速器,具有本领域技术的读者将会认识到,每个计算节点表示图1的较大混合计算环境(100)中较小的、独立的混合计算环境。换言之,不仅计算节点(102)的组合能够形成混合计算环境(100),而且每个单个计算节点也可以视作独立的、较小的混合计算环境。继而,图1示例中的混合计算环境(100)可以视为包括9个独立的、较小的混合计算环境,针对每个计算节点存在一个混合计算环境,其一起形成了图1的混合计算环境(100)。
在图1的每个计算节点(102)中,主机计算机(110)以及一个或多个加速器(104)彼此适配,以便由系统级消息传递模块(“SLMPM”)(146)以及至少两个不同构造类型的两个或更多个数据通信构造(106、107)来进行数据通信。SLMPM(146)是计算机程序指令的模块或者库,其向用户级应用显露应用编程接口(“API”),以便在主机计算机(110)与加速器(104)之间执行基于消息的数据通信。按照本发明的实施方式,可以改进以用作SLMPM的基于消息的数据通信库的示例包括:
●消息传递接口或称“MPI”,两个版本的行业标准接口,最初在Supercomputing(超级计算)1994上提出,未获得任何主要标准体的支持,
●LANL超级计算机的数据通信和同步接口(“DACS”),
●POSIX线程库(“Pthreads”):一种用于分布式、多线程处理的IEEE标准,
●开放多处理接口(“OpenMP”):一种用于并行编程的业界支持的规范,以及
●本领域技术人员将会想到的其他库。
数据通信构造(106、107)是数据通信硬件和软件的配置,其实现主机计算机与加速器之间的数据通信耦合。数据通信构造类型的示例包括外围设备互连(“PCI”)、PCI express(“PCIe”)、以太网、无限带宽、光纤信道、小型计算机系统接口(“SCSI”)、外围串行高级技术附接(“eSATA”)、通用串行总线(“USB”)以及本领域技术人员将会想到的其他类型。
在图1的示例混合计算环境(100)中,主机应用进程(167)在主机计算机(110)上执行。本说明书中所使用的术语“进程”是在计算机架构上顺序执行的计算机程序的实例,其配置为并发地执行多个计算机程序。主机应用进程是在主机计算机(110)上执行的主机应用的实例。按照本发明实施方式的混合计算机环境中的数据处理可以这样来执行:由系统级消息传递模块(146)在主机应用进程(167)的命令下启动加速器(104)上的执行线程(169);由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)返回给主机应用进程(167);以及由主机应用进程(167)管理加速器(104)上的执行线程(169),就如同执行线程(169)是主机计算机(110)上的执行线程一样。本说明书中使用的术语“执行线程”表示计算机程序执行的基本单元。线程是计算机程序将自己分为两个或者更多同时或者伪同时运行的任务的一种方式。单个进程可以具有多个并发运行的线程,每个线程执行不同的任务,诸如等待事件或者执行进程无需完成连续执行的耗时任务。当线程的执行完成时,也即当执行线程所执行的任务完成时,线程通常挂起或者销毁。
构成图1所示的混合计算环境(100)的计算节点、数据通信构造、网络、I/O设备、服务节点、I/O节点等的布置仅仅用于说明目的,而非用于限制本发明。支持按照本发明实施方式的数据处理的混合计算环境可以包括图1中未示出的其他节点、网络、设备和架构,这是本领域技术人员将会想到的。尽管图1示例中的混合计算环境(100)仅仅包括9个计算节点(102),读者将会注意到,按照本发明实施方式的混合计算环境可以包括任意数目的计算节点。截止到撰写时为止,作为具有多个计算节点的混合计算环境的示例,LANL超级计算机包含超过12,000个计算节点。这种混合计算环境中的网络和数据通信构造可以支持多种数据通信协议,例如包括TCP(传输控制协议)、IP(互联网协议)以及本领域技术人员将会想到的其他协议。除了图1所示的硬件平台,本发明的各种实施方式还可以在各种硬件平台上实现。
为了进一步说明,图2展示了按照本发明实施方式的有助于数据处理的示例性混合计算环境(100)的框图。图2的混合计算环境(100)包括四个计算节点。与图1的计算节点类似,图2示例中的每个计算节点可以表示小型的、独立的混合计算环境,其一起构成了较大的混合计算环境。图2示例中的一个计算节点(103)在扩展视图中示出,以便辅助对此类混合计算环境(100)更为详细的说明。如计算节点(103)的扩展视图中所示,图2示例中的每个计算节点(102、103)包括主机计算机(110)。主机计算机(110)包括计算机处理器(152),其通过高速存储器总线(153)可操作地耦合至计算机存储器,即随机访问存储器(“RAM”)(142)。每个主机计算机(110)中的处理器(152)具有一组架构性寄存器(154),其定义了主机计算机架构。
每个主机节点还包括一个或多个加速器(104、105)。每个加速器(104、105)包括计算机处理器(148),其通过高速存储器总线(151)可操作地耦合至RAM(140)。在主机计算机和加速器(104、105)的RAM(140、142)中,存储有操作系统(145)。在按照本发明实施方式的混合计算环境的主机计算机和加速器中有用的操作系统包括:UNIXTM、LinuxTM、Microsoft XPTM、Microsoft VistaTM、Microsoft NTTM、AIXTM、IBM的i5/OSTM以及本领域技术人员将想到的其他操作系统。不要求主机计算机中的操作系统与加速器上使用的操作系统相同。
每个加速器(104、105)的处理器(148)具有一组架构性寄存器(150),其定义了加速器架构。每个加速器的处理器(148)的架构性寄存器(150)不同于主机计算机(110)中的处理器(152)的架构性寄存器(154)。由于具有不同的架构,主机计算机和加速器通常不支持相同的指令集,尽管这也有可能。这样,通常不能期望为了在加速器(104)的处理器(148)上执行而编译的计算机程序指令直接在主机计算机(110)的处理器(152)上执行,反之亦然。而且,由于主机处理器与加速器之间硬件架构上的典型差异,通常不能期望为了在主机计算机(110)的处理器(152)上执行而编译的计算机程序指令直接在加速器(104)的处理器(148)执行,即使加速器支持主机的指令集。对于特定类型的计算功能的执行速度而言,相对于主机计算机架构,图2示例中的加速器架构是优化的。换言之,对于加速器进行了优化的一个或多个功能而言,这些功能在加速器上的执行将快于其在主机计算机的处理器上执行。
在图2的示例中,主机计算机(110)和加速器(104、105)相互适配,以便由系统级消息传递模块(“SLMPM”)(146)以及至少两个不同构造类型的两个数据通信构造(128、130)进行数据通信。在此示例中,为了支持主机计算机(110)与加速器(104)之间的基于消息的数据通信,主机计算机(110)和加速器(104)二者都具有SLMPM(146),从而在用于数据通信的任何耦合的两端都可以发起和接收基于消息的通信。而且,在图2的示例中,主机计算机(110)和加速器(104、105)二者彼此适配,以便由PCIe构造(130)通过PCIe通信适配器(160)以及由以太网构造(128)通过以太网通信适配器(161)来进行数据通信。使用PCIe和以太网是为了进行说明,而不是限制本发明。本领域的技术人员读者将会立刻认识到,按照本发明实施方式的混合计算环境可以包括其他构造类型的构造,例如,PCI、无限带宽、光纤通道、SCSI、eSATA、USB等。
在此示例中,通常,SLMPM(146)进行操作以用于按照本发明实施方式的混合计算环境(100)中的数据处理,包括:监控主机计算机(110)与加速器(104、105)之间的多个数据通信模式的数据通信性能;接收按照数据通信模式从主机计算机向加速器传输数据的请求(168);确定是否按照所请求的数据通信模式来传输数据;以及如果不按照所请求的数据通信模式来传输数据,则:选择另一数据通信模式,并且按照所选的数据通信模式来传输数据。在图2的示例中,所监控的性能被示出为监控性能数据(174),所述性能数据(174)在计算节点(103)的操作期间由SLMPM(146)存储在主机计算机(110)的RAM(142)中。
数据通信模式规定了数据通信构造类型、数据通信链路以及数据通信协议(178)。数据通信链路(156)是主机计算机与加速器之间的数据通信连接。在图2的示例中,主机计算机(110)与加速器(104)之间的链路(156)可以包括PCIe连接(138)或者通过以太网网络(106)实现的以太网连接(131、132)。在图2的示例中,主机计算机(110)与加速器(105)之间的链路(156)可以包括PCIe连接(136)或者通过以太网网络(106)实现的以太网连接(131、134)。在图2的示例中,在主机计算机与加速器之间尽管对于每种构造类型仅示出了一条链路,但是具有本领域技术的读者将会立即认识到,对于每种构造类型可以存在任意数目的链路。
数据通信协议是用于将信息从主机计算机(110)发送至加速器(104)所需的数据表示、信令、认证以及错误检测的一组标准规则。在图2的示例中,SLMPM(146)可以选择用于主机计算机(110)与加速器之间的数据通信的多个协议(178)之一。这些协议(178)的示例包括:利用发送和接收操作(181)来执行的共享存储器传送(“SMT”)(180)以及利用PUT和GET操作(183)来执行的直接存储器访问(“DMA”)(182)。
共享存储器传送是一种数据通信协议,用于将主机计算机与加速器之间的数据传递到为此目的而分配的共享存储器空间(158),使得在任何时刻仅有该数据的一个实例驻留在存储器中。考虑以下描述,作为图2的主机计算机(110)与加速器(104)之间的示例共享存储器传送。应用(166)请求(168)按照SMT(180)协议将数据(176)从主机计算机(110)传输到加速器(104)。此类请求(168)可以包括针对此类共享存储器而分配的存储器地址。在此示例中,将共享存储器分段(158)示为位于加速器(104)上的存储器位置,但是读者将会认识到,共享存储器分段可以位于加速器(104)上、主机计算机(110)上、主机计算机和加速器二者上,或者甚至是完全脱离本地计算节点(103),只要该分段能够在需要时由主机和加速器进行访问即可。为了执行共享存储器传送,主机计算机(110)上的SLMPM(146)通过类似于TCP协议中的握手过程,与加速器(104)上执行的SLMPM(146)建立数据通信连接。SLMPM(146)继而创建包括报头和净荷数据的消息(170),并且将该消息插入特定构造的特定链路的消息传输队列中。在创建消息时,SLMPM在消息的报头内插入加速器的标识以及在加速器上执行的进程的标识。SLMPM还将来自请求(168)的存储器地址插入消息中,或者插在报头中,或者作为净荷数据的一部分。SLMPM还在消息(170)中插入待传输的数据(176),作为消息净荷数据的一部分。继而由通信适配器(160、161)将该消息跨过构造(128、130)传输至在加速器(104)上执行的SLMPM,在此,SLMPM按照消息中的存储器地址将净荷数据(即所传输的数据(176))存储在RAM(140)中的共享存储器地址(158)中。
直接存储器访问(“DMA”)是一种数据通信协议,用于在降低计算机处理器(152)操作负担的情况下在主机计算机与加速器之间传递数据。DMA传送实际上实现了从一个位置到另一位置(通常是从主机计算机到加速器,或者反之亦然)的存储器块的复制。主机计算机和加速器之一或者二者可以包括DMA引擎,其为用于直接存储器访问的计算机硬件和软件的聚合。直接存储器访问包括在降低其处理器操作负担的情况下读、写加速器和主机计算机的存储器。例如,加速器的DMA引擎可以为了DMA的目的而对所分配的存储器进行读写,同时,加速器的处理器执行计算机程序指令或者继续进行操作。换言之,计算机处理器可以发布指令以执行DMA传送,但是由DMA引擎而非处理器来执行该传送。
在图2的示例中,只有加速器(104)包括DMA引擎(184)而主机计算机则没有。在此实施方式中,主机计算机上的处理器(152)向加速器发送按照SMT协议的消息,指示加速器执行远程“GET”操作,从而发起数据从主机到加速器的DMA传送。在图2示例中所示的配置中,加速器(104)是仅有的包含DMA引擎的设备,这仅仅是为了说明而不是限制。具有本领域技术的读者将立即认识到,在多种实施方式中,主机计算机和加速器二者都可以包括DMA引擎,而在其他实施方式中,只有主机计算机包括DMA引擎。
为了在图2的混合计算环境中实现DMA协议,分配某些存储器区域以供DMA引擎访问。分配此类存储器可以独立于其他加速器或者主机计算机而进行,或者可以由另一加速器或者主机计算机发起或是与之合作完成。例如,按照SMA协议分配的共享存储器区域可以是DMA引擎可用的存储器区域。换言之,图2的混合计算环境(100)中DMA数据通信的初始建立和实现可以至少部分地通过共享存储器传送或者其他带外数据通信协议(相对于DMA引擎而言是带外的)来执行。为了实现DMA传送的存储器分配的延迟相对较高,但是一旦分配,DMA协议提供了高速的宽带数据通信,与很多其他数据通信协议相比,其需要较小的处理器利用率。
直接“PUT”操作是将数据从源设备上的DMA引擎传输到目标设备上的DMA引擎的一种模式。直接“PUT”操作允许在较少涉及目标设备处理器的情况下将数据传输并存储在目标设备上。为了实现在直接“PUT”操作中最少地涉及目标设备的处理器,源DMA引擎将待存储在目标设备上的数据随同目标设备上的存储位置的特定标识一起传送。源DMA知道目标设备上的该特定存储位置,因为目标DMA引擎已经事先将用于在目标设备上存储数据的该特定存储位置提供给了源DMA引擎。
远程“GET”操作(有时称为“rGET”)是将数据从源设备上的DMA引擎传输到目标设备上的DMA引擎的另一种模式。远程“GET”操作允许在较少涉及源设备处理器的情况下将数据传输并存储在目标设备上。为了实现在远程“GET”操作中最少地涉及源设备的处理器,源DMA引擎将数据存储在目标DMA引擎可访问的存储位置中,通过共享存储器传输直接地或者带外地将该存储位置以及准备传输的数据的大小通知给目标DMA引擎,而目标DMA引擎从存储位置取回数据。
监控多个数据通信模式的数据通信性能可以包括:监控数据通信链路(156)的消息传输请求队列(162-165)中请求(168)的数目。在图2的示例中,每个消息传输请求队列(162-165)与一个特定的数据通信链路(156)相关联。每个队列(162-165)包括用于消息(170)的条目,其包括将由通信适配器(160、161)沿着与队列相关联的数据通信链路(156)进行传输的数据(176)。
监控多个数据通信模式的数据通信性能还可以包括:监控共享存储器空间(158)的利用率。在图2的示例中,共享存储器空间(158)分配在加速器的RAM(140)中。利用率是已经存储了要发送给目标设备、但尚未被目标设备读取或者接收的数据的已分配共享存储器空间所占的比例,其通过跟踪对所分配共享存储器的写和读来进行监控。在图2的混合计算环境(100)中,共享存储器空间(实际上,任何的存储器)是有限的。由此,可以在应用程序(166)的执行期间填充共享存储器空间(158),这样,由于共享存储器空间中的空间限制,从主机计算机(110)到加速器的数据传输可能减慢甚至停止。
在本发明的某些实施方式中,图2的混合计算环境(100)可以配置用于作为并行计算环境来操作,其中,应用程序(166)的两个或者更多实例在并行环境中的两个或者更多主机计算机(110)上执行。在这种实施方式中,监控跨过多种数据通信模式的数据通信性能还可以包括:跨过在并行计算环境中的两个或者更多主机计算机上执行的应用程序(166)的多个实例,聚集数据通信性能信息(174)。聚集的性能信息(174)可以用来计算数据通信模式的平均通信延迟、特定构造类型的数据通信链路中的平均请求数目、并行计算环境中的多个主机计算机和加速器之间的平均共享存储器利用率以及本领域技术人员将会想到的其他内容等。SLMPM可以将此类测量的任意组合用于以下二者:确定是否按照所请求的数据通信模式来传输数据;以及如果不按照所请求的数据通信模式来传输数据,则选择用于传输数据的另一数据通信模式。
图2的SLMPM(146)从主机计算机(110)上的应用程序(166)接收按照某种数据通信模式将数据(176)从主机计算机(110)传输到加速器(104)的请求。此类数据(176)可以包括为了由加速器(104)执行而编译的计算机程序指令、用于加速器(104)上执行的应用程序的工作数据片、或者计算机程序指令与工作数据片的某些组合。接收按照某种数据通信模式传输数据(176)的请求(168)可以包括:接收由指定的构造类型来传输数据的请求;接收通过指定的数据通信链路将数据从主机计算机传输到加速器的请求;或者接收按照某种协议将数据从主机计算机传输到加速器的请求。
按照某种数据通信模式来传输数据(176)的请求(168)可以实现为通过API对SLMPM(146)的用户级应用功能调用,该调用按照协议、构造类型以及链路而明确地指定数据通信模式。实现为功能调用的请求可以按照功能调用本身的操作来指定协议。例如,dacs_put()功能调用可以表示通过由SLMPM显露的、实现为DACS库的API的调用,以按照DMA“PUT”操作的默认模式传输数据。从调用应用和编写调用应用的程序员的角度看,此类调用表示请求SLMPM库按照默认模式来传输数据,其中程序员已知默认模式与显式API调用相关联。按照本发明的实施方式,可以对所调用的功能(在此示例中是dacs_put())进行编码,以使其自己确定是否按照所请求的数据通信模式(也即,按照所调用功能的默认模式)来传输数据。在另一示例中,dacs_send()指令可以表示通过由SLMPM显露的、实现为DACS库的API的调用,以按照SMT“send”操作的默认模式来传输数据,其中按照本发明的实施方式,再次对所调用的功能dacs_send()进行编码,以使其自己确定是否按照所请求的模式来传输数据。
功能调用中特定加速器的标识可以有效地指定构造类型。此类功能调用可以包括特定加速器的标识作为调用参数。例如,通过使用PCIe ID,特定加速器的标识有效地指定了PCI构造类型。在另一类似的示例中,通过使用以太网适配器的媒体接入控制(“MAC”)地址,特定加速器的标识有效地指定了以太网构造类型。替代通过指定构造类型的方式从主机上执行的应用来实现功能调用的加速器ID,功能调用可以仅包括特定加速器的全局唯一标识作为调用参数,从而仅指定从主机计算机到该加速器的链路,而非指定构造类型。在这种情况下,所调用的功能可以实现默认的构造类型,以便与特定的协议结合使用。例如,如果在SLMPM中调用的功能配置有PCIe作为与DMA协议结合使用的默认构造类型,并且SLMPM接收到了按照DMA协议(DMA PUT或者DMA远程GET操作)将数据传输至加速器(104)的请求,则所调用的功能显式地指定用于DMA的默认构造类型,即PCIe构造类型。
在每种构造类型只有一条链路将单个主机计算机适配于单个加速器的混合计算环境中,功能调用的参数中特定加速器的标识还可以有效地指定链路。在每种构造类型具有不止一条链路将主机计算机与加速器相适配(例如,两条PCIe链路将主机计算机(110)连接至加速器(104))的混合计算环境中,所调用的SLMPM功能可以实现用于功能调用参数中所标识的加速器的默认链路,以用于加速器标识所指定的构造类型。
取决于所监控的性能(174),图2示例中的SLMPM(146)还确定是否按照所请求的数据通信模式来传输数据(176)。确定是否按照所请求的数据通信模式来传输数据(176)可以包括:确定是否通过所请求的构造类型来传输数据;确定是否通过所请求的数据通信链路来传输数据;或者确定是否按照所请求的协议来传输数据。
在按照本发明实施方式的混合计算环境中,若跨过数据通信模式而监控数据通信性能包括监控数据通信链路的消息传输请求队列(162-165)中的请求数目,则确定是否按照所请求的数据通信模式来传输数据(176)可以如下进行:确定消息传输请求队列中的请求数目是否超过了预定阈值。在按照本发明实施方式的混合计算环境中,若监控多个数据通信模式的数据通信性能包括监控共享存储器空间的利用率,则确定是否按照所请求的数据通信模式来传输数据(176)可以如下进行:确定共享存储器空间的利用率是否超过了预定阈值。
如果不按照所请求的数据通信模式来传输数据,则SLMPM(146)根据所监控的性能来选择用于传输数据的另一数据通信模式,并且按照所选的数据通信模式来传输数据(176)。选择用于传输数据的另一数据通信模式可以包括:根据所监控的性能,选择用来传输数据的另一数据通信构造类型;选择用来传输数据的数据通信链路;以及选择另一数据通信协议。考虑以下示例:所请求的数据通信模式是通过到加速器(104)的PCIe构造(130)的链路(138)而使用PUT操作的DMA传输。如果监控的数据性能(174)指示:与链路(138)相关联的传输消息请求队列(162)中的请求数目超过了预定阈值,则SLMPM可以选择其他构造类型(以太网构造(128))和链路(131、132),以用于传输数据(176)。而且,考虑以下情况,监控的性能(174)指示:共享存储器空间(158)的当前利用率小于预定阈值,而队列(162)中未解决的DMA传输的数目超过预定阈值。在这种情况下,SLMPM(146)也可以选择另一协议,例如共享存储器传送,以用来传输数据(176)。
由SLMPM选择用于传输数据(176)的另一数据通信模式还可以包括:根据数据通信消息大小(172)来选择数据通信协议(178)。根据数据通信消息大小(172)来选择数据通信协议(178)可以通过确定消息大小是否超过预定阈值来执行。对于较大的消息(170),DMA协议可能是优选的协议,因为进行较大消息(170)的DMA传送的处理器利用率通常小于进行相同大小的消息的共享存储器传送的处理器利用率。
如上所述,SLMPM也可以按照所选的数据通信模式来传输数据。按照所选的数据通信模式来传输数据可以包括:由所选的数据通信构造类型来传输数据;通过选择的数据通信链路来传输数据;或者按照所选的协议来传输数据。SLMPM(146)可以如下这样来实现按照所选数据通信模式的数据传输:通过设备驱动指示用于所选数据通信模式的数据通信构造类型的通信适配器,以按照所选的数据通信模式的协议来传输消息(170),其中该消息在消息报头中包括加速器的标识,而在消息净荷中包括要传输的数据(176)。
在图2的示例混合计算环境(100)中,主机应用进程在主机计算机(110)上执行。图2的示例混合计算环境(100)中的数据处理可以这样来执行:在主机应用进程(167)的命令下,由SLMPM(146)启动加速器(104)上的执行线程(169);由SLMPM(146)将执行线程(169)的PID返回给主机应用进程;以及由主机应用进程(167)来管理加速器(104)上的执行线程(169),就如同该执行线程(169)是主机计算机(110)上的执行线程(169)。
在主机应用进程(167)的命令下,由图2的混合计算环境(100)中的示例SLMPM(146)启动加速器(104)上的执行线程(169),可以包括:通过进程间数据通信消息,从主机应用进程(167)接收启动加速器(104)上的执行线程(169)的指令,其中数据通信消息包括执行线程的操作信息。从主机应用进程的角度看,进程间数据通信消息可以是通过API对SLMPM(146)所提供的功能的功能调用。本说明书中使用的术语“操作信息”表示在混合计算环境(100)中用来启动、维护以及终止软件程序、进程、执行线程等的执行的信息。作为启动加速器(104)上执行线程(169)的指令的一部分而被包括的操作信息,可以包括:用于执行线程的执行参数;用于执行线程的环境变量;用于执行线程的可执行文件的名称;将要在其上启动执行线程的加速器的标识,将要从主机计算机(110)传送到加速器(104)的文件的列表,这些文件例如包括用于执行线程的可执行文件、数据文件、配置文件、指定环境变量的值的文件、指定执行参数的值的文件等。启动加速器上的执行线程还可以包括:由加速器(104)上运行的SLMPM(146)的实例执行Unix类型的“fork(分叉)”系统命令,将SLMPM(146)分叉为两个进程,分叉的进程利用包括在指令中的操作信息来执行Unix类型的“exec”系统命令,从而启动加速器(104)上的执行线程(169)。
图2的混合计算环境(100)中的示例SLMPM(146)可以按如下方式将执行线程(169)的PID返回给主机应用进程:在执行“exec”系统命令之前,由加速器(104)上的上述分叉进程执行Unix类型的“getpid”系统命令,其返回分叉进程的PID,也就是稍后执行的执行线程(169)的PID;由分叉进程将返回的PID提供给SLMPM;以及由SLMPM在进程间数据通信消息中将PID返回给主机应用进程(167)。
混合计算环境(100)中的示例主机应用进程(167)管理加速器(104)上的执行线程(169),就如同该执行线程(169)是主机计算机(110)上的执行线程(169)。换言之,并非将加速器(104)上的执行线程(169)作为不同进程的线程来管理,实际上,按照本发明的实施方式,主机应用进程(167)将加速器(104)上的执行线程(169)作为其自己的线程来进行管理。主机应用进程(167)可以通过由SLMPM(146)配置的从执行线程的标准流(诸如,Unix类型的“stdout”和“stderr”)到主机应用进程的标准流的映射,来管理加速器(104)上的执行线程(169)。标准流是执行线程与线程开始执行时的操作环境之间的预先配置的输入和输出通道。标准流支持相同进程的线程之间的数据通信、线程与其进程之间的数据通信,等等。用于线程(169)和进程(167)的标准流可以由SLMPM(146)使用线程与进程之间通过SLMPM的套接字连接来进行映射。随着将执行线程的标准流映射至主机应用进程的标准流,加速器(104)上的执行线程(169)可以与主机应用进程(167)相互传送数据通信,从进程(167)和线程(169)的角度看,就如同二者都运行在相同的处理器上。因此,从进程(167)和线程(169)的角度看,SLMPM有效地对主机计算机与加速器之间存在的断开进行提取或者说桥接。
管理加速器(104)上的执行线程(169)就如同执行线程(169)是主机计算机(110)上的执行线程(169),还可以包括:将执行线程作为主机应用进程的子进程进行管理;响应于加速器上的执行线程的终止,由主机应用进程通过系统级消息传递模块来接收退出数据;或者通过系统级消息传递模块(146)来杀死加速器(104)上的执行线程(169)。
本说明书中使用的术语“子进程”表示由称为父进程的另一进程创建的计算机进程,其中所创建的进程通常从父进程继承其多个属性。进程是使用如上所述的fork-exec系统命令创建的,这样,在执行fork-exec系统命令时,由在加速器(104)上运行的SLMPM(146)的实例来创建包括执行线程(169)的进程。由此,尽管主机应用进程(167)请求执行线程(169)的执行,但响应于在进程中启动执行线程(169),在加速器(104)上运行的SLMPM(146)的实例实际上是该线程(169)的父进程。然而,按照本发明的实施方式,主机应用进程(167)管理执行线程(169),就如同该线程(169)是主机应用进程(167)的子进程,尽管事实上加速器上的SLMPM(146)实际上是该线程的父进程。图2的混合计算环境(100)中的示例主机应用进程(167)可以与运行在加速器(104)上的、执行该执行线程(169)的进程进行交互,就好像执行该执行线程(169)的进程从主机应用进程继承了通常由子进程继承的属性,从而将执行线程(169)作为主机应用进程(167)的子进程来进行管理。此类属性例如可以包括:真实的用户标识符、真实的群组标识符、有效用户标识符、有效群组标识符、进程群组标识符、终端群组标识符、根目录、当前工作目录、信号处理设置以及文件模式创建掩码。此类属性可以由主机应用进程包括在用于启动加速器上执行线程(169)的指令的操作信息中,并且可以在执行如上所述的Unix类型“exec”系统命令时由上述分叉的SLMPM(146)来设置。
图2的混合计算环境(100)中的示例主机应用进程(167)可以响应于加速器上的执行线程(169)的终止,由主机应用进程(167)通过系统级消息传递模块(146)接收退出数据(704),这是通过如下操作来实现:由SLMPM(146)监控加速器上的执行线程(169)的执行;以及响应于执行线程的终止,在进程间数据通信消息中将该退出数据发送至主机应用进程。本说明书中使用的“退出数据”表示响应于执行线程的终止而存在的任何数据。此类退出数据可以包括:退出状态标识符、抛出导致线程终止的异常的计算机程序指令块以及本领域技术人员将会想到的其他数据。
图2的混合计算环境(100)中的示例主机应用进程(167)可以在包括执行线程标识的进程间数据通信消息中发送终止线程(169)的指令,从而通过系统级消息传递模块(146)来杀死加速器(104)上的执行线程(169)。从主机应用进程(167)的角度看,进程间数据通信消息可以是通过API对SLMPM(146)所提供功能的功能调用。线程标识可以实现为线程的唯一标识、加速器标识和线程PID的结合、以及本领域技术人员将会想到的其他方式。响应于该指令,作为运行在加速器(104)上的执行线程(169)的实际父进程,运行在加速器(104)上的SLMPM(146)继而可以终止该线程的执行,这是通过执行Unix类型的“kill”命令来实现,其变量是来自主机应用进程的指令中所指定的PID。
按照本发明的实施方式,图2的混合计算环境(100)中的示例SLMPM(146)还可以配置用于检测主机应用进程(167)的终止,以及响应于终止而杀死加速器(104)上的执行线程(169)。示例SLMPM(146)可以通过持续地或者周期性地检查主机应用进程(167)的执行状态来监控进程的执行,从而检测主机应用进程(167)的终止。如上所述,SLMPM(146)可以利用Unix类型的“kill”命令来杀死加速器(104)上的执行线程(169)。
按照本发明的实施方式,图2的混合计算环境(100)的示例SLMPM(146)还可以配置用于在主机应用进程的命令下执行等待功能,包括:确定加速器上的执行线程是否已经终止;以及在等待功能返回时,告知主机应用进程:加速器上的执行线程已经终止。在主机应用进程的命令下执行等待功能包括确定加速器上的执行线程是否已经终止,这可以包括:由SLMPM(146)从主机应用进程(169)接收作为进程间数据通信消息的、执行等待功能的指令,其中该指令包括在加速器(104)上运行的执行线程(169)的PID。从主机应用进程的角度看,此类指令可以实现为通过API对SLMPM(146)等待功能的功能调用。本说明书中使用的术语“等待功能”是这样的功能,其使得调用进程暂停执行,直到通常由进程标识符标识的另一进程或者执行线程完成执行。在这种情况下,等待功能使得主机应用进程暂停执行,直到运行在加速器(104)上的执行线程完成执行。响应于等待功能的返回,图2示例中的SLMPM(146)可以在进程间数据通信消息中发送加速器上的执行线程已经终止的通知,从而告知主机应用进程(167):加速器(104)上的执行线程(169)已经终止。
为了进一步说明,图3展示了按照本发明实施方式的有助于数据处理的另一示例性混合计算环境(100)的框图。图3的混合计算环境类似于图2的混合计算环境,都包括4个计算节点(102、103),每个计算节点包括具有主机计算机架构的主机计算机(110)和具有加速器架构的加速器(104),其中,对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(110)与加速器(104)彼此适配,以便通过系统级消息传递模块(146)和至少两种不同构造类型的两个或更多数据通信构造(128、130)来进行数据通信。在图3的示例中,主机计算机(110)由以太网构造(128)和PCIe构造(130)适配于加速器(104)。
在计算节点(103)的扩展视图中示出的主机计算机(110)包括x86处理器。x86处理器是这样的处理器,其架构基于Intel x86系列微处理器(386、486、586或者PentiumTM等)的架构性寄存器组。x86处理器的示例包括超微设备(“AMD”)OpteronTM、AMDPhenomTM、AMD Athlon XPTM、AMD Athlon 64TM、Intel NehalamTM、Intel Pentium 4、Intel Core 2Duo、Intel Atom以及本领域技术人员将会想到的其他处理器。图3示例中的x86处理器(152)示出了大部分x86处理器中可见的一组典型的架构性寄存器(154),例如包括:累加器寄存器(“AX”)、基址寄存器(“BX”)、计数器寄存器(“CX”)、数据寄存器(“DX”)、用于字符串操作的源索引寄存器(“SI”)、用于字符串操作的目的地寄存器(“DI”)、堆栈指针(“SP”)、用于保持当前堆栈框架地址的堆栈基指针(“BP”)以及保持当前指令地址的指令指针(“IP”)。
图3示例中的加速器(104)被示为具有Cell宽带引擎架构(“CBEA”)的Cell宽带引擎(“CBE”)。CBEA是由Sony计算机娱乐、东芝以及IBM(称为“STI”的联盟)联合开发的微处理器架构。按照CBEA实现的微处理器有时称作“Cell”处理器或者简称为CBE。CBEA将适度性能的通用POWER架构内核(即,Power处理元件(“PPE”)(148))与称为协处理元件(“SPE”)(308)的流水线化协同处理元件相结合,其中协处理元件(308)极大地加速了多媒体和向量处理应用以及多种其他形式的专用计算。CBE架构强调效率/瓦特,通过延迟将带宽优先级化,以及通过程序代码的简化来支持峰值计算吞吐量。
实现为CBE的图3的加速器(104)包括:主处理器(148),在此例中是Power处理元件(“PPE”);8个全功能协处理器,称为SPE(308);以及连接PPE和SPE的高带宽循环数据总线,称为元件互连总线(“EIB”)(312)。PPE(148)是具有双向多线程内核的POWER架构处理器,其充当8个SPE(308)的控制器。术语“POWER架构”在此表示IBM的不同代的处理器架构,是一个包括基于POWER、PowerPC和Cell架构的所有产品的广义术语。因此,CBE加速器(104)的PPE(148)的架构性寄存器(150)不同于主机计算机(110)的x86处理器(152)的架构性寄存器。图3的PPE(148)包括POWER架构的一组示例架构性寄存器(150),其包括:32个通用寄存器(“GPR”)、32个浮点寄存器(“FPR”)、定点异常寄存器(“XER”)、计数寄存器(“CTR”)、条件寄存器(“CR”)、指令地址寄存器(“IAR”)、链接寄存器(“LR”)以及处理器版本寄存器(“PVR”)。
SPE(308)处理CBE(104)的大部分计算负载。尽管SPE对于向量化浮点代码执行而言是优化的,但SPE还可以执行操作系统,诸如轻量级、修改版本的Linux,其中操作系统存储在SPE上的本地存储器(141)中。图3示例中的每个SPE(308)包括协处理单元(“SPU”)(302),以及存储器流控制器(“MFC”)(310)。SPU(302)是具有128位单指令、用于单精度和双精度指令的多数据(“SIMD”)组织的精简指令集计算(“RISC”)处理器。在某些实现中,SPU可以包含用于指令和数据的256KB内嵌静态RAM(141),其称为本地存储,对于PPE(148)可见的,并且可以由软件直接进行寻址。每个SPU(302)可以支持最多4千兆字节(“GB”)的本地存储存储器。本地存储并非像传统的CPU高速缓存那样操作,因为本地存储对软件不是透明的,而且其也不包含预测要加载哪些数据的硬件结构。SPU(302)还实现不同于PPE的架构性寄存器的架构性寄存器(306),其包括128位、128条目的寄存器文件(307)。SPU(302)可以在单个时钟周期中对16个8位整数、8个16位整数、4个32位整数或者4个单精度浮点数进行操作,以及执行存储器操作。
MFC(310)集成CBE(104)中的SPU(302)。MFC(310)为SPU提供数据传送和同步能力,并且实现与充当CBE(104)的传输集线器的EIB(312)的SPU接口。MFC(310)还实现SPE(308)与PPE(148)之间的通信接口,并充当数据传送引擎,其通过DMA来执行SPU(302)的本地存储(141)与CBE系统存储器RAM(140)之间的大块数据传送。通过将数据传送的任务从SPU(302)交给专用数据传送引擎,数据处理和数据传送并行地进行,这支持诸如软件流水线和双缓冲的高级编程方法。通过提供异步地以及与PPE(148)和SPE(302)上的数据处理并行地执行高性能数据传送的能力,MFC(310)无需在应用层显式地交替数据处理和传送。
图3示例中的SLMPM(146)可以监控主机计算机(110)与加速器(104)之间的多个数据通信模式的数据通信性能;从主机计算机(110)上的应用程序(166)接收按照某种数据通信模式将数据从主机计算机(110)传输到加速器(104)的请求;根据所监控的性能来确定是否按照所请求的数据通信模式来传输数据;以及如果不按照所请求的数据通信模式传输数据,则:根据所监控的性能来选择用于传输数据的另一数据通信模式,以及按照所选的数据通信模式来传输数据。
在图3的示例混合计算环境(100)中,主机应用进程可以在主机计算机(110)上执行,并且在按照本发明实施方式的混合计算环境中,数据处理可以这样来执行:在主机应用进程的命令下,由系统级消息传递模块(146)启动加速器(104)上的执行线程;由系统级消息传递模块(146)将执行线程的PID返回给主机应用进程;以及由主机应用进程管理加速器(104)上的执行线程,就如同该执行线程是主机计算机(110)上的执行线程。
为了进一步说明,图4展示了按照本发明实施方式的有助于数据处理的又一示例性混合计算环境(100)。图4的混合计算环境类似于图2的混合计算环境,都包括4个计算节点(102、103),每个计算节点包括具有主机计算机架构的主机计算机(110)和具有加速器架构的加速器(104),其中,对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。图4示例中的主机计算机(110)与加速器(104)彼此适配,以便通过系统级消息传递模块(146)和至少两种不同构造类型的两个或更多数据通信构造(128、130)来进行数据通信。在图4的示例中,主机计算机(110)由以太网构造(128)和PCIe构造(130)适配于加速器(104)。
图4示出了类似于在LANL超级计算机中实现的混合计算环境的示例。如计算节点(103)的扩展视图所示,实现在LANL超级计算机中的主机计算机(110)包括两个AMD Opteron处理器(155),每个都是双核处理器。主机计算机(110)的每个核(152)在图4的示例中被示为单个、全功能x86处理器核,其中每个核具有其自己的架构性寄存器(154)组。图4示例中的每个处理器核(152)可操作地耦合至RAM(142),RAM(142)中存储有应用程序(166)的实例、SLMPM(146)的实例以及操作系统(145)。在LANL超级计算机的示例中,SLMPM(146)是按照本发明实施方式进行了改进的数据通信和同步(“DACS”)库。
图4示例中的每个x86处理器核(152)通过以太网(128)和PCIe(130)构造耦合至独立的加速器(104),其中加速器(104)实现为如上文针对图3所述的CBE。在此示例中,主机计算机(110)中的每个AMD Opetron处理器(155)的每个核(152)连接到至少一个CBE。在此示例中,尽管Opteron处理器核与CBE(104)的比例是1比1,但是具有本领域技术的读者将会认识到,其他示例实施方式可以实现处理器核与加速器的不同比例,例如1比2、1比3等等。
在图4的示例中,在每个x86处理器核(152)上执行的SLMPM(146)的每个实例可以配置用于:监控跨过主机计算机(110)与连接至处理器核(152)的加速器(104)之间的数据通信模式的数据通信性能;从在主机计算机(110)的处理器核(152)上执行的应用程序(166)的实例接收按照某种数据通信模式将数据从主机计算机(110)传输到加速器(104)的请求;根据所监控的性能来确定是否按照所请求的数据通信模式来传输数据;以及如果不按照所请求的数据通信模式传输数据,则:根据所监控的性能来选择用于传输数据的另一数据通信模式,以及按照所选的数据通信模式来传输数据。
在图4的示例混合计算环境(100)中,主机应用进程可以在主机计算机(110)上执行,并且在按照本发明实施方式的混合计算环境中,数据处理可以这样来执行:在主机应用进程的命令下,由系统级消息传递模块(146)启动加速器(104)上的执行线程;由系统级消息传递模块(146)将执行线程的PID返回给主机应用进程;以及由主机应用进程管理加速器(104)上的执行线程,就如同该执行线程是主机计算机(110)上的执行线程。
为了进一步说明,图5展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的示例性方法的流程图。图5的方法在类似于本说明书中上文描述的混合计算环境中执行。此类混合计算环境包括具有主机计算机架构的主机计算机(图2的110)和具有加速器架构的加速器(图2的104),对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(图2的110)与加速器(图2的104)彼此适配,以便通过SLMPM(图2的146)以及可选地通过至少两种不同构造类型的两个或更多数据通信构造(图2的128、130)来进行数据通信。此类混合计算环境还包括在主机计算机(110)上执行的主机应用进程(167)。
图5的方法包括:由主机应用进程(167)请求(508)启动加速器上的执行线程(169)。请求(508)启动加速器上的执行线程(169)可以包括:在进程间数据通信消息(510)中发送启动加速器上的执行线程(169)的指令,其中该消息(510)包括用于该执行线程的操作信息。从主机应用进程(167)的角度看,消息(510)可以实现为通过API(512)对SLMPM(146)所提供的功能的调用。
图5的方法包括:在主机应用进程(167)的命令下,由系统级消息传递模块(146)启动(502)加速器上的执行线程(169)。在主机应用进程(167)的命令下启动(502)加速器上的执行线程(169),可以响应于数据通信消息(510)中的指令而执行:利用数据通信消息(510)中包括的操作信息来执行Unix类型的fork-exec系统命令。
图5的方法还包括:由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)(506)返回(504)给主机应用进程(167)。将执行线程(169)的PID(506)返回(504)给主机应用进程(167)可以这样来执行:在执行上述Unix类型的“exec”系统命令之前,由分叉的进程执行Unix类型的“getpid”系统命令,其返回分叉进程的PID,也即稍后执行的执行线程(169)的PID;由分叉的进程将返回的PID提供给SLMPM;以及由SLMPM在进程间数据通信消息中将PID提供给主机应用进程(167)。
图5的方法还包括:由主机应用进程(167)来管理(508)加速器上的执行线程(169),就如同该执行线程(169)是主机计算机上的执行线程。管理(508)加速器上的执行线程(169)就如同该执行线程(169)是主机计算机上的执行线程,可以这样来执行:在执行线程(169)启动时,由SLMPM(146)将执行线程(169)的标准流映射为主机应用进程的标准流,以及由主机应用进程(169)来启动、暂停、杀死以及以其他方式控制该线程的操作,就好像该线程在主机计算机上执行一样。
为了进一步说明,图6展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。与图5的方法类似,图6的方法在类似于本说明书中上文描述的混合计算环境中执行。此类混合计算环境包括具有主机计算机架构的主机计算机(图2的110)和具有加速器架构的加速器(图2的104),对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(图2的110)与加速器(图2的104)彼此适配,以便通过系统级消息传递模块(图2的146)以及可选地通过至少两种不同构造类型的两个或更多数据通信构造(图2的128、130)来进行数据通信。与图5的方法类似,图6的方法包括:在主机应用进程(167)的命令下,由系统级消息传递模块(146)启动(502)加速器上的执行线程(169);由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)(506)返回(504)给主机应用进程(167);以及由主机应用进程(167)来管理(508)加速器上的执行线程(169),就如同该执行线程(169)是主机计算机上的执行线程。然而,图6的方法与图5方法的不同之处在于,在图6的方法中,管理(508)加速器上的执行线程(169)就如同该执行线程(169)是主机计算机上的执行线程包括:将执行线程(169)作为主机应用进程(167)的子进程来进行管理(602)。将执行线程(169)作为主机应用进程(167)的子进程来进行管理(602)可以通过如下操作来执行:与运行在加速器(104)上的、执行该执行线程(169)的进程进行交互,就好像执行该线程(169)的进程从主机应用进程继承了通常由子进程来继承的属性,其中此类属性在执行该线程的进程开始执行时、根据来自主机应用进程(167)的用于启动执行线程(169)的指令消息(510)中所包括的操作信息而针对所述进程进行设置。
为了进一步说明,图7展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。与图5的方法类似,图7的方法在类似于本说明书中上文描述的混合计算环境中执行。此类混合计算环境包括具有主机计算机架构的主机计算机(图2的110)和具有加速器架构的加速器(图2的104),对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(图2的110)与加速器(图2的104)彼此适配,以便通过系统级消息传递模块(图2的146)以及可选地通过至少两种不同构造类型的两个或更多数据通信构造(图2的128、130)来进行数据通信。与图5的方法类似,图7的方法包括:在主机应用进程(167)的命令下,由系统级消息传递模块(146)启动(502)加速器上的执行线程(169);由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)(506)返回(504)给主机应用进程(167);以及由主机应用进程(167)来管理(508)加速器上的执行线程(169),就如同该执行线程(169)是主机计算机上的执行线程。然而,图7的方法与图5方法的不同之处在于,在图7的方法中,管理(508)加速器上的执行线程(169)就如同该执行线程(169)是主机计算机上的执行线程包括:响应于加速器上的执行线程(169)的终止,由主机应用进程(167)通过SLMPM(146)接收(702)退出数据(506)。响应于加速器上的执行线程(169)的终止而接收(702)退出数据(506)可以这样来执行:由SLMPM(146)监控加速器上的执行线程(169)的执行,以及响应于执行线程的终止,在进程间数据通信消息中将退出数据发送给主机应用进程。
为了进一步说明,图8展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。与图5的方法类似,图8的方法在类似于本说明书中上文描述的混合计算环境中执行。此类混合计算环境包括具有主机计算机架构的主机计算机(图2的110)和具有加速器架构的加速器(图2的104),对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(图2的110)与加速器(图2的104)彼此适配,以便通过系统级消息传递模块(图2的146)以及可选地通过至少两种不同构造类型的两个或更多数据通信构造(图2的128、130)来进行数据通信。与图5的方法类似,图8的方法包括:在主机应用进程(167)的命令下,由系统级消息传递模块(146)启动(502)加速器上的执行线程(169);由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)(506)返回(504)给主机应用进程(167);以及由主机应用进程(167)来管理(508)加速器上的执行线程(169),就如同该执行线程(169)是主机计算机上的执行线程。然而,图8的方法与图5方法的不同之处在于,在图8的方法中,管理(508)加速器上的执行线程(169)就如同该执行线程(169)是主机计算机上的执行线程,包括:通过SLMPM(146)杀死(802)加速器上的执行线程(169)。通过SLMPM(146)杀死(802)加速器上的执行线程(169)可以这样来执行:执行Unix类型的“kill”命令,其中执行线程的PID作为该命令的变量。
为了进一步说明,图9展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。与图5的方法类似,图9的方法在类似于本说明书中上文描述的混合计算环境中执行。此类混合计算环境包括具有主机计算机架构的主机计算机(图2的110)和具有加速器架构的加速器(图2的104),对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(图2的110)与加速器(图2的104)彼此适配,以便通过系统级消息传递模块(图2的146)以及可选地通过至少两种不同构造类型的两个或更多数据通信构造(图2的128、130)来进行数据通信。与图5的方法类似,图9的方法包括:在主机应用进程(167)的命令下,由系统级消息传递模块(146)启动(502)加速器上的执行线程(169);由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)(506)返回(504)给主机应用进程(167);以及由主机应用进程(167)来管理(508)加速器上的执行线程(169),就如同该执行线程(169)是主机计算机上的执行线程。然而,图9的方法与图5方法的不同之处在于,在图9的方法中包括:由SLMPM(146)检测(902)主机应用进程(167)的终止,以及响应于终止而由SLMPM(146)杀死(904)加速器上的执行线程(169)。检测(902)主机应用进程(167)的终止可以通过持续地或者周期性地监控主机应用进程(167)的执行来进行。如上所述,SLMPM(146)可以利用Unix类型的“kill”命令来杀死加速器上的执行线程(169)。
为了进一步说明,图10展示了示出按照本发明实施方式的用于混合计算环境中的数据处理的另一示例性方法的流程图。与图5的方法类似,图10的方法在类似于本说明书中上文描述的混合计算环境中执行。此类混合计算环境包括具有主机计算机架构的主机计算机(图2的110)和具有加速器架构的加速器(图2的104),对于特定类型的计算功能的执行速度而言,加速器架构相对于主机计算机架构来说是优化的。主机计算机(图2的110)与加速器(图2的104)彼此适配,以便通过系统级消息传递模块(图2的146)以及可选地通过至少两种不同构造类型的两个或更多数据通信构造(图2的128、130)来进行数据通信。与图5的方法类似,图10的方法包括:在主机应用进程(167)的命令下,由系统级消息传递模块(146)启动(502)加速器上的执行线程(169);由系统级消息传递模块(146)将执行线程(169)的进程标识符(“PID”)(506)返回(504)给主机应用进程(167);以及由主机应用进程(167)来管理(508)加速器上的执行线程(169),就如同该执行线程(169)是主机计算机上的执行线程。然而,图10的方法与图5方法的不同之处在于,图10的方法包括在主机应用进程(167)的命令下,由SLMPM(146)执行(906)等待功能,包括确定加速器上的执行线程(169)是否已经终止;以及在等待功能返回时,由SLMPM(146)告知(908)主机应用进程(167):加速器上的执行线程(169)已经终止。执行(906)等待功能可以这样来进行:由SLMPM(146)从主机应用进程(169)接收作为进程间数据通信消息的、执行等待功能的指令,其中该指令包括在加速器(104)上执行的执行线程(169)的PID。在等待功能返回时告知(908)主机应用进程(167)加速器上的执行线程(169)已经终止可以这样来进行:在进程间数据通信消息中发送加速器上的执行线程(169)已经终止的通知。
本发明的示例性实施方式主要是在全功能混合计算环境中的数据处理的上下文中描述的。然而,具有本领域技术的读者将会认识到,本发明的方法方面也可以具体化在一种计算机程序产品中,其部署在信号承载介质上,以便与适当的数据处理系统结合使用。此类信号承载介质可以是用于机器可读信息的传输介质或者可记录介质,包括磁介质、光介质或者其他适当的介质。可记录介质的示例包括硬盘驱动或者磁盘盒中的磁盘、用于光学驱动的压缩盘、磁带、以及本领域技术人员将会想到的其他介质。传输介质的示例包括:用于语音通信的电话网络,以及数字数据通信网络,例如以太网TM以及利用互联网协议通信的网络和万维网。本领域技术人员将会立即认识到,具有适当编程装置的任何计算机系统将能够执行在程序产品中具体化的本发明的方法步骤。本领域的技术人员将会理解认识到,尽管本说明书中描述的某些示例性实施方式面向在计算机硬件上安装和执行的软件,但尽管如此,实现为固件或者硬件的备选实施方式同样位于本发明的范围之内。
根据以上描述将会理解,在不脱离本发明实质精神的情况下,可以对本发明的各种实施方式进行修改和改变。本说明书中的描述仅仅出于示范目的,而不应在限制的意义上进行理解。本发明的范围仅由所附权利要求书限定。