CN107636638B - 通用并行计算架构 - Google Patents
通用并行计算架构 Download PDFInfo
- Publication number
- CN107636638B CN107636638B CN201680029374.3A CN201680029374A CN107636638B CN 107636638 B CN107636638 B CN 107636638B CN 201680029374 A CN201680029374 A CN 201680029374A CN 107636638 B CN107636638 B CN 107636638B
- Authority
- CN
- China
- Prior art keywords
- core
- coprocessor
- compute
- cores
- input data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- 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/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
一种装置包括多个并行计算核(102),其中每个计算核(102)被配置成执行一个或多个处理操作并生成输入数据。该装置还包括与每个计算核(102)相关联的多个并行协处理器(112)。该装置进一步包括多条通信线(122,124),多条通信线(122,124)被配置成将输入数据从每个计算核(102)传输到与计算核(102)中的每一个相关联的协处理器(112)中指定的一个,其中协处理器(112)被配置成处理输入数据并生成输出数据。另外,该装置包括多个简化器电路(115),其中每个计算核(102)与简化器电路(115)中的一个相关联。每个简化器电路(115)被配置成接收来自相关联的计算核(102)的协处理器(112)中的每一个的输出数据,将一个或多个函数应用到输出数据,并且向相关联的计算核(102)提供一个或多个结果。
Description
技术领域
本公开一般涉及用于计算设备和计算系统的硬件架构。更具体而言,本公开涉及一种通用并行计算架构,该通用并行计算架构可以支持高级计算功能,诸如在人工智能中使用的高级计算功能。
背景技术
人脑是典型地包含由1000万亿(one quadrillion)个突触连接的大约1000亿个神经元的大规模并行系统。理想情况下,模拟人脑的操作可以支持高级计算功能,诸如人工智能。然而,传统的模拟人脑或者设计与人脑的能力相媲美的计算系统的尝试通常由于许多原因而不够充分,所述原因诸如是实质上不匹配大脑的连接性或三维结构。
发明内容
本公开提供一种通用并行计算架构。
在第一实施例中,一种装置包括多个并行计算核,其中每个计算核被配置成执行一个或多个处理操作并生成输入数据。该装置还包括与每个计算核相关联的多个并行协处理器。该装置进一步包括多条通信线,多条通信线被配置成将输入数据从每个计算核传输到与计算核中的每一个相关联的协处理器中的指定的一个,其中协处理器被配置成处理输入数据并生成输出数据。另外,该装置包括多个简化器(reducer)电路,其中每个计算核与简化器电路中的一个相关联。每个简化器电路被配置成接收来自相关联的计算核的协处理器中的每一个的输出数据,将一个或多个函数应用到输出数据,并且向相关联的计算核提供一个或多个结果。
在第二实施例中,一种系统包括多个集成电路设备。每个集成电路设备包括多个并行计算核,其中每个计算核被配置成执行一个或多个处理操作并生成输入数据。每个集成电路设备还包括与每个计算核相关联的多个并行协处理器。每个集成电路设备进一步包括多条通信线,多条通信线被配置成将输入数据从每个计算核传输到与计算核中的每一个相关联的协处理器中的指定的一个,其中协处理器被配置成处理输入数据并生成输出数据。另外,每个集成电路设备包括多个简化器电路,其中每个计算核与简化器电路中的一个相关联。每个简化器电路被配置成接收来自相关联的计算核的协处理器中的每一个的输出数据,将一个或多个函数应用到输出数据,并且向相关联的计算核提供一个或多个结果。该系统还包括至少一个高速连接,至少一个高速连接耦合集成电路设备中的通信线中的至少一些。
在第三实施例中,一种方法包括使用多个并行计算核生成输入数据,其中每个计算核被配置成执行一个或多个处理操作。该方法还包括:对于每个计算核,向计算核中的每一个的指定的协处理器发布来自该计算核的输入数据,其中计算核中的每一个与多个并行协处理器相关联。该方法进一步包括:对于每个计算核,处理来自所有的计算核的输入数据,以使用与该计算核相关联的协处理器来生成输出数据。该方法还包括:对于每个计算核,简化来自与该计算核相关联的协处理器的输出数据,以生成一个或多个结果。另外,该方法包括:对于每个计算核,向该计算核提供一个或多个结果。
在第四实施例中,一种方法包括:从第一计算核发出第一指令以用于由与第一计算核相关联的多个并行协处理器执行,并且从第一计算核发出第二指令以用于由与第一计算核相关联的简化器电路执行。该方法还包括:使用第一计算核生成输入数据。该方法进一步包括:使用协处理器执行第一指令,以在协处理器处处理来自第一计算核的输入数据和来自一个或多个额外计算核的输入数据,并且生成输出数据。该方法还包括:使用简化器电路执行第二指令,以将一个或多个函数应用到输出数据,并且生成一个或多个结果。另外,该方法包括:向计算核提供一个或多个结果。
从下面的图、说明书和权利要求书中,其它技术特征对于本领域技术人员而言可能是显而易见的。
附图说明
为了更完整地理解本公开及其特征,现在结合附图对下面的描述进行参考,在附图中:
图1A至图1C图示根据本公开的示例性通用并行计算架构;
图2和图3图示根据本公开的在图1A至图1C的计算架构中的示例性通信;
图4和图5图示根据本公开的在图1A至图1C的计算架构中的示例性协处理器功能性;
图6图示根据本公开的在图1A至图1C的计算架构中的示例性可编程协处理器和简化功能性;
图7和图8图示根据本公开的使用通用并行计算架构的示例性计算系统;以及
图9图示根据本公开的用于使用通用并行计算架构来支持高级计算功能的示例性方法。
具体实施方式
以下讨论的图1A至图9以及用于在本专利文献中描述本发明的原理的各种实施例仅仅通过说明的方式,而不应当以任何方式解释为限制该发明的范围。本领域技术人员将理解:可在任何类型的合适布置的设备或系统中实现该发明的原理。
如上所指出的,人脑是典型地包含由1000万亿个突触连接的大约1000亿个神经元的大规模并行系统。突触支持神经元之间的信号的传输。人脑结构与经典的图灵机非常不同。考虑到人脑中典型地大量神经元和突触,使用经典的图灵机模拟人脑是不切实际的。
虽然存在对人类智能的许多分支,但是一个关键分支是降维,降维是指接收大量(高带宽)的感官输入并将该信息向下简化到较小量(低带宽)的描述性概念的过程。在数学上,这种简化可能使用各种形式的迭代因子分析来实现。各种形式的因子分析趋于具有几个共同特征。例如,在被称为“前向解释模式”的一个操作模式中,因子分析对大量输入执行一些简单计算,累计总和,并对输出执行可能更复杂的计算。在被称为“后向学习模式”的另一个操作模式中,因子分析通过对输出和对应输入的某种简单计算来改变对输入的简单计算。虽然这些计算趋于简单,但是扇入(是指输入的数量)和扇出(是指输出所提供给的目的地的数量)两者数量都可以数以万计。
由于许多原因,甚至可以有些与人脑的能力相媲美的设计系统通常是不够充分的。例如,这样巨大的扇入和扇出不可以被实际映射到二维(2D)电路中,这使得这样的高度连接的计算架构不再是主流。为了设计与人脑的能力相媲美的计算设备,需要具有更多通信带宽的硬件架构。本公开描述包括许多高度互连的处理核的各种新的通用“连接”硬件架构。除了其它事情之外,这些硬件架构可以加速机器学习、科学计算、视频游戏和其它领域中的广义类(broad class)的算法。在一些实施例中,可以使用诸如三维(3D)集成电路技术之类的现代技术以合理的成本来制造这些硬件架构。
图1A至图1C图示根据本公开的示例性通用并行计算架构。特别地,图1A至图1C图示给硬件架构提供高通信带宽的示例性多级结构。不同级的结构执行不同的功能,如下所述。
图1A图示硬件架构的第一级100。该级100包括多个被称为体细胞核(soma core)的计算或处理核102。在其最小形式中,每个体细胞核102可以接收一个或多个数据信号,执行某种类型的处理,并且发送一个或多个输入信号。包括在每个体细胞核102中的用于执行处理操作的结构范围可以从非常简单的处理核到非常复杂的处理核。例如,每个体细胞核102中的处理单元可能是相对过分简单的计算核,诸如通用单指令多数据(SIMD)算术单元。体细胞核102还可能表示完整的处理核,诸如来自ARM、INTEL或其它计算机处理器制造商的处理核。在一些实施例中,可能使用现有的“许多核”处理器设计来实现体细胞核102的群集。然而,任何合适的计算核可能用于实现体细胞核102。尽管这里的硬件架构包括十六个体细胞核102,但是在硬件架构中可能支持任何数量的体细胞核102。在特定实施例中,可能在被称为处理器的单个集成电路芯片内实现这里的所有的体细胞核102。此外,应当注意:体细胞核102可能是或者可能不是同质的。
每个体细胞核102包括处理线路104和至少一个存储器设备106。处理线路104通常表示用于在体细胞核102内执行某种类型的处理的线路。如上所指出的,处理可能是过分简单的或复杂的,并且处理线路104可以取决于待执行的具体处理而变化。存储器设备106通常表示用于存储由体细胞核102使用、生成或接收的数据的任何一个或多个合适的存储和检索设备,诸如一个或多个寄存器。在图1A中,尽管存储器设备106被示为被嵌入在体细胞核102内,但是每个存储器设备106可能整体或部分地位于体细胞核102可访问的任何一个或多个其它合适的位置。
图1B图示与硬件架构的第一级100相关联的硬件架构的第二级110。第二级110包括与每个体细胞核102相关联的许多协处理器112(被称为突触协处理器)。突触协处理器112通常处理在体细胞核102之间通过(以下讨论的)信号线发送的输入数据。每个体细胞核102可能与多个突触协处理器112相关联。作为示例,对于N个体细胞核的群集中的每个体细胞核102,可能提供多达N个突触协处理器112并用于支持从群集中的体细胞核102(包括本身)到该体细胞核102的通信。在一些实施例中,每个体细胞核102通信地耦合到用于群集中的体细胞核102中的每一个的一个突触协处理器112。换句话说,每个体细胞核102可以通信地耦合到所有N个体细胞核102。“本地”或“主机”体细胞核102的突触协处理器112因此用于从所有体细胞核102(包括本身)接收并处理传入的输入数据。在一些实施例中,这有效地允许用于每个体细胞核102的所有N个突触协处理器112并行地从所有N个体细胞核102接收输入数据。注意:虽然可能使用其它实施例,但是每个体细胞核102可典型地包括相同数量的突触协处理器112。
每个突触协处理器112包括支持为体细胞核102处理传入的输入数据的任何合适的结构。突触协处理器112可能具有有限的能力,并且可能是可重编程的。在一些实施例中,每个突触协处理器112包括可编程或其它算术单元113以及至少一个存储器设备114。算术单元113表示被配置成执行一个或多个指令序列以支持硬件架构中的各种功能的任何合适的结构。这些功能的示例包括:以具体序列接收和处理数据,对接收的输入和存储的参数执行算术运算,或者转发值。存储器设备114通常表示用于存储由突触协处理器112使用、生成或接收的数据的任何一个或多个合适的存储和检索设备,诸如一个或多个寄存器。在图1B中,尽管存储器设备114被示为被嵌入在突触协处理器112内,但是每个存储器设备114可能全部或部分地位于突触协处理器112可访问的任何一个或多个其它合适的位置。
硬件架构的第二级110还包括各种简化器电路或“简化器”115。在一些实施例中,对于每个体细胞核102,可能存在一个简化器115。每个简化器115接收由与体细胞核102中的一个相关联的所有的突触协处理器112产生的输出数据,以某种方式处理接收的输出数据,并且将处理的一个或多个结果传递给本地体细胞核102。例如,每个简化器115可能求和或以其它方式累积接收的输出数据值,识别最小或最大的接收的输出数据值,或者执行某种其它处理操作。以这种方式,每个简化器115为体细胞核102处理输出数据,并且简化提供给该体细胞核102的数据量。
每个简化器115包括用于处理多个输出值的任何合适的结构。在一些实施例中,每个简化器115包括处理线路116和至少一个存储器设备117。处理线路116通常表示用于在简化器115内执行某种类型的处理的线路,并且经常比体细胞核102的处理线路104专门化得多。例如,处理线路116可能包括由累加器形成的加法器树,该累加器用于将来自与一个体细胞核102相关联的突触协处理器112的所有的输出值求和。存储器设备117通常表示用于存储由简化器115使用、生成或接收的数据的任何一个或多个合适的存储和检索设备,诸如一个或多个寄存器。在图1B中,尽管存储器设备117被示为被嵌入在简化器115内,但是每个存储器设备117可能全部或部分地位于简化器115可访问的任何一个或多个其它合适的位置。
图1C图示硬件架构的第三级120,第三级120与这里的硬件架构的第一级100和第二级110相关联。第三级120包括通信地耦合体细胞核102的多条信号线122和124,从而支持到体细胞核102、来自体细胞核102以及体细胞核102之间的信号的传输。在一些实施例中,体细胞核102完全连接,因为群集中的每个体细胞核102可以经由信号线122和124以及突触协处理器112的适当配置而与相同群集中的所有其它体细胞核102直接通信。然而,在硬件架构内也可能支持不完全的连接性。
注意:图1C中的信号线122和124的物理布局仅仅用于说明,并且不需要表示硬件架构中信号线的实际物理布置。例如,存在各种方式来设计体细胞核102之间的网络,该网络可支持或可不支持所有的体细胞核102之间的直接通信。因此可能布置信号线122和124以支持硬件架构中任何期望的通信路径。
在操作期间,每个体细胞核102操作以执行期望的指令并处理数据,该数据可能包括从其简化器115或者一个或多个其它源接收的数据。每个体细胞核102可以向其它体细胞核102(并且可能本身)提供其处理操作的结果作为输入数据,并且每个体细胞核102可能经由其突触协处理器112接收由其它体细胞核的处理操作生成的输入数据。用于每个体细胞核102的突触协处理器112可以对输入数据执行期望的处理操作,并且由突触协处理器112输出的数据可以由简化器115为每个体细胞核102进一步处理。来自简化器115的结果被提供给本地/主机体细胞核102,本地/主机体细胞核102可以使用该数据来执行额外的处理操作。
也可能在从体细胞核102到连接的突触处理器112的每个通信中支持多个“信道”,其中每个信道可以与不同的处理操作相关联。例如,每个突触协处理器112可能通过多个信道从一个体细胞核102接收输入数据,并且连接到该体细胞核112的突触协处理器112可能取决于用于输入数据的信道而执行不同的处理操作。此外,每个简化器115可能通过多个信道从其相关联的突触协处理器112接收输出数据,并且简化器115可能取决于由突触处理器112从其接收输出数据的信道而执行不同的处理操作。信道可能表示实际的物理信道(诸如当通过不同的信号线发送数据时)或逻辑信道(诸如当通过具有不同的信道标识符的公共信号线发送数据时)。在这些实施例中,在体细胞核102、突触协处理器112和简化器115中的不同的寄存器或其它存储器位置可能用于存储不同的数据和不同的编程指令。这允许硬件架构支持并发或其它类型的编程操作。
如上所指出的,每个突触协处理器112的存储器设备114可以包括许多寄存器。在一些实施例中,寄存器可以包括与每个可能的连接伙伴(每个体细胞核102)相关联并且用于为每个连接伙伴的一个或多个信道保持传入的输入数据的寄存器。寄存器还可能包括用于保持在编程指令执行期间使用的参数值和其它值的局部寄存器。在特定实施例中,使用响应于传入的输入数据执行的一个或多个指令来描述突触协处理器112的处理操作,并且在突触协处理器112中不存在命令循环。
每个体细胞核102可能单独控制在其突触协处理器112上的程序指令的安装,并且不同的程序指令可以被提供以用于不同的信道。例如,可能存在使体细胞核102将相同的程序加载到其突触协处理器112中的一些或全部的指令。还可能存在使体细胞核102加载其突触协处理器112的参数寄存器(经常具有不同的值)的指令。注意:体细胞核102可能从给定的存储器区域加载所有的该数据,给定的存储器区域足够大以为所有的体细胞核的突触协处理器112的所有寄存器保持值。每个体细胞核102可能被允许读取其突触协处理器112的单独的参数寄存器,而不是每信道寄存器的值。相反,每信道寄存器中的值可以由突触处理器112处理和/或被馈送到相关联的简化器115中,相关联的简化器115可以由本地/主机体细胞核102编程以对为每个信道接收的数据适当地操作。每个简化器115的输入可以表示具体信道上的来自针对相关联的体细胞核102的所有突触协处理器112的输出值。
每个体细胞核102可能支持许多新指令以便于使用突触协处理器112和简化器115,如上所述。例如,每个体细胞核102可能支持用于向所有体细胞核102(的具体信道)发送输入数据元素、向其自己的突触协处理器112的具体信道发送输入数据、用于从其自己的简化器115接收结果、用于在其突触协处理器112和简化器115中安装或选择程序或其它指令、以及用于在突触协处理器112的参数寄存器中存储数据的指令。以下提供硬件架构中支持的示例性指令的额外细节。
在一些实施例中,可能在单个集成电路芯片内实现图1A至图1C中所示的硬件架构。可能以任何合适的方式(诸如通过使用诸如绝缘体上硅(SOI)之类的存在已久的制造技术,或者诸如三维集成电路制造技术之类的更近期开发的技术)制造集成电路芯片。如果需要或期望的话,图1A至图1C中所示的硬件架构的多个实例可能被耦合在一起并被使用,以便扩展可用的体细胞核102的数量。例如,为了提供任何期望数量的体细胞核102,多个集成电路芯片可能通信地耦合在一起(诸如通过使用一个或多个高速连接来耦合硬件架构的每个实例的信号线122和124)。
此外,在一些实施例中,每个体细胞核102可能被配置成执行具体功能或功能的组合,以便在硬件架构中提供期望的功能性。在其它实施例中,每个体细胞核102可能是可编程的,使得体细胞核102的一个或多个功能可以被定义,并且可以随着时间的过去或者如期望的那样改变。类似地,在一些实施例中,每个突触协处理器112和简化器115可能被配置成执行具体功能或功能的组合,以便在硬件架构中提供期望的功能性。在其它实施例中,每个突触协处理器112和简化器115可能是可编程的,使得突触协处理器112和简化器115的一个或多个功能可以被定义,并且可以随着时间的过去或者如期望的那样改变。
注意:由体细胞核102执行的处理可以并行发生,并且由用于每个体细胞核102的突触协处理器112和简化器115执行的处理也可以并行发生。以这种方式,给定体细胞核102之间的充分的通信基础设施,每个体细胞核102能够同时经由多条信号线122和124通信。给定足够数量的体细胞核102、突触协处理器112、简化器115以及信号线122和124,该硬件架构可以支持计算核之间的大量通信连接,并且那些通信连接可以全部同时可用。结果,这种设计表示一个具有更多通信带宽的硬件架构。
虽然图1A至图1C图示通用并行计算架构的一个示例,但是可对图1A至图1C中所示的硬件架构进行各种改变。例如,硬件架构可能支持任何合适数量的体细胞核,连同合适数量的突触协处理器和简化器。此外,可能以任何其它合适的方式(诸如通过为体细胞核或突触协处理器使用共享的计算资源,或者通过使用允许同时执行多于一个操作的多个简化器)来实现每个体细胞核、突触协处理器和简化器。另外,可能被组合、进一步细分、重新布置或省略图1A至图1C中的各种组件,并且可能根据特定需要来添加额外的组件。作为特定示例,一个或多个体细胞核102可不需要与简化器115结合来使用。
图2和图3图示根据本公开的在图1A至图1C的计算架构中的示例性通信。如图2中所示,每个体细胞核102可以具有突触协处理器112,该突触协处理器112接收来自所有体细胞核102(包括其本身)的输入数据。可以为体细胞核102的群集中的所有体细胞核102重复该相同模式。以上所述的信号线122和124可以用于以合适的方式将每个体细胞核102耦合到所有体细胞核102的一个突触协处理器112,以支持这些通信。
当存在N个体细胞核102时,每个体细胞核102可能被提供有N个突触协处理器112(包括其本身的每个体细胞核102一个突触协处理器112)。每个体细胞核102可以向所有体细胞核102广播信息,并且每个体细胞核102可以经由其突触协处理器112而从所有其它体细胞核102接收信息。有效地,在一些实施例中,用于N个体细胞核102中的每一个的N个突触协处理器112可以支持在体细胞核102之间的N个独立的通信网络。
图3图示在体细胞核之间的独立通信网络中的两个的一个具体示例。如图3中所示,一个体细胞核102a可以向系统中的每个体细胞核102的一个突触协处理器112广播输入数据。类似地,另一个体细胞核102b可以向系统中的每个体细胞核102的一个突触协处理器112广播数据。在一些实施例中,由体细胞核102a和102b的广播可以同时发生。结果,N个体细胞核102可以同时参与N个数据广播。
注意:尽管这里的广播被示为以行和列从一个体细胞核到下一个串行发生,但是这仅仅是为了便于说明。正在广播数据的每个突触协处理器112可能替代地经由信号线122和124向所有体细胞核102的突触协处理器112直接广播数据。当然,如果需要或期望的话,也可能允许多个体细胞核102通过相同的信号线122和124广播(诸如在适当的位置用某个种类的寻址或争用机制)。
虽然图2和图3图示在图1A至图1C的计算架构中的通信的示例,但是可对图2和图3进行各种改变。例如,硬件架构可能支持任何合适数量的体细胞核,连同合适数量的突触协处理器。此外,可能组合、进一步细分、重新布置或省略图2和图3中的各种组件,并且可能根据特定需要添加额外的组件。另外,可能支持体细胞核102之间的任何合适的通信。
图4和5图示根据本公开的在图1A至图1C的计算架构中的示例性协处理器功能性。特别地,图4和5图示用于实现以上所述的突触协处理器112的示例性机制。注意:这些示例性实现方式仅仅用于说明,并且突触协处理器112可能以其它方式来实现。
如图4中所示,可以使用以上所述的算术单元113来实现用于第j个体细胞核102的突触协处理器112。算术单元113使用从第i个体细胞核102接收的传入的输入数据来执行一个或多个期望的计算。算术单元113然后向与第j个体细胞核102相关联的简化器115输出得到的输出数据。简化器115可以处理来自与第j个体细胞核102相关联的多个突触协处理器112的多个算术单元113的输出,并且向第j个体细胞核102提供一个或多个结果。
由图4中的算术单元113执行的一个或多个运算可能使用程序(φ)402来定义或控制,并且程序402使用一个或多个参数404来运算。程序402和一个或多个参数404可以被存储在存储器设备114或者一个或多个其它位置内。一个或多个参数404可以由突触协处理器112、由相关联的体细胞核102、或者以任何其它合适的方式来设置或控制。可能由算术单元113执行的示例性运算可以包括加、减或乘以值;在与体细胞核102相关联的所有突触协处理器112上生成恒定值;输出用于突触协处理器112的标识符;基于测试值选择多个值中的一个;或者计算值的正负号(sign)或平方根倒数。
如图5中所示,可以有在硬件架构内执行的多个运算或多组运算。“信道标识符”值可以由突触协处理器112用于识别多个可选择的程序(φ)502中的哪一个将由算术单元113在传入的数据上执行。“信道标识符”也可以用于控制哪个或哪些参数504由算术单元113使用,并且其中由算术单元113生成的结果被发送。可选择的程序502和参数504可能被存储在突触协处理器112的存储器设备114中或者一个或多个其它位置中。
在一些实施例中,算术单元113和简化器115中的每一个可能以流水线的方式实现,并且传入的数据可能表示标量值或小的值的向量。在这些实施例中,可能从第i个体细胞核102接收多个标量值或至少一个值的向量,并且可能由算术单元113将单个程序502或不同程序502应用到该值以产生输出值的序列。输出值的序列可能被提供给简化器115以用于进一步处理。
虽然图4和图5图示图1A至图1C的计算架构中的协处理器功能性的示例,但是可对图4和图5进行各种改变。例如,每个突触协处理器112可能以任何其它定义的或可重构的方式来实现。
图6图示根据本公开的在图1A至图1C的计算架构中的示例性可编程协处理器和简化功能性。特别地,图6图示用于控制以上所述的突触协处理器112和简化器115的编程的示例性机制。
如图6中所示,简化器115被配置成接收来自与体细胞核102相关联的多个突触协处理器112的输出数据。简化器115然后使用来自突触协处理器112的输出来执行至少一个操作(由Ψ标识),以生成被提供给相关联的体细胞核102的至少一个结果。由简化器115执行的一个或多个计算可能包括使用来自多个突触协处理器112的输出执行的任何合适的操作。在一些实施例中,简化器115可能执行一个或多个指令序列以支持硬件架构中的各种功能。例如,在并行地接收来自相关联的体细胞核102的协处理器112的数据之后,简化器115可能对接收的数据执行可编程操作,并且向相关联的体细胞核102输出一个或多个结果。示例性操作可以包括求和或乘以来自所有突触协处理器112的输出,识别来自突触协处理器112的最小或最大输出,或者将具体突触协处理器的值选为输出。
在该结构中可以使用存储器设备602来存储由突触协处理器112执行的一个或多个程序(φ)。存储器设备602还可以用于存储由简化器115执行的一个或多个程序(Ψ)。存储器设备602表示任何一个或多个合适的易失性或非易失性的存储和检索设备,诸如存储器106、114、117中的一个或多个的部分。
虽然图6图示图1A至图1C的计算架构中的可编程协处理器和简化功能性的一个示例,但是可对图6进行各种改变。例如,硬件架构可能支持任何合适数量的体细胞核,连同合适数量的突触协处理器和简化器。此外,可能组合、进一步细分、重新布置或省略图6中的各种组件,并且可能根据特定需要添加额外的组件。
图7和图8图示根据本公开的使用通用并行计算架构的示例性计算系统。如图7中所示,计算系统700包括至少一个处理器702、至少一个存储设备704、至少一个通信单元706和至少一个输入/输出(I/O)单元708。
处理器702可能表示合并以上所述的体细胞核102、突触协处理器112、简化器115以及信号线122和124的集成电路芯片。处理器702执行指令,诸如可被加载到存储器设备710中并且然后被加载到体细胞核102、突触协处理器112和简化器115的寄存器或其它存储器中的指令。处理器702可包括任何合适数量的体细胞核102、突触协处理器112、简化器115以及信号线122和124。
存储器设备710和持久性存储装置712是存储设备704的示例,该示例表示能够存储和便于检索信息(诸如数据、程序代码和/或在临时或永久的基础上的其它合适的信息)的任何一个或多个结构。存储器设备710可表示随机存取存储器或者任何一个或多个其它合适的易失性或非易失性存储设备。持久性存储装置712可包含支持数据的较长期存储的一个或多个组件或设备,诸如只读存储器、硬盘驱动器、闪存或光盘。
通信单元706支持与其它系统或设备的通信。例如,通信单元706可能包括便于通过有线或无线网络通信的网络接口卡或无线收发器。通信单元706可通过任何一个或多个合适的物理或无线通信链路来支持通信。
I/O单元708允许数据的输入和输出。例如,I/O单元708可通过键盘、鼠标、小键盘、触摸屏或其它合适的输入设备提供用于用户输入的连接。I/O单元708还可向显示器、打印机或其它合适的输出设备发送输出。
如果需要或期望的话,图1A至图1C中所示的硬件架构的多个实例可能被耦合在一起并被使用,以便扩展可用的体细胞核102的数量。例如,多个集成电路芯片可能通信地耦合在一起,以提供任何期望数量的体细胞核102。图8中示出这样的示例,其中多处理器布置800可能在计算系统700中用作处理器702或者在另一个计算系统中被使用。这里的多处理器布置800包括由至少一个高速连接耦合的至少两个处理器。在这个示例中,四个处理器802-808由四个高速连接810以环形耦合,但是可能使用任何其它合适数量和布置的处理器和高速连接。
每个高速连接810可以支持用于耦合图1A至图1C中所示的硬件架构的多个实例的任何一个或多个合适的通信路径。例如,每个高速连接810可以通信地耦合到硬件架构的每个实例的第三级120,使得高速连接810支持硬件实例的信号线122和/或124之间的信号的传输。每个高速连接810包括用于在硬件实例之间(诸如在多个集成电路芯片之间)传输信号的任何合适的结构。
各种类型的高速连接810可能用于支持多处理器架构。例如,每个高速连接810可能使用两个集成电路芯片之间的光子连接来实现。作为另一个示例,集成电路芯片本身可能支持“绗缝(quilt)”封装,其中每个集成电路芯片包括沿着至少一侧的电连接,并且集成电路芯片被安装成使得不同芯片上的电连接彼此接触。然而注意:也可能使用任何其它或额外的高速连接810。
虽然图7和图8图示使用通用并行计算架构的计算系统的示例,但是可对图7和图8进行各种改变。例如,图1A至图1C中所示的硬件架构可能在任何其它合适的系统中用于执行任何合适的功能。
图9图示根据本公开的用于使用通用并行计算架构来支持高级计算功能的示例性方法900。为了便于解释,相对于图1A至图1C中所示的硬件架构来描述方法900。然而,方法900可能与任何其它合适的硬件架构一起被使用。
如图9中所示,在步骤902处使用多个并行计算核来执行处理操作。例如这可能包括执行指令的一个或多个处理器中的体细胞核102,以执行各种各样的计算中的任何一个。处理操作可能表示由SIMD体细胞核102执行的过分简单的操作,直到由完全处理器体细胞核102执行的复杂操作。注意:由于操作的依赖性,可以依次执行图9中所示的操作。可以同时执行相同操作的多个独立的链,并且可以使用如以上所述的信道寻址来并行地执行通信和突触/简化器操作。
在步骤904处向其它计算核发布来自每个计算核的处理结果。例如,这可能包括:每个体细胞核102通过信号线122和124向每个体细胞核102的一个突触协处理器112提供其处理结果。在一些实施例中,这导致用于每个体细胞核102的突触协处理器112接收来自所有的体细胞核102的处理结果。
对于每个计算核,来自计算核的处理结果在步骤906处被处理并且在步骤908处被简化。例如这可能包括:与每个体细胞核102相关联的突触协处理器112对来自所有的体细胞核102的处理结果执行某种类型的处理。以下描述可能由突触协处理器112的算术单元113执行的操作的类型的具体示例。这还可能包括:用于每个体细胞核102的简化器115处理用于该体细胞核102的突触协处理器112的输出。以下描述可能由简化器115执行的操作的类型的具体示例。注意:由突触协处理器112和简化器115执行的操作可能被控制并且可以变化(诸如当不同的程序φ和Ψ用于不同的数据信道时)。
在步骤910处,向计算核提供简化的结果。例如这可能包括:简化器115向其相关联的体细胞核102提供输出。在这一点上,可能用在处理操作的进一步执行期间使用简化的结果的计算核来重复方法900。可选地,方法900可能结束,并且随后用新数据来重复。
虽然图9图示用于使用通用并行计算架构来支持高级计算功能的方法900的一个示例,但是可对图9进行各种改变。例如,尽管被示为一系列步骤,但是图9中的各种步骤可能重叠、并行发生、以不同次序发生或发生任何次数。
在以上所述的一些实施例中,每个体细胞核102可以编程其突触协处理器112以执行至少一个程序φ,并且传入的数据一到达就可以执行一个或多个程序φ。用于体细胞核102的简化器115使用来自用于该体细胞核102的所有的突触协处理器112的程序φ的结果来执行至少一个程序Ψ。在特定实施例中,给定固定的向量大小并且没有循环,每个程序φ经常可以在O(1)时间中执行,并且程序Ψ经常可以在O(logN)时间中执行。此外,在特定实施例中,由用于每个体细胞核102的突触协处理器112和简化器115执行的集体处理可能被表达为:
这里,i表示发送者体细胞核102的标识(或者体细胞核102的标识加上体细胞核102的体细胞群集标识符),并且N表示体细胞核102的数量(或者体细胞核102的数量乘以体细胞群集的数量)。此外,j表示信道标识符,并且p表示在突触协处理器112中使用的一个或多个参数(诸如参数402或502)(诸如状态或局部变量,其可能是或可能不是信道专用的)。此外,x i 表示第i个体细胞核102的输出,并且y j 表示作为结果由简化器115提供给信道j中的体细胞核102的输出。另外,φ j ()表示由突触协处理器112为第j个信道使用传入的数据x i 和可能的参数p执行的函数,并且Ψ( )表示由简化器115为本地体细胞核102使用突触协处理器112的输出执行的函数。
φ j ()函数的示例可能包括:
•r = x*a+b
•r = max (x, c)
•r = min (x, c)
•r = select (x, a, b)
•r = index
这里,a、b、c和r可能表示突触协处理器112中的寄存器的名称,并且x可能表示来自体细胞核102的输入值(虽然也可能使用突触协处理器112的另一个寄存器来代替)。select操作测试第一个参数中的条件(诸如通过执行简单的非零测试),并且基于测试的结果返回第二参数或第三参数中的任一个。index操作可专用于具有多个体细胞群集的实现方式。每个体细胞群集可能包括相同数量的体细胞核102。以下提供体细胞群集的更多细节。在一些实施例中,由突触协处理器112实现的功能中没有一个涉及循环。
Ψ( )函数的示例可能包括:
•v = sum (r[i])
•v = max (r[i])
•v = min (r[i])
这里,v表示提供给体细胞核102的简化器115的输出,并且r[i]表示由简化器115从突触协处理器112接收的输入(可能在具有多个体细胞群集的实现方式中获得来自相同突触协处理器112的多个值)。max和min函数中的每一个可能返回(i)最大或最小值和(ii)提供最大或最小值的突触协处理器112的索引值i两者。可能使得使用一个或多个寄存器的体细胞核102可用Ψ( )函数的结果。
在这些实施例中,可能不用以循环运行并主动检索(并且如果有必要的话等待)输入的传统程序编程突触协处理器112。相反,每个信道可以与程序φ相关联,并且程序φ在数据到达信道时可以被标记为可执行,并且在计算资源变得可用时最终被执行。当所有突触协处理器程序φ完成时,可以计算出简化程序Ψ的结果。最小数量的突触协处理器结果刚可用,通过简化程序Ψ的结果的计算就可能开始,同时有诸如以下提及的警告之类的警告。简化程序Ψ的结果可以保存在每个信道寄存器中。当体细胞核102发出读取简化结果的指令时,简化器115然后可准备好为该信道产生下一个简化结果。在那时之前,可能阻止简化器115为该信道的操作。
如果期望的话,可以提取突触协处理器112和简化器115中的寄存器的分配以及信道的分配。例如,不是在程序规范中为这些资源中的每一个引用绝对索引,而是可能使用分配机制来实现多程序执行的等同物。例如,当加载程序(包括φ和Ψ程序)时,可以从寄存器文件的可用寄存器中选择实际使用的寄存器,并且可以选择可用的信道。由于基于传入的数据来调用程序,因此不必创建显式并发。在完成程序时,可以再次使得在寄存器和信道方面使用的资源可用。由突触协处理器112和简化器115执行的实际指令不必知道这其中的任何一个。相反,加载的程序代码的指令可能使用绝对寄存器号码或索引,并且提取可以发生在较高级处,其中由体细胞核102的程序加载之前是基于程序和可用资源的需要的适当的代码生成或重写。
最小数量的突触协处理器结果刚可用就开始由简化程序Ψ计算结果的一个示例性警告如下。取决于操作和可能的数据类型,硬件架构可能支持一个模式,该模式可以通过不遵循指定的操作次序而以可重复性为代价显著地加速程序Ψ的执行。例如,由于可能取消,浮点运算不遵循关联规则。这样的具体示例是当必须以相同次序执行浮点添加以保证每次产生完全相同的结果时。在其中一个输入值尚不可用,而在操作次序中稍后的其它输入值可用的情况下,这可能造成减速。简化器115可能被编程以或者等待输入值以使得始终保持操作次序(导致减速),或者简化器115可能被编程为不按次序执行总和(允许更快地获得结果但是不太可能有重复性)。
如上所指出的,硬件架构的实现方式可以包括体细胞核102的多于一个群集。这样的方法可能在单个集成电路中实现体细胞群集,或者不同的体细胞群集可能被实现为分离的集成电路(并且集成电路可以诸如用电气或光学连接耦合在一起)。如果整个数据集可以被映射到体细胞核102,则可以用这种类型的硬件架构显著地加速几种类型的程序(包括以下更详细地讨论的程序)。
为了便于具有多个体细胞群集的解决方案,可复制一些资源和操作,这取决于每个突触协处理器112的通信伙伴的数量。例如,在简单模型中,每个突触协处理器112可能接收来自恰好一个体细胞核102的结果。在具有多个体细胞群集的解决方案中,每个突触协处理器112可能接收来自每个体细胞群集一个体细胞核102的结果。在突触协处理器程序中,如果复制与数据传送相关的资源(诸如保持发送的数据的寄存器和保持结果的寄存器),这就可以像在具有单个体细胞群集的实现方式中一样来表达。在对于每个突触协处理器寄存器存在S个副本的情况下,单个处理器因此可以被实现成对多达S个体细胞群集起作用。为了使能每个体细胞群集参数,提供对作为数据源的体细胞群集号码的访问可能有用或有必要。这可能使用以上所述的index操作来实现,该index操作除了用于具体通信的体细胞核索引之外还返回体细胞群集号码。
多个体细胞群集的实现方式(如果它们物理上分离的话)可能以任何合适的方式来实现,诸如通过使用光子或其它高速互连来耦合多个集成电路。在其中每个体细胞核102将其结果写入专用总线的情况下,每个体细胞群集中的不同体细胞核102的各自的总线可以被连接,这将每个总线从1:N通信总线变成S:N总线。例如,如果发送的数据携带完整的地址(诸如以最一般的形式[体细胞群集ID,体细胞ID,信道ID]),则这可以被准许,从而允许在每个体细胞群集的基础上路由数据(只要可以确保每个体细胞群集中的每个体细胞核102上的突触协处理器112接收数据)。
另外,存在许多可能的用于使用信号线122和124实现用于将体细胞核102耦合到突触协处理器112的一个或多个网络的方法。例如,如上所述,N各独立网络中的每一个可以具有作为源的N个体细胞核102中的一个,并将该体细胞核102连接到N个突触协处理器112(每个体细胞核102中的一个)。尽管用于每个体细胞核102的每个输出的专用网络将最小化数据传送中可能的争用,但是这意味着在没有传输发生时不使用资源。理想情况下,所有的体细胞核102大致同时步伐一致地工作和发送数据,这可能仅仅用专用信号线才能被处理好。实际上,由于各种因素(诸如像等待资源的执行中的微小效应或者像分支预测的不同动态决策),因此体细胞核102可以失去同步。在那种情况下,传输将不会恰好同时发生。由于发送的数据通常小,因此使用网络中的一个(或少量)来连接体细胞核102可能足够了,而没有显著的减速,并且它将提供改进的资源利用。注意:在以上所述的地址[体细胞群集ID,体细胞ID,信道ID]中,如果每个体细胞群集的每个体细胞核102具有将其连接到每个体细胞核102上的突触协处理器112的其自己的专用网络,可以放弃体细胞ID。连接网络的另一个实现方式可能具有每个体细胞群集一个单个网络,并且所有数据包具有附连到它们的完整地址。
存在各种方式来在体细胞核102之间创建网络。一个可能性是将所有数据分组从中心起点发送到每个接收者。从这个起点,还可以容易地将数据分组发送到其它体细胞群集。这种方法的优点包括直接交付、高吞吐量(与到不同目标的传输不冲突)和低延迟。一个缺点是高成本,尤其是每个体细胞或每个体细胞的群集具有一个网络。
另一个方法将是提供与有限的一组体细胞核102的点对点连接,并且使得接收者将数据包分布得更远。接收者可以连接到体细胞核102的不同子集,并且这些子集可以被选择以确保所有体细胞核102被连接。理想情况下,可以选择子集以简化或最小化网络的“直径”,其中网络的直径是指两个核102之间的最大距离(逐步(step through)达到目标的体细胞核102的数量)。给定关于每个体细胞核102的连接的数量的固定上限,该程度的超立方体架构可能最小化直径。
为了确保所有体细胞核102接收数据并且在尽可能多的单独连接上传播传输,可能使用各种方法。例如,公知的算法可以考虑发送者体细胞核102的索引以及从其接收数据的链路。在那些情况下,可以按固定模式发送来自每个体细胞核102的数据,但是该模式对于单独的体细胞核102可以不同,最大化连接的利用。由于每个体细胞核102可能仅仅与选定的邻居通信并且邻居可能转发数据(如果有必要的话),因此该方法还允许为每个网络消除中心开始位置。网络中的一个或多个系统核102可能负责将数据发送给其它体细胞群集,并且不同的其它体细胞核102可负责与不同的体细胞群集的通信。
也可以使用动态算法。例如,可以将每个接收的包从一个体细胞核102转发到所有邻居(除了发送分组的体细胞核102)。每个邻居体细胞核102然后可能跟踪它是否已经看到该分组。如果是这样,可以简单地丢弃分组。如果不是,用于邻居体细胞核102的突触协处理器112接收并转发分组。该方法的一个优点是:网络可以被更快地完全充满。该方法的另一个优点是:将多个体细胞群集集成到设计中更直接。将1:N总线架构(其从不需要检查发送者冲突)变成S:N架构可以是一大步。如果一个体细胞群集的体细胞核102将分组转发到另一个体细胞群集中的另一个体细胞核102,后者可以与它将如何考虑任何其它传入的分组类似地考虑该分组。事实上,体细胞核间链路可以被视为正常的体细胞间、体细胞群集内的连接。
如上所指出的,许多新指令可以用来便于突触协处理器112和简化器115的使用。这些指令包括由体细胞核102执行的指令以及提供给突触协处理器112和简化器115并由突触协处理器112和简化器115执行的指令。下面呈现可以用于支持新硬件架构的新指令的类型的示例。注意:尽管以下描述具体指令,但是可能如所需或所期望地在硬件架构中支持其它或额外的指令。
表1图示可能由体细胞核102和突触协处理器执行的示例性指令。在表1中,oreg表示体细胞核寄存器(诸如在存储器设备106中),并且yreg表示突触协处理器寄存器(诸如在存储器设备114中)。
<u>指令</u> | <u>描述</u> |
发送<i>oreg</i>→<i>channel</i> | 使用具体信道从<i>oreg</i>寄存器向<i>其它</i>体细胞核的突触协处理器广播体细胞核的值(这可能与其它信道上的广播并行地完成)。 |
接收<i>channel</i>→<i>oreg1</i>[,<i>oreg2</i>] | 从本地简化器接收<i>信道</i>中最后一个计算的结果。结果存储在提供的寄存器中。为然后需要两个结果寄存器的某些简化操作返回两个结果。 |
存储<i>oreg</i>→<i>channel</i> | 使用具体信道从<i>oreg</i>寄存器向<i>该</i>体细胞核的所有突触协处理器广播体细胞核的值。 |
突触<i>channel</i> {recv→<i>yreg</i>...}[reduce...] | 从指定的信道接收值并将其存储在突触协处理器的<i>yreg</i>寄存器中。数据源可以是“发送”或“存储”指令。该事件然后可进一步触发突触协处理器指令。在完成时,简化步骤可选地与如表2中所示的不同操作一起发生。 |
id→<i>oreg</i> | 将体细胞核标识符提供到<i>oreg</i>寄存器中 |
表1。
表2图示可能由简化器115执行的示例性操作。简化操作可能以对数形式花费许多周期,所以简化操作可能受益于在不同树级中流水线化多个这样的操作。
<u>指令</u> | <u>描述</u> |
简化添加→<i>oreg</i> | 将所有突触协处理器的输出求和,并且在<i>oreg</i>寄存器中存储该总和。 |
简化min→<i>oreg1</i>,<i>oreg2</i> | 从其第一结果识别所有突触协处理器的输出的最小值,并且在<i>oreg1</i>寄存器中存储最小值。在<i>oreg2</i>寄存器中存储突触协处理器提供最小值的第二结果。 |
简化max→<i>oreg1</i>,<i>oreg2</i> | 从其第一结果识别所有突触协处理器的输出的最大值,并且在<i>oreg1</i>寄存器中存储最大值。在<i>oreg2</i>寄存器中存储突触协处理器提供最大值的第二结果。 |
简化一个<i>yreg</i>→<i>oreg</i> | 在<i>oreg</i>寄存器中为具体信道存储具体突触协处理器的<i>yreg</i>结果的值。 |
表2。
在一些实施例中,每个突触协处理器112可以执行SIMD操作。在具体信道上的数据通信之前,每个体细胞核102可以为该信道将指令的序列上传到本地突触协处理器112。另外,每个体细胞核102可以通过广播为该信道将指令的序列上传到其所有突触协处理器112。体细胞核102可以进一步将操作编程到简化器115中,一旦必要的输入的数据变得可用,该操作就应当被执行。表3图示可能被上传到突触协处理器112以用于执行的指令的类型的示例。
<u>指令</u> | <u>描述</u> |
id→<i>yreg</i> | 将突触标识符提供到突触协处理器的<i>yreg</i>寄存器中。在具有多个体细胞群集的实现方式的情况下,输出也包括体细胞群集的差异。 |
添加<i>yreg1 yreg2</i>→<i>yreg3</i> | 计算两个突触协处理器寄存器<i>yreg1</i>和<i>yreg2</i>的总和,并且在<i>yreg3</i>中存储结果 |
减去<i>yreg1 yreg2</i>→<i>yreg3</i> | 计算两个突触协处理器寄存器<i>yreg1</i>和<i>yreg2</i>的差,并且在<i>yreg3</i>中存储结果 |
乘以<i>yreg1 yreg2</i>→<i>yreg3</i> | 计算两个突触协处理器寄存器<i>yreg1</i>和<i>yreg2</i>的乘积,并且在<i>yreg3</i>中存储结果 |
min<i> yreg1 yreg2</i>→<i>yreg3</i> | 计算两个突触协处理器寄存器<i>yreg1</i>和<i>yreg2</i>的最小值,并且在<i>yreg3</i>中存储结果 |
max<i> yreg1 yreg2</i>→<i>yreg3</i> | 计算两个突触协处理器寄存器<i>yreg1</i>和<i>yreg2</i>的最大值,并且在<i>yreg3</i>中存储结果 |
invsqrt<i> yreg1</i>→<i>yreg2</i> | 计算突触协处理器寄存器<i>yreg1</i>的倒数平方根,并且在<i>yreg2</i>中存储结果 |
如果<i>yreg1,</i>则<i>yreg2,</i>否则<i>yreg3</i>→<i>yreg4</i> | 基于<i>yreg1</i>选择两个突触协处理器寄存器<i>yreg2</i>和<i>yreg3</i>中的一个,并且在<i>yreg4</i>中存储选定的值 |
返回<i>yreg1[, yreg2]</i> | 向简化器传递一个或多个值<i>yreg1</i>(并且在一些情况下为<i>yreg2</i>)和信号完成 |
表3。
以上所述的硬件架构可以加速机器学习、科学计算、视频游戏和其它领域中的一大类算法。基于以上的指令的类型,下面描述如何使用本专利文献中所述的硬件架构来加速和解决六个示例性类型的问题。
作为第一示例,可以由提出的架构加速的深度学习中使用的一个算法是稀疏编码。以其最简单的形式,稀疏编码采用具有||x||=1的归一化的输入向量x,并且计算最小化能量e的归一化的稀疏输出向量y,能量e被定义为:
这里,F是因子矩阵,并且||y||=1。此外,表示y中的条目的绝对值的总和,并且λ是控制输出的稀疏性的常数。在无监督学习模式中,选择因子矩阵F以最小化一组训练输入x i 上的能量e i 的总和E。完成两个最小化的一种方式是梯度下降,其中负梯度被定义为:
接着强加约束||y i ||=1。这里,sgn y表示y中的条目的符号的向量。
为了计算(y-Fx),训练输入x和输出y可以驻留在共享的虚拟或本地体细胞存储器中。因子矩阵F(其不是稀疏的)的条目可以驻留在突触协处理器112的寄存器中。具体地,因子矩阵F的条目F jk 可以驻留在用于第j个体细胞核102的第k个突触协处理器112的寄存器中。由体细胞核102向其突触协处理器112广播的SIMD指令可以使用相对寻址,使得同时在体细胞核102上,第k个体细胞核102可以向第j个体细胞核102的第k个突触协处理器112广播输入条目x k 。以SIMD方式的第j个体细胞核102的第k个突触协处理器执行乘法F jk x k ,该乘法F jk x k 然后在该体细胞核的突触协处理器112上以对数时间由第j个体细胞核102的简化器115求和,以产生(Fx) j 以及因而第j个条目(y-Fx) j 。
为了为F计算梯度下降,条目F jk 与(y-Fx) j x k 成比例地递增。第j个体细胞核102刚刚计算了(y-Fx) j ,并且其第k个突触协处理器112已经接收最近的x k 值并将其存储在突触协处理器112的寄存器中。因而,第j个体细胞核102向其第k个突触协处理器112广播(y-Fx) j ,该突触协处理器112然后以SIMD方式将结果乘以存储的x k 值,并将该值的倍数添加到存储在该突触协处理器112处的F jk 值。
为了将这用伪代码表达,由于体细胞核102是多指令多数据(MIMD)核,因此采用惯例,其中i表示在其上放置指令的体细胞核102的索引。由于MIMD,所以指令可由i参数化。相比之下,由于突触协处理器112可能是SIMD核,因此体细胞核102可以向其所有的突触协处理器112广播相同的指令序列。为了清楚起见,寄存器被标记有变量名称而不是寄存器号码。考虑到这些惯例,用于深度学习问题的稀疏编码可以使用如下的硬件架构来解决。
作为第二示例,在可以由提出的架构加速的深度学习中使用的另一个算法涉及受限制的波尔兹曼机器。在这种类型的网络中,{-1,1}值的输入向量x和输出向量y可以通过如下的波尔兹曼分布概率地相关:
给定输入,这个网络在输出是有条件独立的意义上是“受限”的,反之亦然。这意味着:给定输入,输出可以被用概率独立地采样,该概率被表达为:
其中x是训练输入,y是如上所解释地从x采样的,x'是从y采样的,并且y'是从x'采样的。
为了实现这个问题,训练输入x k 和输出y j 可以驻留在共享的虚拟或本地体细胞存储器中。耦合F jk 可以驻留在突触协处理器112的寄存器中。具体地,每个耦合F jk 可以驻留在第j个体细胞核102的第k个突触协处理器112的寄存器中。为了解释如何加速该算法,首先解释采样步骤。给定输入向量x,在体细胞核102上同时经由SIMD通信,第k个体细胞核102向第j个体细胞核102的第k个突触协处理器112广播输入条目x k 。第j个体细胞核102的第k个突触协处理器112然后以SIMD方式执行乘法F jk x k ,该乘法F jk x k 然后在该体细胞的突触协处理器112上以对数时间由第j个体细胞核102的简化器115求和,以产生。第j个体细胞核102然后计算该和的逻辑函数,并将其用作从{-1,1}随机采样y j 的概率。
接下来,发生梯度的计算。从训练输入x开始,执行如以上所述的采样步骤三次,以产生第j个体细胞核102中的y,第k个体细胞核102中的x'以及第j个体细胞核102中的y'。第j个体细胞核102向其所有突触协处理器112广播y j 和(y') j ,以存储在那里的寄存器中。然后,高带宽通信用于从第k个体细胞核102向每个体细胞核102的第k个突触协处理器112同时发送(x') k 。最后,第j个体细胞核102的第k个突触协处理器112计算(y') j (x') k -y j x k ,并从它保持的值F jk 中减去这个的倍数。
在伪码中,正向采样算法可以被表达为:
正向采样算法可以是类似的。给定采样,梯度算法可以被表达为:
作为第三示例,可以受益于更好的通信的不同的机器学习方法是层次聚类。最简单的层次聚类方法从其自己的聚类中的每个项目开始。然后,在每个层次级上,层次聚类方法将由最小的最小距离分离的两个聚类分组成单个聚类。
改进的层次聚类方法的第一步骤涉及计算聚类之间的距离的初始矩阵。每个活动的体细胞核102可以表示聚类,并且其突触协处理器112可以将平方距离存储到其它聚类。在第一次迭代中,每个聚类是单个项目,所以每个活动的体细胞核102向其它体细胞核102的对应的突触协处理器112广播其项目的坐标,并且其突触协处理器112并行计算其它项目到其自己的项目的平方距离。改进的层次聚类方法的第二步骤涉及找到聚类之间的最小平方距离。每个体细胞核102(通过其简化器115)使用最小操作来简化其自己的突触协处理器的平方距离,并且每个体细胞核102向所有体细胞核102广播该数字,这再次用最小操作简化值(通过其简化器115)。第二最小操作在所有体细胞核102上产生相同的结果(假设在相等值(诸如选择最低索引的突触核的值)的情况下存在可预测的连接中断器)。替代方案是对一个体细胞核102执行第二最小操作,并且向所有其它一些核102广播回结果。
改进的层次聚类方法的第三步骤涉及找到由该最小距离分离的两个聚类。对应于最佳聚类的体细胞核102计算到除了本身以外的体细胞核102的最小距离,并且然后该下一个最佳聚类被广播回到所有体细胞核102。改进的层次聚类方法的第四步骤涉及将两个选择的聚类组合成单个聚类。每个体细胞核102取其到最佳和次最佳聚类的距离的最小值,将最小距离存储回对应于最佳聚类的突触协处理器112中,并且在该体细胞核的信道上广播最小距离。对应于最佳聚类的体细胞核102然后使其所有的突触协处理器112用这些广播的距离替换它们的距离。最后,下一个最佳体细胞核102及其对应的突触协处理器112退出计算。然后重复第二至第四步骤,直到仅仅存在单个聚类。
在伪代码中,计算平方距离矩阵的第一步骤(对于每个坐标重复)可以被表达为:
找到聚类之间的最小距离的第二步骤可以被表达为:
找到由最小距离分离的两个聚类的第三步骤可以被表达为:
组合两个最近的聚类(并且将他们中的一个去激活)的第四步骤可以被表达为:
作为第四示例,另一个流行的机器学习方法涉及贝叶斯网络,贝叶斯网络将许多变量的复杂联合概率函数分解为条件概率的乘积,该条件概率中的每一个仅仅涉及少量的变量(直到网络的入度(in-degree))。然后问题是计算每个变量的边际分布。在标准的串行架构中,这可以使用置信传播算法来完成,置信传播算法花费与以下成比例的时间:
变量×入度×2入度 (9)
该算法迭代计算以上数量的乘积,并且然后计算2入度的变量×入度总和——各自的这样的乘积。
使用新的硬件架构,只要存在足够的体细胞核102和突触协处理器112,这就可以在恒定的时间内来完成。到任何一个体细胞核102的扇入仅仅是2入度,所以这不会使得通信饱和。为了计算乘积,人们或者可以累积log的总和(其中在体细胞核102中执行exp和log运算),或者扩展简化器115的可用累积方法以包括乘积以及总和。
作为第五示例,与可能用架构加速的人工智能无关的其它应用包括分子模拟和虚拟现实。对于这些应用,假设除了乘法和加法之外,突触协处理器112还具有用于倒数平方根运算(1 /)的硬件。这两个应用中的昂贵步骤(expensive step)是相似的。聚焦于分子模拟,它是库仑势的计算:
其中q j 是第j个电荷,r jk 是第j个和第k个电荷之间的距离。高带宽通信满足以下需求:同时广播所有j和k上的从第k个体细胞核102到第j个体细胞核102的第k个突触协处理器的第k个电荷的坐标。在每个突触协处理器112中,加法和乘法用于计算r jk 2 ,并且然后倒数平方根用于计算1/r jk 。最后,在其突触协处理器112上由第j个体细胞核102使用累加器(简化器115)来计算总和。
作为第六示例,可以由提出的架构从二次到恒定时间加速的另一类算法涉及几何算法,诸如凸包算法。这些算法可不需要提出的架构的非线性能力,并且可仅仅依赖于提出的架构的矩阵处理能力。已示出:这些高维算法的一个关键步骤是动态行列式计算。该计算可以通过矩阵-向量乘法来以二次时间连续地完成。然而,可以使用提出的架构来将这些乘法简化到恒定时间。
注意:以上提供这些示例仅仅是为了演示可能如何使用本专利文献中所述的硬件架构解决对特定问题的特定解决方案。当然,硬件架构可能用于执行其它功能。此外,可能使用使用硬件架构实现的其它解决方案来解决以上所述的特定问题。
本专利文献中所述的硬件架构和相关联的指令/操作可以提供优于现有方法的各种优点,这取决于实现方式。例如,本公开提供允许架构与人脑的能力相媲美的硬件架构(如果用足够数量的组件实现的话)。此外,硬件架构的功能性可以用于改进其它领域的计算,诸如人工智能、深度学习、分子模拟和虚拟现实。
在一些实施例中,在本专利文献中所述的各种功能由计算机程序实现或支持,该计算机程序由计算机可读程序代码形成并体现在计算机可读介质中。短语“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。短语“计算机可读介质”包括能够由计算机访问的任何类型的介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、硬盘驱动器、光盘(CD)、数字视频盘(DVD)或任何其它类型的存储器。“非暂时性”计算机可读介质排除传输暂时性电信号或其它信号的有线、无线、光学或其它通信链路。非暂时性计算机可读介质包括其中可以永久存储数据的介质以及其中可以存储并且随后重写数据的介质,诸如可重写光盘或可擦除存储器设备。
阐述贯穿本专利文献使用的某些词语和短语的定义可能是有利的。术语“应用”和“程序”是指适于以合适的计算机代码(包括源代码、目标代码或可执行代码)的实现方式的一个或多个计算机程序、软件组件、指令集、过程、功能、对象、类、实例、相关数据或其一部分。术语“通信”及其派生词包含直接和间接通信两者。术语“包括”和“包含”及其派生词意为包括但不限于。术语“或”是包括性的,意为和/或。术语“与……相关联”及其派生词可能意为包括,被包括在……内,与……互连,包含,被包含在……内,连接到……或与……连接,耦合到……或与……耦合,与……可通信,与……协作,交织,并列,与……接近,绑定到……或与……绑定,具有,具有……的属性,和……具有关系或与……具有关系,等等。当与项目列表一起使用时,短语“……中的至少一个”意为可使用所列项目中的一个或多个的不同组合,并且可需要列表中的仅仅一个项目。例如,“A、B和C中的至少一个”包括下面的组合中的任一个:A、B、C、A和B、A和C、B和C以及A和B和C.
本专利文献中的描述不应被理解为暗示任何特定的元素、步骤或功能是必须包括在权利要求范围中的必要或关键的要素。此外,没有任何权利要求旨在援引关于任何所附权利要求或权利要求元素的35 U.S.C.§112(f),除非在特定权利要求中明确使用确切的词语“用于……的装置”或“用于……的步骤”,随后是标识功能的分词短语。在权利要求内使用诸如(但不限于)“机构”、“模块”、“设备”、“单元”、“组件”、“元件”、“构件”、“装置”、“机器”、“系统”、“处理器”、“处理设备”或“控制器”之类的术语被理解为并且旨在指的是对相关领域技术人员已知的结构,如由权利要求本身的特征进一步修饰或增强的,并且不是打算援引35 U.S.C.§112(f)。
尽管本公开已经描述了某些实施例和一般相关联的方法,但是这些实施例和方法的变更和置换对于本领域技术人员将是显而易见的。相应地,示例性实施例的以上描述不限定或限制本公开。其它变化、替换和变更也是可能的,而不脱离如由所附权利要求限定的本公开的精神和范围。
Claims (37)
1.一种装置,包括:
多个并行计算核,每个计算核被配置成执行一个或多个处理操作并生成输入数据;
多个并行协处理器,其中每个协处理器是计算核之一的一部分;
多条通信线,被配置成将输入数据从每个计算核传输到与所述计算核之一相关联的协处理器中指定的一个,所述协处理器被配置成处理所述输入数据并生成输出数据;以及
多个简化器电路,其中每个简化器电路是计算核之一的一部分,并且其中每个简化器电路被配置成接收来自相关联的计算核的每个协处理器的所述输出数据,将一个或多个函数应用到所述输出数据,并且向所述相关联的计算核提供一个或多个结果。
2.根据权利要求1所述的装置,其中计算核、协处理器、简化器电路和通信线位于集成电路芯片的多个层中。
3.根据权利要求1所述的装置,其中计算核是完全连接的,因为每个计算核能够经由通信线和协处理器与所有其它计算核直接通信。
4.根据权利要求1所述的装置,其中每个计算核中被配置成执行支持以下中的至少一个的指令:
通过通信线的低延迟发送操作;
向计算核的指定的协处理器发送输入数据;以及
编程计算核的相关联的协处理器。
5.根据权利要求1所述的装置,其中每个协处理器被配置成执行支持以下中的至少一个的指令:
以具体顺序接收和处理输入数据;
对接收的输入数据和存储的参数执行一个或多个可编程操作;以及
向简化器电路转发输出数据。
6.根据权利要求5所述的装置,其中所述一个或多个可编程操作包括以下中的一个或多个:加法,乘法,最小值,最大值,平方根倒数,基于测试值的值的选择,以及唯一协处理器标识符的输出。
7.根据权利要求1所述的装置,其中每个简化器电路被配置成执行支持以下中的至少一个的指令:
并行地接收来自相关联的计算核的协处理器的输出数据;
对接收的输出数据执行一个或多个可编程操作;以及
向相关联的计算核转发一个或多个结果。
8.根据权利要求7所述的装置,其中一个或多个可编程操作包括以下中的一个或多个:总和,最小值,最大值,以及值的选择。
9.根据权利要求1所述的装置,其中协处理器和通信线形成计算核之间的多个通信信道。
11.根据权利要求10所述的装置,其中Ψ j 和Φ j 分别表示简化器电路和协处理器的可选函数。
12.根据权利要求1所述的装置,其中:
计算核、协处理器和简化器电路被配置成通过多个信道通信;以及
协处理器和简化器电路被配置成使得由协处理器和简化器电路执行的操作基于通过其接收具体输入数据的信道而变化。
13.根据权利要求1所述的装置,其中:
计算核形成第一群集的计算核;
所述装置进一步包括至少一个额外群集的计算核;以及
协处理器被配置成接收来自至少一个额外群集的计算核的输入数据。
14.一种系统,包括:
多个集成电路设备,每个集成电路设备包括:
多个并行计算核,每个计算核被配置成执行一个或多个处理操作并生成输入数据;
多个并行协处理器,其中每个协处理器是计算核之一的一部分;
多条通信线,被配置成将所述输入数据从每个计算核传输到与所述计算核之一相关联的协处理器中指定的一个,协处理器被配置成处理所述输入数据并生成输出数据;以及
多个简化器电路,其中每个简化器电路是计算核之一的一部分,并且其中每个简化器电路被配置成接收来自相关联的计算核的每个协处理器的所述输出数据,将一个或多个函数应用到所述输出数据,并且向相关联的计算核提供一个或多个结果;以及
耦合集成电路设备中的通信线中的至少一些的至少一个高速连接。
15.根据权利要求14所述的系统,其中在每个集成电路设备中,计算核是完全连接的,因为每个计算核能够经由通信线和协处理器与所有其它计算核直接通信。
16.根据权利要求14所述的系统,其中每个计算核被配置成执行支持以下中的至少一个的指令:
通过通信线的低延迟发送操作;
向计算核的指定的协处理器发送输入数据;以及
编程计算核的相关联的协处理器。
17.根据权利要求14所述的系统,其中每个协处理器被配置成执行支持以下中的至少一个的指令:
以具体顺序接收和处理输入数据;
对接收的输入数据和存储的参数执行一个或多个可编程操作;以及
向简化器电路转发输出数据。
18.根据权利要求17所述的系统,其中所述一个或多个可编程操作包括以下中的一个或多个:加法,乘法,最小值,最大值,平方根倒数,基于测试值的值的选择,以及唯一协处理器标识符的输出。
19.根据权利要求14所述的系统,其中每个简化器电路被配置成执行支持以下中的至少一个的指令:
并行地接收来自相关联的计算核的协处理器的输出数据;
对接收的输出数据执行一个或多个可编程操作;以及
向相关联的计算核转发一个或多个结果。
20.根据权利要求19所述的系统,其中所述一个或多个可编程操作包括以下中的一个或多个:总和,最小值,最大值,以及值的选择。
22.根据权利要求14所述的系统,其中:
计算核、协处理器和简化器电路被配置成通过多个信道通信;以及
协处理器和简化器电路被配置成使得由协处理器和简化器电路执行的操作基于通过其接收具体输入数据的信道而变化。
23.根据权利要求14所述的系统,其中对于每个集成电路设备:
计算核形成第一群集的计算核;
集成电路设备进一步包括至少一个额外群集的计算核;以及
协处理器被配置成接收来自至少一个额外群集的计算核的输入数据。
24.一种方法,包括:
使用多个并行计算核生成输入数据,每个计算核被配置成执行一个或多个处理操作;
对于每个计算核,经由信号线向每个计算核的指定的协处理器提供来自该计算核的输入数据,每个计算核与多个并行协处理器相关联,其中每个协处理器是计算核之一的一部分;
对于每个计算核,处理来自所有的计算核的输入数据,以使用作为该计算核的一部分的协处理器来生成输出数据;
对于每个计算核,简化来自作为该计算核的一部分的协处理器的输出数据,以生成一个或多个结果;以及
对于每个计算核,向该计算核提供所述一个或多个结果。
25.根据权利要求24所述的方法,其中多条通信线将输入数据从计算核传输到协处理器。
26.根据权利要求25所述的方法,进一步包括使用每个计算核来执行支持以下中的至少一个的指令:
通过通信线的低延迟发送操作;
向计算核的指定的协处理器发送输入数据;以及
编程计算核的相关联的协处理器。
27.根据权利要求24所述的方法,进一步包括使用每个协处理器来执行支持以下中的至少一个的指令:
以具体顺序接收和处理输入数据;
对接收的输入数据和存储的参数执行一个或多个可编程操作;以及
向简化器电路转发输出数据,简化器电路将来自与计算核中的一个相关联的协处理器的输出数据简化到所述一个或多个结果中。
28.根据权利要求27所述的方法,其中所述一个或多个可编程操作包括以下中的一个或多个:加法,乘法,最小值,最大值,平方根倒数,基于测试值的值的选择,以及唯一协处理器标识符的输出。
29.根据权利要求24所述的方法,进一步包括使用多个简化器电路中的每一个来执行支持以下中的至少一个的指令:
并行地接收来自相关联的计算核的协处理器的输出数据;
对接收的输出数据执行一个或多个可编程操作;以及
向相关联的计算核转发一个或多个结果。
30.根据权利要求29所述的方法,其中一个或多个可编程操作包括以下中的一个或多个:总和,最小值,最大值,以及值的选择。
32.根据权利要求24所述的方法,其中:
计算核通过多个信道通信;以及
输入数据的处理和输出数据的简化基于通过其接收具体输入数据的信道而变化。
33.根据权利要求24所述的方法,其中:
计算核及其相关联的协处理器被划分成群集;以及
与每个计算核相关联的协处理器接收来自群集中的一个或多个中的计算核的输入数据。
34.一种方法,包括:
从第一计算核发出第一指令以用于由作为第一计算核的一部分的多个并行协处理器执行,并且从第一计算核发出第二指令以用于由作为第一计算核的一部分的简化器电路执行;
使用第一计算核生成输入数据;
使用协处理器执行第一指令,以在协处理器处理来自第一计算核的输入数据和来自一个或多个额外计算核的输入数据,并且生成输出数据;
使用简化器电路执行第二指令,以将一个或多个函数应用到输出数据,并且生成一个或多个结果;以及
向计算核提供一个或多个结果。
35.根据权利要求34所述的方法,进一步包括使用第一计算核来执行支持以下中的至少一个的指令:
通过耦合到第一计算核的通信线的低延迟发送操作;
向协处理器发送输入数据;以及
编程协处理器。
36.根据权利要求34所述的方法,进一步包括使用协处理器来执行支持以下中的至少一个的第一指令:
以具体顺序接收和处理输入数据;
对接收的输入数据和存储的参数执行一个或多个可编程操作;以及
向简化器电路转发输出数据。
37.根据权利要求34所述的方法,进一步包括使用简化器电路来执行支持以下中的至少一个的第二指令:
并行地接收来自协处理器的输出数据;
对接收的输出数据执行一个或多个可编程操作;以及
向计算核转发一个或多个结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111092481.XA CN113641627A (zh) | 2015-05-21 | 2016-05-17 | 通用并行计算架构 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562165052P | 2015-05-21 | 2015-05-21 | |
US62/165052 | 2015-05-21 | ||
US201562173866P | 2015-06-10 | 2015-06-10 | |
US62/173866 | 2015-06-10 | ||
PCT/US2016/032934 WO2016187232A1 (en) | 2015-05-21 | 2016-05-17 | General-purpose parallel computing architecture |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111092481.XA Division CN113641627A (zh) | 2015-05-21 | 2016-05-17 | 通用并行计算架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107636638A CN107636638A (zh) | 2018-01-26 |
CN107636638B true CN107636638B (zh) | 2021-10-26 |
Family
ID=57320620
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680029374.3A Active CN107636638B (zh) | 2015-05-21 | 2016-05-17 | 通用并行计算架构 |
CN202111092481.XA Pending CN113641627A (zh) | 2015-05-21 | 2016-05-17 | 通用并行计算架构 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111092481.XA Pending CN113641627A (zh) | 2015-05-21 | 2016-05-17 | 通用并行计算架构 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10108580B2 (zh) |
EP (1) | EP3298486B1 (zh) |
JP (3) | JP6816027B2 (zh) |
CN (2) | CN107636638B (zh) |
AU (3) | AU2016264100B2 (zh) |
CA (1) | CA2984155A1 (zh) |
ES (1) | ES2929626T3 (zh) |
HK (1) | HK1252999A1 (zh) |
TW (3) | TWI704465B (zh) |
WO (1) | WO2016187232A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10366325B2 (en) * | 2011-12-07 | 2019-07-30 | Paul Burchard | Sparse neural control |
ES2929626T3 (es) | 2015-05-21 | 2022-11-30 | Goldman Sachs & Co Llc | Arquitectura de computación paralela de propósito general |
US11449452B2 (en) | 2015-05-21 | 2022-09-20 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
JP2018160180A (ja) * | 2017-03-23 | 2018-10-11 | 富士通株式会社 | 情報処理システム、情報処理装置および情報処理システムの制御方法 |
AU2018248439C1 (en) * | 2017-04-06 | 2021-09-30 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
KR102586173B1 (ko) * | 2017-10-31 | 2023-10-10 | 삼성전자주식회사 | 프로세서 및 그 제어 방법 |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
GB201904267D0 (en) * | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with multiple embedded rings |
CN110516332B (zh) * | 2019-08-15 | 2021-06-11 | 浪潮电子信息产业股份有限公司 | 并行计算结果的过滤方法及系统 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
WO2023171278A1 (ja) * | 2022-03-09 | 2023-09-14 | 株式会社エヌエスアイテクス | 演算装置及び演算方法 |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
EP4354282A1 (en) * | 2022-10-10 | 2024-04-17 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, processor, and network device |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493307A (en) * | 1994-05-26 | 1996-02-20 | Nec Corporation | Maximal deversity combining interference cancellation using sub-array processors and respective delay elements |
CN1261966A (zh) * | 1997-06-30 | 2000-08-02 | 博普斯公司 | 多重阵列处理器 |
CN1342940A (zh) * | 2000-09-06 | 2002-04-03 | 国际商业机器公司 | 到一个共享的协处理器资源的多个逻辑接口 |
US8136071B2 (en) * | 2007-09-12 | 2012-03-13 | Neal Solomon | Three dimensional integrated circuits and methods of fabrication |
JP5419107B2 (ja) * | 2008-04-15 | 2014-02-19 | フリースケール セミコンダクター インコーポレイテッド | マルチコア処理システム |
CN104391821A (zh) * | 2014-11-20 | 2015-03-04 | 天津大学 | 一种多核共享simd协处理器的系统级模型构建方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112287A (en) * | 1993-03-01 | 2000-08-29 | Busless Computers Sarl | Shared memory multiprocessor system using a set of serial links as processors-memory switch |
US4965717A (en) | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
EP0377221B1 (en) * | 1988-12-29 | 1996-11-20 | Sharp Kabushiki Kaisha | Neuro-computer |
US5247613A (en) * | 1990-05-08 | 1993-09-21 | Thinking Machines Corporation | Massively parallel processor including transpose arrangement for serially transmitting bits of data words stored in parallel |
JPH05242065A (ja) * | 1992-02-28 | 1993-09-21 | Hitachi Ltd | 情報処理装置及びシステム |
US6389404B1 (en) * | 1998-12-30 | 2002-05-14 | Irvine Sensors Corporation | Neural processing module with input architectures that make maximal use of a weighted synapse array |
US6588008B1 (en) * | 2000-04-11 | 2003-07-01 | International Business Machines Corporation | Assembler tool for processor-coprocessor computer systems |
DE10061998A1 (de) * | 2000-12-13 | 2002-07-18 | Infineon Technologies Ag | Kryptographieprozessor |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
GB2378271B (en) * | 2001-07-30 | 2004-12-29 | Advanced Risc Mach Ltd | Handling of coprocessor instructions in a data processing apparatus |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7612443B1 (en) | 2003-09-04 | 2009-11-03 | University Of Notre Dame Du Lac | Inter-chip communication |
US9292904B2 (en) * | 2004-01-16 | 2016-03-22 | Nvidia Corporation | Video image processing with parallel processing |
US20060179273A1 (en) | 2005-02-09 | 2006-08-10 | Advanced Micro Devices, Inc. | Data processor adapted for efficient digital signal processing and method therefor |
US7500083B2 (en) * | 2005-08-15 | 2009-03-03 | Silicon Informatics | Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code |
US20070204268A1 (en) | 2006-02-27 | 2007-08-30 | Red. Hat, Inc. | Methods and systems for scheduling processes in a multi-core processor environment |
JP5242065B2 (ja) | 2007-02-22 | 2013-07-24 | 三菱重工環境・化学エンジニアリング株式会社 | 間接加熱式キルン |
US8046727B2 (en) * | 2007-09-12 | 2011-10-25 | Neal Solomon | IP cores in reconfigurable three dimensional integrated circuits |
US8374986B2 (en) * | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
US9063783B2 (en) | 2008-11-24 | 2015-06-23 | Red Hat, Inc. | Coordinating parallel execution of processes using agents |
WO2011091323A1 (en) * | 2010-01-21 | 2011-07-28 | Qst Holdings, Llc | A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations |
US8492886B2 (en) * | 2010-02-16 | 2013-07-23 | Monolithic 3D Inc | 3D integrated circuit with logic |
WO2011135759A1 (ja) * | 2010-04-30 | 2011-11-03 | 日本電気株式会社 | 情報処理装置及びタスク切り替え方法 |
US8949577B2 (en) * | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
US20110314256A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Data Parallel Programming Model |
US8359453B2 (en) | 2010-09-13 | 2013-01-22 | International Business Machines Corporation | Real address accessing in a coprocessor executing on behalf of an unprivileged process |
US8965834B2 (en) | 2011-12-07 | 2015-02-24 | Extendabrain Corporation | Particle methods for nonlinear control |
US20130304990A1 (en) | 2012-05-08 | 2013-11-14 | International Business Machines Corporation | Dynamic Control of Cache Injection Based on Write Data Type |
US9292569B2 (en) * | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US9367357B2 (en) * | 2013-01-18 | 2016-06-14 | Nec Corporation | Simultaneous scheduling of processes and offloading computation on many-core coprocessors |
US9146777B2 (en) * | 2013-01-25 | 2015-09-29 | Swarm Technology Llc | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process |
WO2014133527A1 (en) * | 2013-02-28 | 2014-09-04 | Intel Corporation | Leveraging an enumeration and/or configuration mechanism of one interconnect protocol for a different interconnect protocol |
JP5660149B2 (ja) | 2013-03-04 | 2015-01-28 | 日本電気株式会社 | 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム |
US9497106B2 (en) * | 2013-04-06 | 2016-11-15 | Citrix Systems, Inc. | Systems and methods for synchronizing MSS and PMTU in Ncore and cluster systems |
EP3014429B1 (en) * | 2013-09-06 | 2020-03-04 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor removal of meta-stability |
US10210134B2 (en) | 2015-05-21 | 2019-02-19 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
US11449452B2 (en) | 2015-05-21 | 2022-09-20 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
ES2929626T3 (es) | 2015-05-21 | 2022-11-30 | Goldman Sachs & Co Llc | Arquitectura de computación paralela de propósito general |
-
2016
- 2016-05-17 ES ES16797170T patent/ES2929626T3/es active Active
- 2016-05-17 US US15/157,218 patent/US10108580B2/en active Active
- 2016-05-17 EP EP16797170.4A patent/EP3298486B1/en active Active
- 2016-05-17 WO PCT/US2016/032934 patent/WO2016187232A1/en active Application Filing
- 2016-05-17 CA CA2984155A patent/CA2984155A1/en active Pending
- 2016-05-17 JP JP2017559643A patent/JP6816027B2/ja active Active
- 2016-05-17 AU AU2016264100A patent/AU2016264100B2/en active Active
- 2016-05-17 CN CN201680029374.3A patent/CN107636638B/zh active Active
- 2016-05-17 CN CN202111092481.XA patent/CN113641627A/zh active Pending
- 2016-05-20 TW TW105115745A patent/TWI704465B/zh active
- 2016-05-20 TW TW109126873A patent/TWI747426B/zh active
- 2016-05-20 TW TW110134067A patent/TWI792557B/zh active
-
2018
- 2018-09-21 US US16/138,590 patent/US10810156B2/en active Active
- 2018-09-26 HK HK18112362.5A patent/HK1252999A1/zh unknown
-
2020
- 2020-03-02 AU AU2020201520A patent/AU2020201520C1/en active Active
- 2020-12-23 JP JP2020213356A patent/JP6997285B2/ja active Active
-
2021
- 2021-09-08 AU AU2021229205A patent/AU2021229205B2/en active Active
- 2021-12-16 JP JP2021203791A patent/JP7335312B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493307A (en) * | 1994-05-26 | 1996-02-20 | Nec Corporation | Maximal deversity combining interference cancellation using sub-array processors and respective delay elements |
CN1261966A (zh) * | 1997-06-30 | 2000-08-02 | 博普斯公司 | 多重阵列处理器 |
CN1342940A (zh) * | 2000-09-06 | 2002-04-03 | 国际商业机器公司 | 到一个共享的协处理器资源的多个逻辑接口 |
US8136071B2 (en) * | 2007-09-12 | 2012-03-13 | Neal Solomon | Three dimensional integrated circuits and methods of fabrication |
JP5419107B2 (ja) * | 2008-04-15 | 2014-02-19 | フリースケール セミコンダクター インコーポレイテッド | マルチコア処理システム |
CN104391821A (zh) * | 2014-11-20 | 2015-03-04 | 天津大学 | 一种多核共享simd协处理器的系统级模型构建方法 |
Non-Patent Citations (1)
Title |
---|
Larrabee:A Many-Core x86 Architecture for Visual Computing;Larry Seiler;《ACM TRANSACTIONS ON GRAPHICS》;20080801;第1-15页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3298486B1 (en) | 2022-08-24 |
JP7335312B2 (ja) | 2023-08-29 |
US10810156B2 (en) | 2020-10-20 |
US20160342568A1 (en) | 2016-11-24 |
TWI747426B (zh) | 2021-11-21 |
EP3298486A1 (en) | 2018-03-28 |
CN107636638A (zh) | 2018-01-26 |
CN113641627A (zh) | 2021-11-12 |
JP6816027B2 (ja) | 2021-01-20 |
ES2929626T3 (es) | 2022-11-30 |
AU2016264100B2 (en) | 2020-01-02 |
JP2021057076A (ja) | 2021-04-08 |
HK1252999A1 (zh) | 2019-06-06 |
AU2020201520C1 (en) | 2022-01-06 |
AU2020201520B2 (en) | 2021-09-09 |
EP3298486A4 (en) | 2019-01-16 |
CA2984155A1 (en) | 2016-11-24 |
WO2016187232A1 (en) | 2016-11-24 |
TWI792557B (zh) | 2023-02-11 |
AU2016264100A1 (en) | 2017-11-09 |
JP6997285B2 (ja) | 2022-01-17 |
US10108580B2 (en) | 2018-10-23 |
AU2021229205A1 (en) | 2021-10-07 |
US20190026248A1 (en) | 2019-01-24 |
AU2020201520A1 (en) | 2020-03-19 |
JP2022046557A (ja) | 2022-03-23 |
TW201706870A (zh) | 2017-02-16 |
TWI704465B (zh) | 2020-09-11 |
TW202044059A (zh) | 2020-12-01 |
JP2018518753A (ja) | 2018-07-12 |
AU2021229205B2 (en) | 2021-10-21 |
TW202201241A (zh) | 2022-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107636638B (zh) | 通用并行计算架构 | |
US10210134B2 (en) | General-purpose parallel computing architecture | |
CN110352434A (zh) | 利用模型固定的神经网络处理 | |
US20220269637A1 (en) | General-purpose parallel computing architecture | |
JP2023015205A (ja) | 汎用並列コンピューティングアーキテクチャ | |
Franz | Multi-population PSO-GA hybrid techniques: integration, topologies, and parallel composition |
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 |