CN108292287A - 结构集成的数据拉取引擎 - Google Patents
结构集成的数据拉取引擎 Download PDFInfo
- Publication number
- CN108292287A CN108292287A CN201680068889.4A CN201680068889A CN108292287A CN 108292287 A CN108292287 A CN 108292287A CN 201680068889 A CN201680068889 A CN 201680068889A CN 108292287 A CN108292287 A CN 108292287A
- Authority
- CN
- China
- Prior art keywords
- data
- engine
- pull
- data cell
- consumer
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
在示例中,公开了一种计算节点,其包括:第一一个或多个逻辑元件,其包括用于产生数据单元的数据生产者引擎;以及主机结构接口,其用于将计算节点通信地耦合到结构,主机结构接口包括第二一个或多个逻辑元件,该第二一个或多个逻辑元件包括数据拉取引擎,该数据拉取引擎用于:将数据单元公布为可用;接收针对数据单元的拉取请求,拉取请求包括数据消费者的节点标识符;以及经由结构向数据消费者发送数据单元。还公开了一种提供数据拉取引擎的方法。
Description
相关申请的交叉引用
本申请要求享有于2015年12月24日提交的题为“FABRIC-INTEGRATED DATAPULLING ENGINE”的美国非临时专利申请第14/757,892号的优先权的权益,其全部内容以引用方式并入本文。
关于联邦资助研究的声明
本发明是根据国防部授予的合同号H98230-13-D-0124在政府支持的情况下完成的。政府对本发明享有一定权利。
技术领域
本公开内容总体上涉及高性能计算领域,并且更具体地(但非排他性地),涉及用于提供结构集成的数据拉取引擎的系统和方法。
背景技术
高性能计算(还被称为集群计算)是其中大量处理核心紧密耦合使得其可以并行执行大量计算的计算策略。要对其进行操作的数据可以被分成多个切片,这些切片可以跨许多不同的核心分布。大量核心可以同时对不同的数据执行相同的操作,并且然后报告结果。在该背景下,“生产者”是具有可用数据的节点。“消费者”是要接收这些数据的节点。
附图说明
当与附图一起阅读时,本公开内容从以下详细描述中被最好地理解。强调的是,根据行业中的标准实践,各种特征不一定按比例绘制,并且仅用于说明目的。在显式或隐式地示出比例的情况下,其仅提供一个说明性示例。在其他实施例中,为了讨论的清楚,各种特征的尺寸可以任意增加或减小。
图1是根据本说明书的一个或多个示例的高性能计算(HPC)系统的框图。
图2是根据本说明书的一个或多个示例的计算节点的框图。
图3是根据本说明书的一个或多个示例的生产者-消费者架构的框图。
图4是根据本说明书的一个或多个示例的主机结构接口(HFI)的框图。
图5是根据本说明书的一个或多个示例的存储器种类的框图。
图6是根据本说明书的一个或多个示例的由数据生产者执行的方法的流程图。
图7是根据本说明书的一个或多个示例的由HFI数据拉取引擎(DPE)执行的方法的流程图。
图8是根据本说明书的一个或多个示例的由数据消费者执行的方法的流程图。
发明内容
在示例中,公开了一种计算节点,其包括:第一一个或多个逻辑元件,其包括用于产生数据单元(datum)的数据生产者引擎;以及主机结构接口,其用于将计算节点通信地耦合到结构,结构接口包括第二一个或多个逻辑元件,该第二一个或多个逻辑元件包括数据拉取引擎,该数据拉取引擎用于:将数据单元公布为可用;接收针对数据单元的拉取请求,拉取请求包括数据消费者的节点标识符;以及经由结构向数据消费者发送数据单元。还公开了一种提供数据拉取引擎的方法。
具体实施方式
以下公开内容提供了用于实现本公开内容的不同特征的许多不同实施例或示例。以下描述了组件和布置的具体示例以简化本公开内容。当然,这些仅仅是示例,并且不旨在进行限制。此外,本公开内容可以在各种示例中重复参考数字和/或字母。该重复出于简单和清楚的目的,并且其本身不指定所讨论的各种实施例和/或配置之间的关系。不同的实施例可以具有不同的优点,并且对于任何实施例没有特定优点是必然要求的。
一些现有的HPC结构和通信栈在为数据传输(其中生产者和消费者被动态地配对)提供高效支持时面临限制。在这样的关系中,生产者可能不知道消费者的身份。例如,在使用工作窃取的动态负载平衡中,或者在诸如网络服务器之类的线程池编程模式下,工作或数据的生产者可能不知道消费者将是谁。作为结果,一些现有架构要求多个通信操作来协调动态的生产者-消费者数据传输。
例如,考虑使用消息传送接口(MPI)的动态数据传输的实现方式,所述MPI是提供两侧(即,匹配的发送和接收)消息传送的行业标准HPC通信库。MPI假定其中发送者发起与接收者的联系的协议;作为结果,其不为匿名发送操作提供直接的支持。替代地,MPI匹配的发送-接收模型中的动态数据传输要求使用应用级别的请求-响应协议,在所述请求-响应协议中,生产者周期性地检查来自任何消费者的传入请求,并且其在看到请求时生成响应。
该方式的某些实施例引起可能严重影响性能的开销。例如:
a.生产者引起轮询开销。
b.由于响应传入请求造成的延迟,生产者的轮询间隔生成到消费者的延时。
c.必须发送生成结构和端点开销二者的额外的协调消息。
另一方面,还存在单侧通信模型,例如,“对称分层存储器”(OpenSHMEM)和MPI远程存储器访问(RMA)接口。这些可以提供异步读取(get)、写入(put)和原子更新操作。这些操作可以通过允许消费者直接访问生产者的存储器来消除轮询和延时开销。但是,可能需要执行在所有消费者之间的额外同步以对可用的数据条目进行定位和匹配,并且确保两个消费者在直接访问生产者存储器时不会损坏存储器。该同步影响通信效率,并且可能在多个消费者请求来自相同生产者的数据时引起串行化开销。
在一个实施例中,本说明书描述了包括单侧拉取的通信操作,所述单侧拉取允许消费者使用单个、异步通信操作请求来自生产者的数据。在示例中,该通信模型通过与结构端点集成的数据拉取引擎(DPE)来被高效地支持,并协调由多个消费者对生产者数据的消费。
该单侧拉取适合于实现动态的生产者-消费者数据传输。该机制可以被高效地卸载到合适的硬件,例如在一个实施例中支持“门户4”接口的硬件。
在实施例中,数据拉取引擎(DPE)与结构端点集成并消除前述实施例中描述的开销。具体而言,当接收到拉取时,引擎立即响应,这消除了由生产者和消费者二者引起的轮询开销。引擎能够利用由消费者发起的单个往返消息来实现拉取,这进一步提高通信效率。因为HFI集成的DPE管理对多个消费者的响应,所以其还将串行化开销最小化。
单侧拉取是可以由消费者用来从生产者检索信息的操作。本说明书的DPE不同于双侧消息传送,因为生产者应用是被动的并且不直接参与数据传输。其还不同于单侧消息传送(例如,OpenSHMEM或MPI单侧get操作),因为消费者不选择其将检索的具体数据单元。相反,其请求来自数据种类的数据单元,并且可以接收来自该种类的任何数据单元。与单侧get的进一步区别在于在数据单元已经被拉取时,确保相同的数据单元将不被随后的拉取操作检索。
本DPE可以使用硬件和软件组件来实现,并且可以与HPC系统中的主机结构接口(HFI)集成以实现最大的利益。DPE拦截由消费者执行的单侧拉取操作,将他们与已经产生的数据进行匹配,并提供即时和异步的响应。
在实施例中,DPE维护包含对于消费者可用的数据元素的数据池。池中的数据可以本地或远程地产生,并通过本地或远程执行的推送操作来添加到HPC系统中特定节点处的DPE。由池跟踪的数据可以具有应用提供的标签,其指示数据种类。相同种类中的项可以具有相关联的排序(例如,应用可以指定他们应当以先进先出后进先出的顺序被消费)。用户还可以在拉取请求中提供标签(或者他们可以提交通配符标签),并且该标签可以由数据池用于标识将被消费的数据项。诸如请求的数据量和消费者的进程ID之类的额外信息也可以由数据池用于将拉取请求与数据项相关联。取决于由用户选择的模型,数据拉取可以消费整个数据单元,或者其可以部分地消费数据单元,这允许随后的拉取以消费数据单元的剩余部分。
在示例中,当DPE接收到拉取时,其执行以下操作:
a.从拉取请求中提取标签(种类标识符)、消费者ID、和请求的大小
b.使用拉取请求参数来查询数据池。
c.如果数据池找到匹配的数据单元,则其向DPE提供缓冲器指针和大小。
d.DPE立即将响应发送给消费者。
i.在数据单元已经被消费时,数据池通过从池中移除数据单元的全部或一部分来更新数据单元。
ii.当已经接收到拉取响应时,在消费者处生成用于通知消费者数据单元可用的通知。通知可以进一步包含额外信息,例如收到的数据量和种类标签。
e.如果数据池不能找到匹配的数据单元,则其可以尝试以下操作:
i.DPE向消费者发送空响应,所述空响应指示没有找到与它们的请求相匹配的数据项。
ii.DPE向消费者发送“未决”响应,所述“未决”响应指示DPE已经将它们的请求排入队列并将在数据项变得可用时进行响应。
iii.当拉取请求在特定DPE处未决时,数据池可以尝试将任何新的数据项与未决请求进行匹配。
iv.如果存在有序数据,则可能必要的是以请求被接收的顺序并且在新数据被添加到池中之前执行该检查。
v.如果未启用排序,则在数据已经被添加到池后,可以并行执行对匹配未决拉取请求的尝试。
f.对于标记为未决的拉取,取决于消费者请求什么或系统支持什么,随后的DPE拉取响应可以采用各种形式。例如,消费者可以建立允许DPE执行put操作来发送拉取响应的存储器区域。替代地,可以使用推送操作来将数据附加到发布的缓冲器或消费者处的数据池。
i.在消费者处完成拉取响应时,在消费者处生成通知。
在一些情况下,DPE可以使用“门户4”HFI来实现。单侧拉取操作可以通过DPE的软件实现方式来在各种网络上被支持。性能增强可以通过硬件实现方式来实现。
在门户4网络上,可以实现对于一系列应用使用模型而言可以足够的DPE的若干实施例。例如,如果仅支持本地推送,则数据池可以被实现为匹配条目(ME)的列表,所述ME的列表可以利用每ME的一个数据单元来发布。数据可以被完全消耗,或者如果ME设置了PTL_ME_MANAGE_LOCAL选项,则数据可以被部分消耗。如果没有可用的匹配数据单元,则截断条目被附加到溢出列表以生成零字节响应。如果在截断时在生产者处捕获到完整事件,则延迟的响应可能通过软件。消费者可以通过对PtlGet()的调用来执行拉取操作,其中,期望的种类标签被嵌入到匹配比特中。可以将PtlGet()发送到与生产者数据池相对应的匹配接口上的门户表条目。
现在将更具体地参考附图来描述用于提供结构数据拉取引擎的系统和方法。应当注意的是,遍及附图,可以重复某些参考数字以指示特定设备或块跨附图是完全或基本一致的。然而,这不旨在暗示在公开的各种实施例之间的任何特定关系。在某些示例中,可以由特定参考数字(“小部件10”)来指代一类元件,同时可以由带有连字符的数字(“第一特定小部件10-1”和“第二特定小部件10-2”)来指代单独种类和类的示例。
图1是根据本说明书的一个或多个示例的高性能计算(HPC)系统的框图。HPC系统100可以是对于实施例适当的任何合适的HPC系统,包括例如超级计算机、计算集群、Beowulf集群、或分布式网络。
HPC系统100包括多个计算节点。在该情况下,每个节点可以是任何合适的计算设备、系统或子系统。例如,每个计算节点110-4都可以是刀片服务器、机架式服务器或独立服务器。每个计算机节点110可以是或包括片上系统(SoC),或者每个计算节点110可以被容纳在独立机架中。
在示出的示例中,示出了五个计算节点110-1、110-2、110-3、110-4和110-5。然而,这仅仅是对操作原理的说明。在操作中,可以提供任何数量的计算节点110。例如,HPC系统100可以是由以下各项建成的Beowulf集群:少量商品、现成的计算机、膝上型计算机、或刀片。或者HPC系统100可以是高端超级计算机,其具有提供每秒千万亿次浮点运算的处理能力的数千个同质节点。
每个计算节点110经由主机结构接口(HFI)260来通信地耦合到结构170。具体而言,计算节点110-1经由HFI 260-1来耦合到结构170。计算节点110-2经由HFI 260-2来通信地耦合到结构170。计算节点110-3经由HFI260-3来通信地耦合到结构170。计算节点110-4经由HFI 260-4来通信地耦合到结构170。计算节点110-5经由HFI 260-5来通信地耦合到结构170。
计算节点110可以在任何合适的配置下,包括例如基于母板的设计,其中,HFI 260是可插入卡,例如PCIe卡。以非限制性示例的方式,计算节点110还可以在多芯片封装、单板计算机或片上系统上被实现。
结构170可以是用于将计算节点110彼此通信地耦合的任何合适的结构。这可以采用例如OmniPathTM架构、Infiniband、以太网或任何其他合适的结构的形式。
图2是根据本说明书的一个或多个示例的计算节点110的框图。计算节点110可以是任何合适的计算设备。在各种实施例中,以非限制性示例的方式,“计算设备”可以是或包括以下各项:计算机、工作站、服务器、大型机、虚拟机(无论是模拟的还是在“裸机”管理程序上的)、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理、膝上型计算机、蜂窝电话、IP电话、智能电话、平板计算机、可转换的平板计算机、计算设备、网络设备、接收机、可穿戴计算机、手持式计算器、或用于处理和传送数据的任何其他电子、微电子或微机电设备。任何计算设备可以被称为网络上的主机。每个计算设备可以将其自身称为“本地主机”,而其外部的任何计算设备可以被称为“远程主机”。
计算节点110包括一个或多个处理器210。在该示例中,示出了两个处理器,即处理器210-1和处理器210-2。这些处理器通信地耦合到本地存储器220,所述本地存储器220具有存储在其中的用于提供操作系统222和生产者/消费者引擎224的至少软件部分的可执行指令。计算节点110的其他组件包括可选存储装置250和主机结构接口260。该架构仅通过示例的方式提供,并且旨在是非排他性且非限制性的。此外,公开的各个部分仅旨在是逻辑分区,并且不需要一定表示在物理上分离的硬件和/或软件组件。某些计算设备,例如,在单个物理存储设备中提供主存储器220和存储装置250,并且在其他情况下,存储器220和/或存储装置250在功能上分布在许多物理设备上。在虚拟机或管理程序的情况下,全部或一部分功能可以以在虚拟化层上运行的软件或固件的形式提供以提供公开的逻辑功能。在其他示例中,诸如主机结构接口260之类的设备可以仅提供对于执行其逻辑操作而言必要的最小硬件接口,并且可以依靠软件驱动器来提供额外的必要逻辑。因此,本文公开的每个逻辑块广泛地旨在包括被配置和可操作用于提供该块的公开的逻辑操作的一个或多个逻辑元件。如贯穿本说明书使用的,“逻辑元件”可以包括硬件、外部硬件(数字、模拟或混合信号)、软件、往复式软件、服务、驱动器、接口、组件、模块、算法、传感器、组件、固件、微代码、可编程逻辑单元、或可以协调以实现逻辑操作的对象。
在示例中,处理器210经由存储器总线270-3来通信地耦合到存储器220,举例而言,所述存储器总线270-3可以是例如直接存储器存取(DMA)总线,但其他存储器架构是可能的,包括其中存储器220经由系统总线270-1或某个其他总线来与处理器210通信的存储器架构。处理器210可以经由系统总线270-1来通信地耦合到其他设备。如贯穿本说明书使用的,“总线”包括任何有线或无线的互连线路、网络、连接、捆绑、单个总线、多个总线、交叉开关网络、单级网络、多级网络或可操作为在计算设备的部分之间或计算设备之间携带数据、信号或功率的其他传导介质。应当注意的是,这些用途仅以非限制性示例的方式公开,并且一些实施例可以省略一个或多个前述总线,而其他实施例可以采用额外的或不同的总线。
在各种示例中,“处理器”可以包括可操作为执行指令的逻辑元件的任意组合,无论是从存储器加载的还是直接以硬件实现的,以非限制性示例的方式包括以下各项:微处理器、数字信号处理器、现场可编程门阵列、图形处理单元、可编程逻辑阵列、专用集成电路、或虚拟机处理器。在某些架构中,可以提供多核处理器,在该情况下,视情况而定,处理器210可以仅被视为多核处理器中的一个核,或者可以被视为整个多核处理器。在一些实施例中,还可以为专用或支持功能提供一个或多个协处理器。
处理器210可以经由DMA总线270-3,以DMA配置来连接到存储器220。为简化本公开内容,存储器220被公开为单个逻辑块,但是在物理实施例中可以包括任何合适的一个或多个易失性或非易失性存储器技术的一个或多个块,包括例如:DDR RAM、SRAM、DRAM、高速缓存、LI或L2存储器、片上存储器、寄存器、闪存、ROM、光学介质、虚拟存储器区域、磁性或磁带存储器等等。在某些实施例中,存储器220可以包括相对低延时的易失性主存储器,而存储装置250可以包括相对较高延时的非易失性存储器。然而,存储器220和存储装置250不需要是在物理上分离的设备,并且在一些示例中可以简单地表示对功能的逻辑分离。还应当注意的是,尽管以非限制性示例的方式公开了DMA,但DMA不是与本说明书一致的唯一协议,并且其他存储器架构是可用的。
存储装置250可以是任何种类的存储器220,或者可以是分开的设备。存储装置250可以包括一个或多个非暂时性计算机可读介质,以非限制性示例的方式包括:硬盘驱动器、固态驱动器、外部存储装置、独立磁盘冗余阵列(RAID)、网络附加存储装置、光存储装置、磁带驱动器、备份系统、云存储装置、或前述的任意组合。存储装置250可以是或可以在其中包括一个或多个数据库或者在其他配置下存储的数据,并且可以包括操作软件的存储的副本,例如生产者/消费者引擎224的软件部分和操作系统222。许多其他配置也是可能的,并且旨在被涵盖在本说明书的广泛范围内。
可以提供主机结构接口260以将计算节点110通信地耦合到有线或无线网络。如贯穿本说明书使用的,“网络”可以包括可操作以交换计算设备内或者计算设备之间的数据或信息的任何通信平台,以非限制性示例的方式包括:ad-hoc本地网络、向计算设备提供电子交互能力的因特网架构、普通老式电话系统(POTS),其可由计算设备用来执行交易,其中,其可以由人类操作者协助,或者其中,其可以手动将数据键入到以下中:电话或其他合适的电子设备、提供系统中任何两个节点之间的通信接口或交换的任何分组数据网络(PDN)、或任何局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网络(VPN)、内联网、或促进网络或电话环境中的通信的任何其他适当的架构或系统。
在一个示例中,生产者/消费者引擎224可操作以执行如本说明书中所描述的计算机实现的方法,包括充当数据的生产者或数据的消费者。结合图3更详细地描述了这些关系。
生产者/消费者引擎224可以包括一个或多个有形非暂时性计算机可读介质,其具有存储于其上的可执行指令,所述可执行指令可操作以指示处理器提供生产者/消费者引擎224。如贯穿本说明书使用的,“引擎”包括相似或不相似种类的、可操作以用于并被配置为执行由引擎提供的一个或多个方法的一个或多个逻辑元件的任意组合。因此,生产者/消费者引擎224可以包括被配置为提供如本说明书中公开的方法的一个或多个逻辑元件。在一些情况下,生产者/消费者引擎224可以包括被设计为执行方法或其一部分的专用集成电路,并且还可以包括可操作以指示处理器执行方法的软件指令。在一些情况下,生产者/消费者引擎224可以作为“守护进程”运行。“守护进程”可以包括任何程序或可执行指令的系列,无论以硬件、软件、固件还是其任意组合来实现,其作为后台进程、终止-驻留(terminate-and-stay-resident)程序、服务、系统扩展、控制面板、启动程序、BIOS子例程、或在没有直接的用户交互的情况下操作的任何类似的程序而运行。在某些实施例中,守护进程可以在“驱动空间”中以提升的特权运行,或者在保护环架构中的环0、1或2中运行。还应当注意的是,生产者/消费者引擎224还可以包括其他硬件和软件,以非限制性示例的方式包括配置文件、注册表条目、以及交互式或用户模式软件。
在一个示例中,生产者/消费者引擎224包括存储在非暂时性介质上的可执行指令,所述指令可操作以执行根据本说明书的方法。在适当的时间,例如在引导计算节点110时或者在遇到来自操作系统222或用户120的命令时,处理器210可以从存储装置250取回指令的副本并将其加载到存储器220中。处理器210然后可以迭代地执行生产者/消费者引擎224的指令以提供期望的方法。
取决于计算节点110在HPC系统100中扮演的角色,生产者/消费者引擎224可以作为数据生产者引擎或作为数据消费者引擎来操作。作为数据生产者引擎,生产者/消费者引擎224可以被配置为对数据集进行操作并产生供其他节点消费的数据,或者数据生产者引擎可以被配置为聚合来自其他进程的输出并且将他们编译成用于不同进程的合适的输入。
作为数据消费者引擎,生产者/消费者引擎224可以被配置为消费来自其他进程的输入。提供仅仅一个示例,并行计算的常见任务是计算并行差分方程序列中的离散值,其中,每个阶段对先前阶段的输出进行操作。因此,在每个阶段,数据生产者引擎可以收集来自先前阶段的输出,将他们放入数据池中,并且然后接收来自多个数据消费者引擎的数据请求,每个数据消费者引擎运行相同的差分方程。在该情况下,数据生产者引擎将数据提供给数据消费者引擎,并且然后再次收集输出。
图3是HPC系统100的框图,其示出了如以上讨论的可充当生产者或消费者的某些节点。在该示例中,节点340充当数据生产者。节点350充当数据消费者。在该示例中,生产者340和消费者350以示例的方式被示出为在两个分开的模式中。然而,应当理解的是,生产者340和消费者350可以在相同的计算节点110上。
HPC系统100可以被配置为运行大规模并行计算任务。这可以是适合于被划分成较小的存储器块(chunk)的任务,其中的每一个都可以由分开的计算节点110来处理。在这样的情况下,生产者340可以准备数据分组以用于分派到计算节点110。
消费者350可以具有可用于操作数据的一部分代码。该相同的代码可以跨许多消费者350甚至多达数万或数十万的消费者350而被复制。因此,如本文示出的,一个或多个生产者340与一个或多个消费者350之间的完全双向同步可能是不切实际的。另一方面,如以上讨论的,单向通信也带来一些挑战。因此,本说明书提供了可被认为是“一个半”向通信的结构集成数据拉取引擎。
具体地,消费者350不需要知道或关心其正在对哪部分的数据进行操作。相反,消费者350运行具有一组给定输入并从那些输入产生一组输出的过程。那些输出可能是下一阶段的输入。因此,消费者350只需要关注其自身得到数据单元来操作,而不用担心该数据单元如何适于计算的整个图像中。数据结构(即,消费者350需要操作的输入和输出)在本文中被称为数据的种类。换言之,存在特定的数据单元,其应当被理解为在该上下文中意指结构化的分组,其可以包括消费者350需要接收的特定格式和类型的值。当消费者350请求数据单元时,其可以请求具体的种类,或者可以通配(wildcard)至少一些条目。生产者340可以产生适于消费者350需要的特定种类的简档的一个或许多数据。
因此,根据一个示例,消费者350向生产者340发送数据请求。生产者340可以具有用于消费者350的适当种类的数据池。因此,生产者340可以根据本说明书中公开的方法从那些数据中选择数据单元并且将该数据单元提供给消费者350。生产者350然后可以对该数据单元进行操作,完成其功能,并且然后执行其需要去做的任何报告功能。一旦消费者350已完成其任务,其就可以准备接收新的数据单元。因此,消费者350可以再次向生产者340发送请求。生产者340然后可以向消费者350提供新的数据单元。
如果当消费者350请求数据单元时数据不可用,则生产者340可以对请求排队。请求可以可选地以先进先出的顺序排队,在该情况下,可以在将新数据添加到池之前处理排队的请求。在另一实施例中,排队的请求是无序的,并且被并行处理(一旦足够的数据已被添加到池中)。在其他实施例中,可以使用任何其他合适的排队方法,以非限制性示例的方式例如后进先出和循环法(round robin)。在一些实施例中,生产者340向消费者350发送信号,以指示请求已被接收并且其已被排队但尚未被处理。
应当注意的是,当生产者340初始产生数据时,生产者340不需要知道数据将去往哪个具体计算节点110。相反,生产者340可以简单地指定每个新数据单元的种类,将其存储在存储器中,并通知DPE 420(图4)。一旦数据单元被存储在存储器中,HFI 260的数据拉取引擎420就可以公布关于属于种类的数据可用的通知。数据拉取引擎然后可以处理关于那些数据的任何附加的消息传送。
图4是根据本说明书的一个或多个示例的HFI 260的框图。在该情况下,HFI 260包括总线接口470、结构接口480、和DMA接口420。结构接口480要将HFI 260通信地耦合到结构170。总线接口470要将HFI 260通信地耦合到计算节点的本地总线,例如图2的总线270。并且DMA 420要将HFI 260通信地耦合到DMA,例如图2的DMA 270-3。
HFI 260还包括网络接口引擎410。网络接口引擎410提供传统的输入/输出操作以及对结构接口的管理。因此,在该方面中,网络接口引擎410可以与某些现有架构中由HFI执行的功能类似或相同。
HFI 260还包括数据拉取引擎420。数据拉取引擎420提供根据本说明书的方法。数据拉取引擎420可以是任何合适的引擎,包括如以上讨论的硬件、软件和/或固件的任意组合。
HFI 260还可以包括数据池460。数据池460可以包括可根据本说明书的方法提供给消费者的数据。如图5示出的,数据池460可以包括多个不同种类的数据。在图5的示例中,数据池460包括数据种类1 510和数据种类2 520。因此,当消费者350请求数据时,其可以指定其感兴趣的数据的种类。如果消费者350请求种类1 510的数据,则数据拉取引擎420可以从数据种类510中选择任何数据单元(例如,根据诸如FIFO或LIFO的算法),并将该数据单元提供给消费者350。如果消费者350请求种类2的数据单元,则数据拉取引擎420可以选择种类2 520的任何合适的数据单元,并将该数据单元提供给消费者350。应当注意的是,数据池460可以是实际数据,或者其可以简单地是指示数据拉取引擎420从何处取回来自存储器220的数据的通知。
图6是根据本说明书的一个或多个示例的由生产者引擎224执行的方法600的流程图。在该示例中,在框610处,生产者引擎224生成数据。
在框620中,生产者引擎224将产生的数据存储在本地存储器220中。
在框630中,生产者引擎224将数据公布给HFI 260的数据拉取引擎420。在示例中,向数据拉取引擎420进行公布包括通知数据拉取引擎420数据可用于发送给请求消费者350。当生产者引擎224公布数据时,数据拉取引擎420要么可以从其初始位置访问它,要么可以将其复制到本地缓冲器。
如可能在真正的“双向”交换中所做的那样,发布不一定意味着向消费者350广播数据可用性。而是,生产者引擎224仅通知数据拉取引擎420数据可用,然后基本上完成了其交易的部分。因此,控制可以传递回到框610,其中,生产者340继续产生数据,而不考虑数据拉取引擎420用那些数据做什么。同时,数据拉取引擎420将数据保存在其数据池中直到其从消费者350接收到数据请求。
在一些实施例中,可能的是数据拉取引擎420可以通知生产者340其数据池已满,如果消费者350未准备好取回数据,则情况可能如此。在该情况下,生产者340可以暂停数据的产生,并且要么周期性地轮询数据拉取引擎420,要么等待来自数据拉取引擎420的、其准备好接收更多数据的信号。
图7是根据本说明书的一个或多个示例的由HFI 260的数据拉取引擎420执行的方法700的流程图。
在框710处,HFI 260的数据拉取引擎420从生产者引擎224接收公布的数据(如果有的话)。这些可以是来自数据池460的数据。
在决策框720中,如果数据拉取引擎420没有接收到拉取请求,则其继续如以前那样接收公布的数据。
如果在另一方面数据拉取引擎420接收到拉取请求722,则控制可以前进到框730。应当注意的是,拉取请求可以包括请求数据的消费者350的节点标识符。拉取请求722还可以包括正被请求的数据的种类的种类标识符。拉取请求722还可以包括适合其目的的任何其他报头信息或其他分组格式。
在决策框740中,数据拉取引擎420检查在数据池中是否存在属于所请求的类型的数据可用。
在框750中,如果没有数据可用,则在实施例中,数据拉取引擎420可以对拉取请求722排队。可选地,数据拉取引擎420可以向消费者350发送信号以指示请求不能立即被服务但是请求已经被排队。如果启用排序,则排队的请求可以以先进先出的顺序被处理。在该情况下,排队的请求可能在新数据被添加到池之前被处理。如果未启用排序,则在在数据已经被添加到池后,可能并行执行匹配未决的拉取请求的尝试。
在框760中,数据拉取引擎420将所请求的数据转发给请求消费者节点350。为做到这一点,数据拉取引擎420具体地将消息引导到请求消费者350的节点ID。再次应当注意的是,其发送的数据单元可以简单地是从数据池460中选择的数据单元,并且不需要是由消费者350选择或请求的特定数据单元。
在框770中,数据拉取引擎420取消公布其在框760中发送的数据。这指示数据单元不再可用于发送给消费者350。
在框780中,数据拉取引擎420释放发送的数据单元的存储器位置。释放存储器位置可以包括简单地将存储器位置标记为可供再次使用。在一些安全被高度关注的情况下,这还可以包括将置零,或者以其他方式对存储器进行覆写或擦除。
在框799中,方法完成。
图8是根据本说明书的一个或多个示例的由消费者引擎224执行的方法800的流程图。当计算节点110充当消费者350时,其可以向生产者发送请求数据的种类的消息。该消息可以包括消费者350的节点ID。要注意的是,该消息不需要包括生产者340的节点ID。相反,数据的可用性可以由数据拉取引擎420公布或公告,并且消费者350可以简单地通过为其自身请求数据单元来进行响应。
在框820中,消费者引擎224接收所请求的数据单元。
在框830中,消费者引擎224消耗数据单元。
在框899中,方法完成。应当注意的是,在某些实施例中,图8的方法800可以由网络接口引擎410来实现,其不需要如在数据拉取引擎420的情况下那样被专门修改。
以上概述了若干实施例的特征,使得本领域技术人员可以更好地理解本公开内容的各个方面。本领域技术人员应当认识到的是,他们可以容易地将本公开内容用作设计或修改用于实现相同目的和/或达成本文介绍的实施例的相同优点的其他过程和结构的基础。本领域技术人员还应当意识到,这样的等同构造不脱离本公开内容的精神和范围,并且他们可以做出这里的各种改变、替换和变更,而不脱离本公开内容的精神和范围。
可以容易地在片上系统(SoC)中提供本文公开的任何硬件元件的全部或一部分,所述SoC包括中央处理单元(CPU)封装。SoC表示将计算机或其他电子系统的组件集成至单个芯片的集成电路(IC)。因此,例如,客户端设备110或服务器设备300可以全部或部分地在SoC中被提供。SoC可以包含数字、模拟、混合信号、以及射频功能,所有这些都可以在单个芯片衬底上被提供。其他实施例可以包括多芯片模块(MCM),其中,多个芯片位于单个电子封装内并且被配置为通过电子封装与彼此紧密地交互。在各种其他实施例中,可以在专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其他半导体芯片中的一个或多个硅核心中实现本文公开的计算功能。
还要注意的是,在特定实施例中,一些组件可以被省略或合并。在一般意义上,附图中描绘的布置可能在其表现中更合乎逻辑,而物理架构可以包括这些元件的各种排列、组合和/或混合。必须注意的是,无数可能的设计配置可以用来实现本文概述的操作目标。因此,相关联的基础设施有无数的替代布置、设计选择、设备可能性、硬件配置、软件实现方式、以及设备选项。
在一般意义上,任何合适地配置的处理器(例如,处理器210)可以执行与数据相关联的任何类型的指令以实现本文中详述的操作。本文公开的任何处理器可以将元件或物品(例如,数据)从一种状态或事物转变为另一种状态或事物。在另一示例中,本文概述的一些活动可以用固定逻辑或可编程逻辑(例如,由处理器执行的软件和/或计算机指令)来实现,并且本文标识的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))、包括数字逻辑的ASIC、软件、代码、电子指令、闪存、光盘、CD-ROM、DVD ROM、磁卡或光卡、适合于存储电子指令的其他类型的机器可读介质、或其任何合适的组合。
在操作中,诸如存储装置250之类的存储装置可以将信息存储在任何合适类型的有形、非暂时性存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等)、软件、硬件(例如,处理器指令或微码)中、或者任何其他合适的组件、设备、元件或对象中(在适当的情况下并基于特定的需要)。此外,基于特定的需求和实现方式,可以在任何数据库、寄存器、表、缓存、队列、控制列表、或存储结构中提供正被跟踪、发送、接收、或存储在处理器中的信息,所有这些都可以在任何合适的时间表中被引用。本文公开的存储器或存储元件(例如,存储器220和存储装置250)中的任一个应当酌情被解释为被涵盖在广义的术语“存储器”和“存储装置”内。本文中非暂时性存储介质明确地旨在包括被配置为提供公开的操作或者使诸如处理器210之类的处理器执行公开的操作的任何非暂时性专用或可编程硬件。
实施在此描述的全部或一部分功能的计算机程序逻辑被以各种形式体现,包括但绝不限于:源代码形式、计算机可执行文件形式、机器指令或微代码、可编程硬件、以及各种中间形式(例如,由汇编器、编译器、链接器、或定位器生成的形式)。在示例中,源代码包括一系列计算机程序指令,其以各种编程语言实现,例如目标代码、汇编语言、或诸如OpenCL、FORTRAN、C、C++、JAVA或HTML的高级语言,以供与各种操作系统或操作环境一起使用,或者所述指令以硬件描述语言(诸如Spice、Verilog和VHDL)实现。源代码可以定义和使用各种数据结构和通信消息。源代码可以采用计算机可执行文件的形式(例如,经由解释器),或者源代码可以被转换(例如,经由翻译器、汇编器或编译器)成计算机可执行文件的形式,或者被转换成诸如字节码之类的中间形式。在适当的情况下,前述各项中的任一项可以用于构建或描述适当的分立或集成电路,无论是时序电路、组合电路、状态机还是其他电路。
在一个示例实施例中,附图的任何数量的电路可以在相关联的电子设备的板上实现。板可以是可容纳电子设备的内部电子系统的各种组件的通用电路板,并且进一步为其他外围设备提供连接器。更具体而言,板可以提供电连接,通过所述电连接,系统的其他组件可以电通信。基于特定的配置需求、处理需求和计算设计,任何合适的处理器和存储器都可以合适地耦合到板。诸如外部存储装置、附加传感器、用于音频/视频显示的控制器、以及外围设备之类的其他组件可以作为插入式卡、经由电缆附接到板或者集成到板本身中。在另一示例中,附图的电路可以被实现为独立模块(例如,具有被配置为执行特定应用或功能的相关联的组件和电路的设备)或者被实现为电子设备的专用硬件中的插入式模块。
注意到,利用本文提供的许多示例,交互可能是以两个、三个、四个或更多个电子部件的形式而描述的。然而,这仅仅是出于清楚和示例的目的而做出。应当认识到,系统可以以任何合适的方式被合并或重新配置。沿着类似的设计替代方案,附图的任何示出的组件、模块和元件可以以各种可能的配置进行组合,所有这些都在本说明书的广泛范围内。在某些情况下,通过仅引用有限数量的电气元件来描述给定流程集的一个或多个功能可能更容易。应当认识到的是,附图及其教导的电路易于缩放并且可以容纳大量的组件以及更复杂/精密的布置和配置。因此,所提供的示例不应当限制电路的范围或者抑制电路的(如潜在地被应用于无数其他架构的)广泛的教导。
对于本领域技术人员而言许多其他变化、替代、变型、改变和修改可以被查明,并且本公开内容旨在将所有这样的变化、替代、变型、改变和修改涵盖为落入所附权利要求的范围内。为了协助美国专利和商标局(USPTO)以及在本申请上发布的任何专利的任何读者解释所附权利要求,申请人希望注意到,申请人:(a)不希望任何所附权利要求援引35U.S.C.第112部分第六(6)段(AIA前)或同一部分的(f)段(AIA后)(因为其在本申请的提交日存在),除非在特定权利要求中特别地使用词语“用于……的单元”或“用于……的步骤”;以及(b)不希望通过说明书中的任何陈述(以未以其他方式明确反映在所附权利要求中的任何方式)限制本公开内容。
示例实现方式
在示例1中公开了一种计算节点,包括:第一一个或多个逻辑元件,其用于提供用于产生数据的数据生产者引擎;以及主机结构接口,其用于将计算节点通信地耦合到结构,结构接口包括用于提供数据拉取引擎的第二一个或多个逻辑元件,数据拉取引擎用于:将数据公布为可用;接收针对数据单元的拉取请求,拉取请求包括数据消费者的节点标识符;并且经由结构向数据消费者发送数据单元。
在示例2中公开了示例1的计算节点,其中,计算节点在本地存储器中在存储器位置处存储数据单元。
在示例3中公开了示例2的计算节点,其中,数据拉取引擎还在发送数据之后释放存储器位置。
在示例4中公开了示例3的计算节点,其中,释放存储器位置包括将存储器位置标记为可用于重用。
在示例5中公开了示例2的计算节点,其中,数据单元属于第一种类,并且本地存储器还接收属于第二种类的第二数据单元。
在示例6中公开了示例5的计算节点,其中,拉取请求包括种类名称,并且其中,数据拉取引擎至少部分地基于种类名称在属于第一种类的数据单元与属于第二种类的第二数据单元之间进行选择。
在示例7中公开了示例2的计算节点,其中,数据单元属于第一种类,本地存储器接收属于第一种类的多个数据,并且其中,向数据消费者发送数据单元包括向数据消费者发送属于第一种类的数据中的任一个。
在示例8中公开了示例1-7中的任一个的计算节点,其中,数据拉取引擎还在发送数据之后取消公布数据。
在示例9中公开了示例1-7中的任一个的计算节点,其中,数据拉取引擎还用于:向第二数据拉取引擎发送拉取请求;以及从第二数据拉取引擎接收数据单元。
在示例10中公开了一种主机结构接口,其包括:第一一个或多个逻辑元件,其用于提供网络接口引擎以将主机结构接口通信地耦合到结构;第二一个或多个逻辑元件,其用于提供总线接口引擎以将主机结构接口通信地耦合到数据生产者引擎;以及第三一个或多个逻辑元件,其包括数据拉取引擎,数据拉取引擎用于:确定数据单元能够从数据生产者引擎获得,并且数据单元被存储在本地存储器的存储器位置中;经由结构将数据单元公布为可用;经由结构接收针对数据单元的拉取请求,拉取请求包括数据消费者的节点标识符;以及经由结构向数据消费者发送数据单元。
在示例11中公开了示例10的主机结构接口,其中,数据生产者在本地存储器中在存储器位置处存储数据单元。
在示例12中公开了示例11的主机结构接口,其中,数据拉取引擎还在发送数据之后释放存储器位置。
在示例13中公开了示例12的主机结构接口,其中,释放存储器位置包括将存储器位置标记为可用于重用。
在示例14中公开了示例11的主机结构接口,其中,数据单元属于第一种类,并且本地存储器还接收属于第二种类的第二数据单元。
在实例15中公开了实例14的主机结构接口,其中,拉取请求包括种类名称,并且其中,数据拉取引擎至少部分地基于种类名称在属于第一种类的数据单元与属于第二种类的第二数据单元之间进行选择。
在示例16中公开了示例11的主机结构接口,其中,数据单元属于第一种类,本地存储器接收属于第一种类的多个数据,并且其中,向数据消费者发送数据单元包括向数据消费者发送属于第一种类的数据中的任一个。
在示例17中公开了示例10-16中的任一个的主机结构接口,其中,数据拉取引擎还在发送数据之后取消公布数据。
在示例18中公开了示例10-16中的任一个的主机结构接口,其中,数据拉取引擎还用于:向第二数据拉取引擎发送拉取请求;以及从第二数据拉取引擎接收数据单元。
在实例19中公开了一种提供数据拉取引擎的方法,包括:通信地耦合到结构;通信地耦合到数据生产者;以及确定数据单元能够从数据生产者获得,并且数据单元被存储在本地存储器的存储器位置中;经由结构将数据单元公布为可用;经由结构接收针对数据单元的拉取请求,拉取请求包括数据消费者的节点标识符;经由结构向数据消费者发送数据单元。
在示例20中公开了示例19的方法,还包括在发送数据之后释放存储器位置。
在示例21中公开了示例20的方法,其中,释放存储器位置包括将存储器位置标记为可用于重用。
在示例22中公开了示例21的方法,其中,数据单元属于第一种类,并且本地存储器还接收属于第二种类的第二数据单元。
在示例23中公开了示例19-22中任一个的方法,其中,拉取请求包括种类名称,并且其中,数据拉取引擎至少部分地基于种类名称在属于第一种类的数据单元与属于第二种类的第二数据单元之间进行选择。
在示例24中公开了示例19-22中任一个的方法,其中数据单元属于第一种类,本地存储器接收属于第一种类的多个数据,并且其中,向数据消费者发送数据单元包括向数据消费者发送属于第一种类的数据中的任一个。
在示例25中公开了示例19-22中任一个的方法,还包括在发送数据之后取消公布数据。
在示例26中公开了一种装置,其包括用于执行示例19-25中的任一个的方法的单元。
在示例27中公开了示例26的装置,其中,用于执行方法的单元包括处理器和存储器。
在示例28中公开了示例27的装置,其中,存储器包括机器可读指令,机器可读指令当被执行时使该装置执行示例19-25中的任一个的方法。
在示例29中公开了示例26-28中任一个的装置,其中,该装置是计算系统。
在示例30中公开了至少一种包括指令的计算机可读介质,该指令当被执行时实现如示例19-29中的任一个中描述的方法或者实现如示例19-29中的任一个中描述的装置。
在示例31中公开了一种提供数据拉取引擎的方法,包括:通信地耦合到结构;通信地耦合到数据生产者;以及确定数据单元能够从数据生产者获得,并且数据单元被存储在本地存储器的存储器位置中,其中,数据单元属于第一种类,并且存储器还接收属于第二种类的数据单元;经由结构将数据公布为可用;经由结构接收针对属于第一种类的数据的拉取请求,拉取请求包括数据消费者的节点标识符;以及经由结构向数据消费者发送数据。
在示例32中公开了示例31的方法,其还包括:生成属于第一种类的数据单元;将数据单元存储在存储器中;以及向数据拉取引擎公布数据单元。
在示例33中公开了示例31的方法,其还包括:向生产者发送请求属于第一种类的数据单元的消息,该消息包括节点标识符;接收所请求的数据单元;以及消费数据单元。
在示例34中公开了一种装置,其包括用于执行示例31-33中的任一个的方法的单元。
在示例35中公开了示例34的装置,其中,用于执行方法的单元包括处理器和存储器。
在示例36中公开了示例35的装置,其中,存储器包括机器可读指令,机器可读指令当被执行时使装置执行示例31-33中任一个的方法。
在示例37中公开了示例34-36中任一个的装置,其中,该装置是计算系统。
在示例38中公开了至少一种包括指令的计算机可读介质,该指令当被执行时实现如示例31-37中的任一个中描述的方法或者实现如示例31-37中的任一个中描述的装置。
在示例中还公开了一种多芯片封装,其包括任何前述示例中的计算节点或主机结构接口,其中,生产者引擎被设置在第一芯片上并且数据拉取引擎被设置在第二芯片上。
在示例中还公开了一种片上系统,其包括示例1的计算节点,其中,生产者引擎被设置在第一子组装件上并且数据拉取引擎被设置在第二子组装件上。
在示例中还公开了一种装置,其包括示例1的计算节点,其中,主机结构接口包括可插拔网卡。
在示例中还公开了一种高性能计算系统,其包括示例1的多个计算节点。
Claims (29)
1.一种计算节点,包括:
一个或多个第一逻辑元件,其用于提供数据生产者引擎,以产生数据单元并将所述数据单元公布为可用;以及
结构接口,其将所述计算节点通信地耦合到结构,所述主机结构接口包括用于提供数据拉取引擎的一个或多个第二逻辑元件,所述数据拉取引擎用于:
接收针对所述数据单元的拉取请求,所述拉取请求包括数据消费者的节点标识符;以及
经由所述结构向所述数据消费者发送所述数据单元。
2.根据权利要求1所述的计算节点,其中,所述计算节点在本地存储器中在存储器位置处存储所述数据单元。
3.根据权利要求2所述的计算节点,其中,所述数据拉取引擎还在发送数据之后释放所述存储器位置。
4.根据权利要求3所述的计算节点,其中,释放所述存储器位置包括将所述存储器位置标记为可用于重用。
5.根据权利要求2所述的计算节点,其中,所述数据单元属于第一种类,并且所述本地存储器还接收属于第二种类的第二数据单元。
6.根据权利要求5所述的计算节点,其中,所述拉取请求包括种类名称,并且其中,数据拉取引擎至少部分地基于所述种类名称在属于所述第一种类的所述数据单元与属于所述第二种类的所述第二数据单元之间进行选择。
7.根据权利要求2所述的计算节点,其中,所述数据单元属于第一种类,所述本地存储器接收属于所述第一种类的多个数据,并且其中,向所述数据消费者发送所述数据单元包括向所述数据消费者发送属于所述第一种类的所述数据中的任一个。
8.根据权利要求1-7中任一项所述的计算节点,其中,所述数据拉取引擎还在发送所述数据之后取消公布所述数据。
9.根据权利要求1-7中任一项所述的计算节点,其中,所述数据拉取引擎还用于:
向第二数据拉取引擎发送拉取请求;以及
从所述第二数据拉取引擎接收数据单元。
10.一种多芯片封装,包括根据权利要求1-7中任一项所述的计算节点,其中,所述生产者引擎被设置在第一芯片上,并且所述数据拉取引擎被设置在第二芯片上。
11.一种片上系统,包括根据权利要求1-7中任一项所述的计算节点,其中,所述生产者引擎被设置在第一子组装件上,并且所述数据拉取引擎被设置在第二子组装件上。
12.一种装置,包括根据权利要求1-7中任一项所述的计算节点,其中,所述主机结构接口包括可插拔网卡。
13.一种高性能计算系统,包括多个根据1-7中任一项所述的计算节点。
14.一种主机结构接口,包括:
一个或多个第一逻辑元件,其用于提供网络接口引擎,以将所述主机结构接口通信地耦合到结构;
一个或多个第二逻辑元件,其用于提供总线接口引擎,以将所述结构接口通信地耦合到数据生产者引擎;以及
一个或多个第三逻辑元件,其用于提供数据拉取引擎,所述数据拉取引擎用于:
确定数据单元能够从所述数据生产者引擎获得,并且所述数据单元被存储在本地存储器的存储器位置中;
经由所述结构将所述数据单元公布为可用;
经由所述结构接收针对所述数据单元的拉取请求,所述拉取请求包括数据消费者的节点标识符;以及
经由所述结构向所述数据消费者发送所述数据单元。
15.根据权利要求14所述的主机结构接口,其中,所述数据生产者在本地存储器中在存储器位置处存储所述数据单元。
16.根据权利要求15所述的主机结构接口,其中,所述数据拉取引擎还在发送数据之后释放所述存储器位置。
17.根据权利要求16所述的主机结构接口,其中,释放所述存储器位置包括将所述存储器位置标记为可用于重用。
18.根据权利要求15所述的主机结构接口,其中,所述数据单元属于第一种类,并且所述本地存储器还接收属于第二种类的第二数据单元。
19.根据权利要求18所述的主机结构接口,其中,所述拉取请求包括种类名称,并且其中,数据拉取引擎至少部分地基于所述种类名称在属于所述第一种类的所述数据单元与属于所述第二种类的所述第二数据单元之间进行选择。
20.根据权利要求15所述的主机结构接口,其中,所述数据单元属于第一种类,所述本地存储器接收属于所述第一种类的多个数据,并且其中,向所述数据消费者发送所述数据单元包括向所述数据消费者发送属于所述第一种类的所述数据中的任一个。
21.根据权利要求14-20中任一项所述的主机结构接口,其中,所述数据拉取引擎还在发送所述数据之后取消公布所述数据。
22.根据权利要求14-20中任一项所述的主机结构接口,其中,所述数据拉取引擎还用于:
向第二数据拉取引擎发送拉取请求;以及
从所述第二数据拉取引擎接收数据单元。
23.一种提供数据的方法,包括:
确定数据单元能够从数据生产者获得,并且所述数据单元被存储在本地存储器的存储器位置中;
经由结构将所述数据单元公布为可用;
经由所述结构接收针对所述数据单元的拉取请求,所述拉取请求包括数据消费者的节点标识符;以及
经由所述结构向所述数据消费者发送所述数据单元。
24.根据权利要求23所述的方法,还包括在发送数据之后释放所述存储器位置。
25.根据权利要求24所述的方法,其中,释放所述存储器位置包括将所述存储器位置标记为可用于重用。
26.根据权利要求25所述的方法,其中,所述数据单元属于第一种类,并且所述本地存储器还接收属于第二种类的第二数据单元。
27.根据权利要求23-26中任一项所述的方法,其中,所述拉取请求包括种类名称,并且其中,数据拉取引擎至少部分地基于所述种类名称在属于所述第一种类的所述数据单元与属于所述第二种类的所述第二数据单元之间进行选择。
28.根据权利要求23-26中任一项所述的方法,其中,所述数据单元属于第一种类,所述本地存储器接收属于所述第一种类的多个数据,并且其中,向所述数据消费者发送所述数据单元包括向所述数据消费者发送属于所述第一种类的所述数据中的任一个。
29.根据权利要求23-26中任一项所述的方法,还包括在发送所述数据之后取消公布所述数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/757,892 US10200310B2 (en) | 2015-12-24 | 2015-12-24 | Fabric-integrated data pulling engine |
US14/757,892 | 2015-12-24 | ||
PCT/US2016/063795 WO2017112346A1 (en) | 2015-12-24 | 2016-11-26 | Fabric-integrated data pulling engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108292287A true CN108292287A (zh) | 2018-07-17 |
CN108292287B CN108292287B (zh) | 2021-11-05 |
Family
ID=59086342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680068889.4A Active CN108292287B (zh) | 2015-12-24 | 2016-11-26 | 用于提供结构集成的数据拉取引擎的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10200310B2 (zh) |
CN (1) | CN108292287B (zh) |
WO (1) | WO2017112346A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766300A (zh) * | 2018-12-07 | 2019-05-17 | 曙光信息产业股份有限公司 | 用于多节点服务器的互连板卡 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10200310B2 (en) | 2015-12-24 | 2019-02-05 | Intel Corporation | Fabric-integrated data pulling engine |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010034799A1 (en) * | 2000-04-25 | 2001-10-25 | Matsushita Electric Industrial Co., Ltd. | Packet transmission/reception processor |
CN101098306A (zh) * | 2006-06-27 | 2008-01-02 | 国际商业机器公司 | 在流处理系统中控制何时发送消息的方法和系统 |
US20100195491A1 (en) * | 2009-02-03 | 2010-08-05 | Honeywell International Inc. | Bounded minimal latency for network resources without synchronization |
US20100241813A1 (en) * | 2006-07-26 | 2010-09-23 | Xiaowei Shen | Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications |
US20100306479A1 (en) * | 2009-05-28 | 2010-12-02 | Ezzat Ahmed K | Providing shared memory in a distributed computing system |
US20120215979A1 (en) * | 2011-02-21 | 2012-08-23 | Advanced Micro Devices, Inc. | Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7475274B2 (en) | 2004-11-17 | 2009-01-06 | Raytheon Company | Fault tolerance and recovery in a high-performance computing (HPC) system |
JP2008090876A (ja) * | 2006-09-29 | 2008-04-17 | Toshiba Corp | 不揮発性半導体記憶装置 |
US8484307B2 (en) | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8040900B2 (en) * | 2008-07-16 | 2011-10-18 | International Business Machines Corporation | N-port network adaptor |
EP2722680B1 (en) * | 2012-10-19 | 2018-10-10 | IMEC vzw | Transition delay detector for interconnect test |
US9037898B2 (en) | 2012-12-18 | 2015-05-19 | International Business Machines Corporation | Communication channel failover in a high performance computing (HPC) network |
US10200472B2 (en) | 2014-10-06 | 2019-02-05 | Intel Corporation | Coordination for one-sided memory access in a partitioned global address space |
US10200310B2 (en) | 2015-12-24 | 2019-02-05 | Intel Corporation | Fabric-integrated data pulling engine |
-
2015
- 2015-12-24 US US14/757,892 patent/US10200310B2/en active Active
-
2016
- 2016-11-26 CN CN201680068889.4A patent/CN108292287B/zh active Active
- 2016-11-26 WO PCT/US2016/063795 patent/WO2017112346A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010034799A1 (en) * | 2000-04-25 | 2001-10-25 | Matsushita Electric Industrial Co., Ltd. | Packet transmission/reception processor |
CN101098306A (zh) * | 2006-06-27 | 2008-01-02 | 国际商业机器公司 | 在流处理系统中控制何时发送消息的方法和系统 |
US20100241813A1 (en) * | 2006-07-26 | 2010-09-23 | Xiaowei Shen | Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications |
US20100195491A1 (en) * | 2009-02-03 | 2010-08-05 | Honeywell International Inc. | Bounded minimal latency for network resources without synchronization |
US20100306479A1 (en) * | 2009-05-28 | 2010-12-02 | Ezzat Ahmed K | Providing shared memory in a distributed computing system |
US20120215979A1 (en) * | 2011-02-21 | 2012-08-23 | Advanced Micro Devices, Inc. | Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766300A (zh) * | 2018-12-07 | 2019-05-17 | 曙光信息产业股份有限公司 | 用于多节点服务器的互连板卡 |
Also Published As
Publication number | Publication date |
---|---|
US10200310B2 (en) | 2019-02-05 |
US20170185561A1 (en) | 2017-06-29 |
CN108292287B (zh) | 2021-11-05 |
WO2017112346A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096344A (zh) | 任务管理方法、系统、服务器集群和计算机可读介质 | |
CN112667414A (zh) | 基于消息队列的消息消费方法、装置、计算机设备及介质 | |
US7450008B2 (en) | Sending service data to an RFID tag while an attached computer system is powered off | |
ES2743469T3 (es) | Disposición de ordenadores en racimo para el tratamiento de una tarea de cálculo y procedimiento correspondiente | |
CN109491801B (zh) | 微服务访问调度方法、装置、介质及电子设备 | |
CN108696461A (zh) | 用于智能网络接口卡的共享存储器 | |
CN108337910A (zh) | 用于软件定义的互连交换机的架构 | |
US8566509B2 (en) | Efficiently implementing a plurality of finite state machines | |
CN107710238A (zh) | 具有堆栈存储器的硬件加速器上的深度神经网络处理 | |
US20050262269A1 (en) | System and method for information handling system PCI express advanced switching | |
CN106921590A (zh) | 应用级网络排队 | |
CN107092573A (zh) | 异构计算系统中的工作窃取 | |
US20200285508A1 (en) | Method and Apparatus for Assigning Computing Task | |
CN109426519A (zh) | 线内数据检查以进行工作量简化 | |
CN103500082A (zh) | 用于处理矢量数据的方法、设备和指令 | |
CN110147249B (zh) | 一种网络模型的计算方法及装置 | |
CN110427304A (zh) | 用于银行系统的运维方法、装置、电子设备以及介质 | |
CN107944000A (zh) | 航班运价更新方法、装置、电子设备、存储介质 | |
CN108257078A (zh) | 存储器知晓重排序源 | |
CN113163009A (zh) | 数据传送方法、装置、电子设备及存储介质 | |
CN108292287A (zh) | 结构集成的数据拉取引擎 | |
US8392636B2 (en) | Virtual multiple instance extended finite state machines with wait rooms and/or wait queues | |
CN102687126B (zh) | 在多内核环境中有效分配引用的全局唯一标识符 | |
CN109544392B (zh) | 用于保险订单处理的方法、系统、设备以及介质 | |
CN110457124A (zh) | 针对业务线程的处理方法及其装置、电子设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |