CN109478252A - 用于神经网络硬件加速的多播网络和存储器转移优化 - Google Patents
用于神经网络硬件加速的多播网络和存储器转移优化 Download PDFInfo
- Publication number
- CN109478252A CN109478252A CN201780040900.0A CN201780040900A CN109478252A CN 109478252 A CN109478252 A CN 109478252A CN 201780040900 A CN201780040900 A CN 201780040900A CN 109478252 A CN109478252 A CN 109478252A
- Authority
- CN
- China
- Prior art keywords
- data
- group
- switching node
- address
- multicast
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/04—Architecture, e.g. interconnection topology
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1507—Distribute and route fabrics, e.g. sorting-routing or Batcher-Banyan
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L15/00—Apparatus or local circuits for transmitting or receiving dot-and-dash codes, e.g. Morse code
Abstract
公开了神经网络特定的硬件加速优化,包含以恒量或线性时间执行的优化的DRAM转移单元和优化的多播网络。多播网络是被组织成层并且被配置成作为Beneš网络来操作的一组交换节点。网络中的所有交换节点可访问配置数据。在计算机指令内,每层被配置成执行前一层的Beneš网络转换。因为计算机指令被流水线化,可以恒量或线性时间配置交换节点的整个网络。类似地,被配置成按跨距访问存储器的DRAM转移单元将存储器组织成由质数或互质数的量来索引的存储体。索引值被挑选成不会引起存储器地址冲突。一旦接收到存储器规格,DRAM转移单元可算出跨距,从而以恒量或线性时间访问张量的整个平铺。
Description
对相关申请的交叉引用
此专利申请要求2016年5月7日提交的序列号为62/333214、标题为“Memory andProcessing Architecture for Hardware Accelerated Machine Learning”的临时专利申请的优先权,据此通过引用将其完整地结合于本文中。
背景技术
机器学习和深度神经网络,包含深度信任网络(统称为神经网络),正在迅速变得普及。应用起初从计算机图像中的对象识别以及从语音识别开始,现在,在诸如AppleSiriTM、Microsoft CortanaTM、Amazon AlexaTM、Google AssistantTM之类的声音用户接口中是常见的。神经网络目前被运用于工业控制器、医疗诊断,这导致神经网络的急速增长。
然而,神经网络操作,至少当被运用于机器学习和深度神经网络时,通常利用诸如矩阵运算之类的密集的线性代数运算,以及诸如卷积、最大汇合和数据噪声生成之类的更加神经网络特定的操作。这样的操作有助于并行操作,诸如并行地计算矩阵行,这如果在一般并非并行的常见中央处理单元(CPU)上执行,则导致次优的性能。
因此,针对矩阵运算和并行操作而优化的图形处理单元(GPU)的阵列已被运用于神经网络,诸如经由NVidia的CUDATM架构。然而,虽然GPU针对矩阵运算被优化,但是它们没有提供对神经网络(诸如卷积、最大汇合和噪声生成)特定的优化,从而限制它们在神经网络操作中的性能。
附图说明
参考附图来提供详细描述。
图1是用于机器学习硬件加速的系统环境的场景图。
图2是针对机器学习硬件加速的框图。
图3是针对用于机器学习硬件加速的多播网络优化的框图。
图4是针对用于机器学习硬件加速的多播网络优化的流程图。
图5是针对不间断存储体化的计算机存储器的访问跨距的场景图。
图6是针对用于机器学习硬件加速的DRAM转移优化中使用的置换器(permutaton)的框图。
图7是针对用于机器学习硬件加速的DRAM转移优化的框图。
图8是针对用于机器学习硬件加速的DRAM转移优化的流程图。
具体实施方式
用于神经网络硬件加速的多播网络和存储器转移优化的概览
神经网络硬件加速在开发、编译(或编程上转换)和执行利用神经网络的应用的环境的场景内发生。这样的应用经常被称作机器学习应用、深度神经网络应用和/或深度信任网络应用。虽然机器学习并不严格地需要神经网络的使用,但是很多常见的现今框架和技术利用神经网络。深度神经网络可大致认为是一系列的神经网络或神经网络的网络。
如上所述,中央处理单元(CPU)或图形处理单元(GPU)阵列这些形式的现今硬件没有为对神经网络常见的很多操作提供硬件优化。本文公开的是用于神经网络硬件加速的各种技术,特别是用于针对被调遣到数据接收器(诸如执行单元)的数据的多播网络的技术,以及用于存储器转移的技术。
本文公开的优化被设计成以恒量时间(Big O(C))或线性时间(Big O(n))在硬件中执行那些操作,否则CPU和/或GPU将会使用Big O(n log(n))或更高的多项式时间。优化可在设计时间和/或编译时间利用信息,可利用转换来实现对矩阵常见的多维运算以及张量运算,并且可识别和利用硬件中的指令流水线机会。
图1提供其中可发生神经网络硬件加速的场景图100。具体来说,用户102从云104访问计算服务。用户可以是开发者或者可以是最终用户。
云104包括能够存储计算机可读数据和执行计算机可读指令的若干服务器106。可由管理器108来分解那些服务器106以服务虚拟机110。
已编译神经网络应用112可直接在服务器106上或者在虚拟机110上执行。可由一个或多个神经网络框架和/或运行时间114来供应服务器106和/或虚拟机110。神经网络硬件加速单元116可被连接到服务器106或者可以是独立的。作为服务器106的资源,神经网络硬件加速单元也可由管理器108来分解,从而使它的资源可用于虚拟机110。
已编译神经网络应用112是用于神经网络应用的源码118由编译器120编译后的结果。神经网络应用112可能也已被链接到对神经网络框架或运行时间114特定的库。
重新回到神经网络硬件加速器单元116,它包括可转移指令以及执行其它操作的系统控制块122。它经由通信总线124与控制CPU通过接口连接。硬件加速器单元将具有与本地存储器128、一个或多个多播网络130以及多个数据接收器132通过接口连接的指令解释器126。在一些实施例中,数据接收器132可以是执行单元。与装置外的数据的接口可经由数据转移单元134在存储器总线136上通过接口连接。
下面关于图2进一步详细地描述神经网络硬件加速器单元116。注意,一个或多个多播网络130和数据转移单元134具有若干优化。下面关于图3和图4进一步详细地描述多播网络优化。数据转移单元优化利用如下面关于图5描述的群论的特征。下面关于图6、图7和图8描述数据转移单元优化本身。
神经网络硬件加速单元的示范性架构
对神经网络硬件加速单元116的更细致考察是值得的。图2提供在关于图1描述的细节上扩充的神经网络硬件加速单元的框图200。
神经网络硬件加速器单元202,它可经由并行总线或串行总线206经由系统控制块204与服务器或与一些其它控制CPU通过接口连接。在一些实现中,接口是PCI总线或PCI-E总线。然而,任何标准化的总线都是能胜任的。可使用串行总线,但是以串行化的开销作为性能代价。
计算机指令和/或操作码可被存储在本地存储器208中,并且可由指令解释器210来解释。计算机指令可经由系统控制块204到达。本地存储器208可以是静态随机存取存储器(SRAM)。SRAM可被细分成用于计算机指令解释和执行的位置,以及工作存储器的一个或多个区域208(a)、208(b),其中每个区域可在至少某部分中被细分成存储器的多个存储体。
工作存储器的区域208(a)、208(b)中的至少一些可各自与由交换节点构成的多播网络212(a)、212(b)关联,交换节点将工作存储器区域208(a)、208(b)中存储的数据调遣到一个或多个数据接收器214。
如关于图3和图4进一步详细描述的,构成多播网络212(a)、212(b)的交换节点被组织成多层,第一层紧邻存储器208(a)、208(b)以及最末层紧邻数据接收器214。在连接的一些置换中,包括最末层的交换节点访问数据接收器214。注意,不同多播网络212(a)、212(b)的最末层的连接置换各自不需要相同。
取决于应用,数据接收器214可以是若干实施例其中之一。对于神经网络应用112,数据接收器214可以是各自能够执行计算机可执行指令的多个执行单元214。
数据可从本地存储器208被转移到板外存储器,这可由数据转移单元216在数据总线218上执行。在板外存储器采取动态随机存取存储器(DRAM)的形式的情况中,数据转移单元216是DRAM转移单元,并且数据总线218是DRAM总线。
用于神经网络硬件加速的多播网络优化
多播网络212(a)、212(b)被设计成重新安排并且复制来自存储器208(a)、208(b)的数据,以便确定性地馈送存储器208(a)、208(b)中的数据的部分和置换。为了实现这一点,多播网络212(a)、212(b)被配置成Beneš网络,该网络是被组织成层的交换节点的集合,其中,层中的每个交换节点能够将数据复制和/或转发到随后层中的一个或多个交换节点。当输入数据已穿过所有层时,数据将已被重布置成期望的置换。
对于利用称为张量的多维矩阵的神经网络操作而言,Beneš网络的此特征是所期望的。张量可被存储在不间断的存储器中,意味着构成张量的数据元素中的每个驻留在具有有序且不中断的存储器地址的存储器块中。通过能够选择和置换任意数据元素,将数据元素多播到数据接收器执行单元214的Beneš网络实现对那些多播数据元素的并行操作。
出于硬件加速的目的,通过使Beneš网络配置数据对多播网络中的所有交换节点可全局访问,并且通过将执行指令流水线化,配置和操作可被降低到恒量时间(Big O(c))。图3是两个多播网络302(a)、302(b)的框图300,这些网络将输入数据置换到数据接收器304中。
每个多播网络302(a)、302(b)从被组织成存储体的工作存储器306(a)、306(b)的区域接收输入数据,其通常采取张量的数据元素的形式。如关于图5将会看到的,将张量的数据元素组织到存储体中有助于进一步优化。
每个多播网络302(a)、302(b)由被组织成层310的交换节点308构成。层经过安排,其中第一层紧邻存储器306(a)、306(b)并且最末层紧邻数据接收器304。
实现两个多播网络302(a)、302(b)的一个目的是:在张量运算中,可能期望访问张量的不同分区。例如,在二维张量(矩阵)中,第一多播网络302(a)可对行执行操作,而另一个多播网络302(b)可对列执行操作。由于这个原因,来自一个多播网络302(a)的与数据接收器304通过接口连接的交换节点308(即,第一多播网络302(a)的交换节点的最末层)的置换不需要是来自另一个多播网络302(b)的与数据接收器304通过接口连接的交换节点308(即,第二多播网络302(b)的交换节点的最末层)的相同置换。在一个实施例中,第一多播网络302(a)置换是取模,并且第二多播302(b)置换是成群扇出。
单独的交换节点308可包含从存储器306(a)、306(b)或者从来自前一级310的交换节点308接收的一个或多个数据条目。交换节点可包含配置指示符314以及控制器指示符。配置指示符314指定是否要执行广播模式,是否要根据配置数据来转发输入数据,或者执行通行模式,其中不管配置数据如何而转发输入数据。控制器指示符316指定是否要更新至少一个交换节点条目。
可存在分离的全局配置数据存储装置318,其采取寄存器的形式或者采取存储器的形式。全局配置数据是所有交换节点308可访问的,并且分别持有交换节点308的控制器指示符316和配置指示符314的值。因为配置数据存储装置318是全局可访问的,在一些实施例中,交换节点308有可能不具有控制器指示符316和配置指示符314的本地存储的值,而是可只访问全局配置数据存储装置318。
图4是多播网络302(a)、302(b)的可能的操作的流程图400。
框402通过检索配置数据开始多播网络302(a)、302(b)的配置,所述配置数据是从计算机存储器306(a)、306(b)中的已知地址检索的。所检索的配置数据用于配置构成多播网络302(a)、302(b)的交换节点308。然后在框404中,所检索的配置数据被存储在全局配置数据存储装置318中。
在框406中,计算机存储器306(a)、306(b)中要被操作的数据元素可被存储在交换节点的数据条目存储装置312中。
因为所有交换节点308可以访问全局配置数据存储装置318,在框408中,多播网络302(a)、302(b)中的交换节点308的至少第一层310可具有它们相应的配置指示符314和控制器指示符316,用全局配置数据存储装置318中的控制数据填充这些指示符。
注意,在这一点,多播网络302(a)、302(b)被配置。如果框402和404在一个时钟周期内被执行,并且框408在一个时钟周期内被执行,则实际上(不考虑无操作的指令(也称作空操作)的插入),多播网络302(a)、302(b)在两个时钟周期内被配置,而不管数据的量如何。实际上,以恒量时间(Big O(c))实现多播网络配置。
在框408中,在交换节点的第一级的Beneš多播操作开始重新安排和拷贝那些交换节点中存储的数据元素。交换节点308将确定是使用配置信息,还是不管基于配置指示符314的配置如何而让数据通行。交换节点308也考虑控制器指示符316来确定用哪种模式将数据条目312置换到交换节点的下一层(或者在最末层的情况中,到数据接收器304)。
在框410中,通过交换节点308的每层310有序地执行Beneš多播操作,直到在框412中,最末层执行最末的Beneš多播操作以将数据元素置换到数据接收器304中。
注意,在通行的情况中,因为操作不管控制器指示符316和配置指示符314的值如何而进行,操作可在一个时钟周期内进行,跳过加载和传播控制信息的操作。
用于存储器转移优化的群论背景介绍
在讨论存储器转移优化之前,本文公开的群论支撑中的背景是适宜的。神经网络中常见的操作包含张量运算,涉及张量的一个分区在该张量或不同张量的另一分区上被操作。分区由数据元素构成,这些数据元素在它们的张量内有规则地分隔。构成分区的数据元素可被称作平铺(tiles)。
因为构成分区的平铺可对它们的操作数独立地操作,这产生并行地执行操作的机会,从而极大地节省处理时间。因此,具有以尽可能少量的操作来检索和移动张量的分区的平铺的能力是有用的。
群论是数学的分支,其描述集合以及它们在运算符上的相应行为。例如,整数的集合是针对加法运算的群,因为任何两个整数的加法得到整数。存在产生群的集合的其它方面。
一个群是整数模数D的有限群,其中D是某正整数。这样的群也称作循环群D,本文表示为CD。本文的存储器技术利用循环群CD,其中D是存储器的工作群中的存储体的数量。图5是这样的工作区域502的示意图500。存储体504被编索引从0到D-1,并且存储多个数据元素506。在括号中指示了构成分区508的数据元素。
数据元素被存储在不间断存储器中。注意,不间断意味着数据元素被存储在连续、不中断的存储器地址中。存储器地址不需要是物理地址,而是也能够涉及虚拟存储空间。因为分区以规则间隔分隔,并且因为我们跨那些规则间隔的距离(称作“跨距”)(即,每第D个元素加上某个偏移O)来访问数据元素,我们能够根据公式O+(M*i)%D来识别存储所期望的数据元素的存储体,其中,O是存储张量的存储器的起始偏移,D是存储体的数量,以及M是存储器中张量的跨距。此能力让我们以恒定数量的操作、有可能在单个处理器指令内访问张量中的平铺。
为了避免冲突,存储体的数量D应是质数,并且数据元素的跨距M不是D的整倍数。备选地,存储体的数量D应与数据元素的跨距M互质,并且要被检索的分区应是具有少于D个数据元素的向量。
比如说,我们想要访问每第五个元素。这就是说M=5。让我们还假定起始偏移地址O是2,并且存储体的数量D是7。因此,我们可读取多达7个元素,其中的每个读自存储器的不同存储体,因为5与7互质。(最确定的是,5和7两者凭它们自身条件都是质数。)因此:
对于O和M的给定值,只要M与D互质,我们总能够置换逻辑上安排的数据元素,使得每个访问i转到唯一存储体。然而,在硬件实现中,对于任意的O和M,我们必须物理上执行这种置换。为了移除O的影响,它足以执行旋转。旋转的快速硬件实现是理解的问题。为了处置跨距M的影响,我们依赖于素域的另一性质。具体来说,对于质数D,元素1到D-1的乘法模数D也形成群。事实上,这个群是与循环群D-1同构的。如果M不是D的整倍数,这意味着,我们能够通过首先将固定置换运用于从D的乘法群到循环群D-1的映射,随后在群D-1中旋转,随后进行另一固定置换以回到D的乘法群,来实现乘以M的效果。实现固定置换的硬件能够通过在金属层中布线来完成,并且如早先提及的旋转也是好理解的。
现在我们需要确定固定置换使用以及计算在循环群D-1内旋转的量,我们将其称作‘r’。
为了定义这些置换,我们必须在所讨论的乘法素域上选择生成元。群的生成元是一个元素,通过反复应用,该元素产生群的所有元素。例如,对于基于D=7的素域,3是乘法生成元:
31(mod 7) = 3
32(mod 7) = 2
33(mod 7) = 6
34(mod 7) = 4
35(mod 7) = 5
36(mod 7) = 1
所选择的生成元被表示成g。注意,D和g在设计时被固定。以g为底的离散对数logg(x)能够被定义成值y,使得gy(mod D)=x。例如,对于g=3、D=7,我们计算出logg(6)=3。
由于用来处置置换的乘法部分的旋转发生在循环空间中,需要计算离散对数以确定要旋转的量,这在硬件中执行是复杂的。在实际实现中,可假定M和因而m以及logg(m)是事先已知的。这允许编译器执行适当的计算并且为旋转提供固定的恒量。具体来说,为了确定必需的旋转,我们计算:
n=(logg(m)+l)%(D-1)
也就是说,为了指定转换,在置换时提供o和r。要注意,置换网络可被配置成两个不同变型其中之一。第一变型称作转发取模置换网络,这种置换网络将每个i<D映射到对应适当的存储体位置b=(O+M*i)%D(给定正确的o和n)。此置换被用于将地址和数据发送到存储器存储体(即,用于存储器写操作)。第二变型称作反向取模置换网络,这种置换网络仅仅执行转发取模置换网络的逆映射,并且由于存储器读操作,被用于适当地重新安排所读数据元素。
在能够更详细地描述转发和反向取模置换网络之前,要定义两个简单的布线模式。两个布线模式被用于执行映射逻辑群和循环群。具体来说,定义第一布线模式map_to_cylic来取D-1个元素,并且对于1<=i<D,将D-1个元素的每个条目i映射到条目logg(i)。定义第二布线模式map_from_cylic来进行相反的操作,并且将条目i映射到条目gi(mod D)。因为0不是乘法群的成员,使元素的条目0不被映射和旋转这两者改动。下面关于图6更详细地描述这个结构。
置换器
上文描述的存储器转移操作的硬件实现包含置换数据元素的能力。这样做的硬件装置被称为置换器。图6是置换器602的框图600。
在o=O%D的情况中考虑接收参数,其中O是存储器中的偏移起点,存储器将数据元素存储在不间断存储器中并且该存储器被组织成存储器中的D个存储体。进一步考虑接收参数r,r表示要为小于D的循环群执行的旋转的数量,其中,r至少基于以生成元g为底的离散对数logg。
置换器包括要置换的多个输入604。这些输入一般会对应于D个输入,通常是存储体。然后,将那些输入604经由第一循环映射606从索引为1到D的输入映射到置换。在硬件中,这个操作可经由执行从1到D的数据元素的循环右移的右滚筒移位器来实现。
然后,置换器经由将从0到D-1的所有数据元素循环右移的第二循环映射608来置换数据元素。这可经由右滚筒移位器来执行,右滚筒移位器执行从0到D-1的数据元素的循环右移,并且又将所置换的数据元素转发到输出610。
注意,可经由执行0到D-1的数据元素的循环左移的左滚筒移位器,接着是执行1到D的数据元素的循环左移的左滚筒移位器来实现反向置换器,其将数据元素恢复到它们的原始位置。这样,反向置换器是与置换器逆向的硬件。
在置换器和反向置换器之间,支持对于用于本文公开的存储器转移技术的置换操作的硬件支持。
用于神经网络硬件加速的存储器转移优化
置换器可被运用于创建为神经网络硬件加速而优化的存储器转移单元。图7是示范性存储器转移单元702的框图700。图8是存储器转移单元700的示范性操作的流程图800。
取模地址生成器704是转发或标准置换器。它从数据存储体接收输入,按输入参数o和r置换数据元素,如上文关于图5和图6所述。具体来说,按流程图800中的框802,取模地址生成器接收存储器地址和长度,并且在流程图800的框804中,取模地址生成器704生成一组存储器地址,这些存储器地址对应于按跨距分离的计算机可读存储器中存储的数据元素。
排队控制器706负责控制转发所接收的数据元素到D个地址队列708中。具体来说,地址队列708存储硬件中的数据元素的存储器地址,而不是数据元素本身的值。在流程图800的框806中,排队控制器706接收由取模地址生成器704生成的该组存储器地址,并且在流程图800的框808中,将存储器地址转发到对应的地址队列708中,而同时将控制信息添加到控制队列710中。控制信息被用于使接收出列控制器712上的接收同步。
地址队列708分别馈送到多个地址解码器714中,地址解码器714又分别馈送到多个数据队列716中。具体来说,在流程图800的框810中,地址解码器714将地址队列708中的数据元素的存储器地址解码成它们相应的数据元素,并且将所解码的数据元素分别排队到数据队列716中。
在流程图800的框812中,出列控制器710从数据队列714接收排队的数据元素,并且从控制队列708接收控制信息,以及至少基于所接收的控制信息转发到反向置换器716。
在流程图800的框814中,反向置换器718执行取模地址生成器704的转发置换器的逆向操作,以恢复从出列控制器712接收的数据。一旦这样做,则在流程图800的框816中,将所恢复的数据转发到数据出口720。
示范性使用情况
如关于图1所述,本文公开的多播网络和存储器转移优化可被运用于神经网络操作。一个或多个多播网络可被用于将存储器存储体中存储的数据元素的置换转发到多个执行单元。如果使用了多个多播单元,则那些单元可使用不同置换来馈送到执行单元中。在一个实施例中,不同多播单元可涉及张量的不同分区。
这样,可以与神经网络硬件加速器的场景不关联并且分开来构思多播网络和存储器转移单元,每个具有可能与神经网络硬件加速不相关的应用。
举例来说,多播网络和存储器转移优化可用在其它硬件加速场景中,诸如包含线性代数运算的计算的图形处理、对图形特定的张量运算和四元数运算。
在存储器转移优化的情况中,应用不需要对具体操作是特定的,但是可仅用在存储器控制器中。例如,在不间断存储器中存储的数据元素的分区和/或向量要被转移的情况下,可运用存储器转移优化。此外,因为多播网络优化可任意地复制和置换数据元素,结合存储器转移操作使用可为全存储器控制器提供基础。
结论
虽然已采用对结构特征和/或方法动作特定的语言描述了主题,但是要理解,所附权利要求中限定的主题不一定局限于上文描述的特定特征或动作。相反,作为实现权利要求的示例形式来公开上文描述的特定特征和动作。
Claims (15)
1.一种配置输入数据以用于向数据接收器多播的系统,包括:
计算机存储器,所述计算机存储器存储输入数据并且在已知地址中存储配置数据;
一组交换节点,所述一组交换节点被配置成Beneš多播网络,所述多播网络被安排成多层,每层具有多个交换节点,第一层紧邻所述输入数据并且最末层紧邻数据接收器,每个交换节点存储被包括在多个条目中的所接收的输入数据、配置指示符和控制器指示符,
所述配置指示符指定是否要执行广播模式,是否要根据所述配置数据来转发输入数据,或者执行通行模式,其中不管所述配置数据如何而转发输入数据,以及
所述控制器指示符指定是否要更新至少一个交换节点条目;以及
一组控制寄存器,所述一组控制寄存器可通信地连接到所述一组交换节点中的每个交换节点,这组寄存器被配置成存储所接收的配置数据,以便这组节点在两个操作内被配置,第一操作从所述计算机存储器中的所述已知地址读取所述配置数据,以及第二操作填充所述一组控制寄存器,以及随后的操作包括根据所填充的所述一组控制寄存器由所述一组交换节点进行的多播操作。
2.如权利要求1所述的系统,其中,所述数据接收器是一组执行单元。
3.如权利要求2所述的系统,包括:
第二组交换节点,所述第二组交换节点被配置成Beneš多播网络,所述多播网络被安排成多层,每层具有多个交换节点,第一层紧邻所述输入数据以及最末层紧邻接收数据的所述一组执行单元,所述第二组交换节点中的每个交换节点存储被包括在多个条目中的所接收的输入数据、配置指示符和控制器指示符,
所述配置指示符指定是否要执行广播模式,是否要根据所述配置数据来转发输入数据,或者执行通行模式,其中不管所述配置数据如何而转发输入数据,以及
所述控制器指示符指定是否要更新至少一个交换节点条目;以及
其中,所述第二组交换节点中的每个交换节点可通信地连接到所述控制寄存器。
4.如权利要求3所述的系统,其中,第一组交换节点的最末层以与所述第二组交换节点的最末层不同的置换连接到所述一组执行单元。
5.如权利要求4所述的系统,其中,所述第一组交换节点的最末层连接到所述一组执行单元所采用的置换是取模,以及所述第二组交换节点的最末层连接到所述一组执行单元所采用的置换是成群扇出。
6.如权利要求1所述的系统,其中,所述一组交换节点被配置成经由包含一系列的处理器指令的流水线来操作,其中,所述流水线中的第一处理器指令用于配置所述一组控制寄存器,所述流水线中的第二处理器指令用于为交换节点的所述第一层执行Beneš多播,以及每个随后的处理器指令用于为交换节点的每个相应的随后层执行Beneš多播,使得在所述流水线中的第一和第二处理器指令内可执行所述一组交换节点的所述配置。
7.如权利要求6所述的系统,其中,为交换节点的层执行Beneš多播的所述流水线中的所述处理器指令对于被配置成所述Beneš网络的所述交换节点的拓扑是特定的。
8.如权利要求6所述的系统,其中,所述流水线包含空操作以保证所述流水线在配置所述一组交换节点期间不会停转。
9.如权利要求1所述的系统,其中,所述一组交换节点被配置成将被设置成通行的所述配置指示符解释成经由包含一系列的处理器指令的流水线来操作,所述流水线中的第一处理器指令用于为交换节点的所述第一层执行Beneš多播,以及每个随后的处理器指令用于为交换节点的每个相应的随后层执行Beneš多播,使得在所述流水线中的所述第一处理器指令内可执行所述一组交换节点的所述配置。
10. 一种以恒量时间确定性地转移不间断计算机可读数据的分区的系统,包括:
计算机可读存储器,所述计算机可读存储器被组织成包含不间断数据的D个存储体,所述不间断数据包含大小为M的多个数据元素,所述数据元素是具有N个数据元素的向量的构成数据元素,所述数据元素从偏移地址O开始;以及
取模地址生成器,所述取模地址生成器被配置成生成具有所述计算机可读存储器中存储的i个数据元素的向量的所述数据元素的地址,以及所述取模地址生成器包括至少一个转发置换器,所述转发置换器被配置成置换具有形式为O+M*i的地址的数据元素,其中,0<=i<N。
11.如权利要求10所述的系统,包括:
排队控制器,所述排队控制器可通信地耦合到所述取模地址生成元;
多个地址队列,每个地址队列分别被配置成存储多个存储器地址,所述地址队列耦合到所述排队控制器;
多个数据解码器,解码器分别耦合到并且对应于每个地址队列,所述多个数据解码器被配置成对所述存储器地址解码以检索在所述存储器地址存储的数据;
多个数据队列,每个数据队列分别被配置成存储多个数据元素,所述数据队列分别耦合到并且对应于每个数据解码器;以及
出列控制器,所述出列控制器可通信地耦合到所述多个数据队列,并且经由控制队列可通信地耦合到所述排队控制器,所述控制队列被配置成包含控制数据以确保同步。
12.如权利要求11所述的系统,包括:反向置换器,所述反向置换器可通信地耦合到所述出列控制器,被配置成恢复所执行的任何旋转。
13.如权利要求11所述的系统,其中,存储体的数量D与所述数据元素的跨距M互质,并且向量中的数据元素的数量N小于D。
14.如权利要求11所述的系统,其中,存储体的数量D是质数,并且所述数据元素的跨距M不是D的整倍数。
15.如权利要求11所述的系统,其中,所述控制队列中的所述控制数据包含在编译时间提供的、关于置换器至少基于生成元整数g要执行的旋转的数量的信息。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662333214P | 2016-05-07 | 2016-05-07 | |
US62/333214 | 2016-05-07 | ||
US15/588,569 US11120329B2 (en) | 2016-05-07 | 2017-05-05 | Multicast network and memory transfer optimizations for neural network hardware acceleration |
US15/588569 | 2017-05-05 | ||
PCT/US2017/031478 WO2017196694A2 (en) | 2016-05-07 | 2017-05-06 | Multicast network and memory transfer optimizations for neural network hardware acceleration |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478252A true CN109478252A (zh) | 2019-03-15 |
CN109478252B CN109478252B (zh) | 2023-07-25 |
Family
ID=60266889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780040900.0A Active CN109478252B (zh) | 2016-05-07 | 2017-05-06 | 用于神经网络硬件加速的多播网络和存储器转移优化 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11120329B2 (zh) |
EP (1) | EP3452962A4 (zh) |
CN (1) | CN109478252B (zh) |
DE (1) | DE202017007434U1 (zh) |
WO (1) | WO2017196694A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113692570A (zh) * | 2019-05-02 | 2021-11-23 | 戴尔产品有限公司 | 支持管道式数据转换的数据移动器系统 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10198401B2 (en) * | 2016-12-30 | 2019-02-05 | Intel Corporation | Max pooling in a matrix processing architecture |
CN110574050A (zh) * | 2017-05-31 | 2019-12-13 | 英特尔公司 | 用于基于四元数的机器学习系统的基于梯度的训练引擎 |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US20230196069A1 (en) | 2017-12-29 | 2023-06-22 | Cambricon Technologies Corporation Limited | Neural network processing method, computer system and storage medium |
US10613977B1 (en) * | 2018-09-27 | 2020-04-07 | Amazon Technologies, Inc. | Target port with distributed transactions |
US10831693B1 (en) | 2018-09-27 | 2020-11-10 | Amazon Technologies, Inc. | Multicast master |
KR20200057475A (ko) | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템 |
DE102020100209A1 (de) * | 2019-01-21 | 2020-07-23 | Samsung Electronics Co., Ltd. | Neuronale Netzwerkvorrichtung, neuronales Netzwerksystem und Verfahren zur Verarbeitung eines neuronalen Netzwerkmodells durch Verwenden eines neuronalen Netzwerksystems |
US11537883B2 (en) * | 2019-11-20 | 2022-12-27 | Wipro Limited | Method and system for minimizing impact of faulty nodes associated with an artificial neural network |
US11741350B2 (en) | 2019-11-27 | 2023-08-29 | Amazon Technologies, Inc. | Efficient utilization of processing element array |
WO2022000101A1 (en) * | 2020-06-28 | 2022-01-06 | Huawei Technologies Co., Ltd. | Method to avoid memory bank conflicts and pipeline conflicts in tensor memory layout |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4964040A (en) * | 1983-01-03 | 1990-10-16 | United States Of America As Represented By The Secretary Of The Navy | Computer hardware executive |
WO2006115896A2 (en) * | 2005-04-21 | 2006-11-02 | Violin Memory, Inc. | Interconnection system |
US20100005221A1 (en) * | 2008-07-03 | 2010-01-07 | Nokia Corporation | Address generation for multiple access of memory |
US8051227B1 (en) * | 2010-05-10 | 2011-11-01 | Telefonaktiebolaget L M Ericsson (Publ) | Programmable queue structures for multiprocessors |
CN103778100A (zh) * | 2012-10-23 | 2014-05-07 | 亚德诺半导体技术公司 | 向量处理器的存储器互连网络体系结构 |
CN104603739A (zh) * | 2012-08-30 | 2015-05-06 | 微软公司 | 对并行存储的块级访问 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5138695A (en) | 1989-10-10 | 1992-08-11 | Hnc, Inc. | Systolic array image processing system |
DE69132495T2 (de) | 1990-03-16 | 2001-06-13 | Texas Instruments Inc | Verteilter Verarbeitungsspeicher |
US5625825A (en) | 1993-10-21 | 1997-04-29 | Lsi Logic Corporation | Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network |
US5892697A (en) | 1995-12-19 | 1999-04-06 | Brakefield; James Charles | Method and apparatus for handling overflow and underflow in processing floating-point numbers |
US6216167B1 (en) | 1997-10-31 | 2001-04-10 | Nortel Networks Limited | Efficient path based forwarding and multicast forwarding |
US6571268B1 (en) | 1998-10-06 | 2003-05-27 | Texas Instruments Incorporated | Multiplier accumulator circuits |
US6768992B1 (en) | 1999-05-17 | 2004-07-27 | Lynne G. Jolitz | Term addressable memory of an accelerator system and method |
TW484016B (en) | 1999-07-28 | 2002-04-21 | Hitachi Ltd | Semiconductor integrated circuit and recording medium |
US6285779B1 (en) | 1999-08-02 | 2001-09-04 | Trident Microsystems | Floating-point complementary depth buffer |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
CA2422221A1 (en) | 2000-09-12 | 2002-03-21 | International Business Machines Corporation | System and method for controlling the multicast traffic of a data packet switch |
US6891828B2 (en) | 2001-03-12 | 2005-05-10 | Network Excellence For Enterprises Corp. | Dual-loop bus-based network switch using distance-value or bit-mask |
US8259121B2 (en) | 2002-10-22 | 2012-09-04 | Broadcom Corporation | System and method for processing data using a network |
US7548892B2 (en) | 2004-04-30 | 2009-06-16 | Microsoft Corporation | Processing machine learning techniques using a graphics processing unit |
DE102005021749A1 (de) | 2005-05-11 | 2006-11-16 | Fachhochschule Dortmund | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung |
US20070005322A1 (en) | 2005-06-30 | 2007-01-04 | Patzer Aaron T | System and method for complex programmable breakpoints using a switching network |
GB0811057D0 (en) | 2008-06-17 | 2008-07-23 | Univ Ulster | Artificial neural network architecture |
US8131659B2 (en) | 2008-09-25 | 2012-03-06 | Microsoft Corporation | Field-programmable gate array based accelerator system |
WO2010106587A1 (ja) | 2009-03-18 | 2010-09-23 | パナソニック株式会社 | ニューラルネットワークシステム |
US7957400B2 (en) | 2009-03-26 | 2011-06-07 | Terascale Supercomputing Inc. | Hierarchical network topology |
US8442927B2 (en) | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
JP5692780B2 (ja) | 2010-10-05 | 2015-04-01 | 日本電気株式会社 | マルチコア型誤り訂正処理システムおよび誤り訂正処理装置 |
US9141131B2 (en) | 2011-08-26 | 2015-09-22 | Cognitive Electronics, Inc. | Methods and systems for performing exponentiation in a parallel processing environment |
US9153230B2 (en) | 2012-10-23 | 2015-10-06 | Google Inc. | Mobile speech recognition hardware accelerator |
US9323499B2 (en) | 2012-11-15 | 2016-04-26 | Elwha Llc | Random number generator functions in memory |
US9104474B2 (en) | 2012-12-28 | 2015-08-11 | Intel Corporation | Variable precision floating point multiply-add circuit |
US9691034B2 (en) | 2013-05-14 | 2017-06-27 | The Trustees Of Princeton University | Machine-learning accelerator (MLA) integrated circuit for extracting features from signals and performing inference computations |
US9747547B2 (en) | 2013-10-22 | 2017-08-29 | In2H2 | Hardware enhancements to radial basis function with restricted coulomb energy learning and/or k-Nearest Neighbor based neural network classifiers |
US10331997B2 (en) | 2014-05-07 | 2019-06-25 | Seagate Technology Llc | Adaptive configuration of a neural network device |
US10452995B2 (en) | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning classification on hardware accelerators with stacked memory |
US10817802B2 (en) * | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
US10565134B2 (en) * | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
-
2017
- 2017-05-05 US US15/588,569 patent/US11120329B2/en active Active
- 2017-05-06 WO PCT/US2017/031478 patent/WO2017196694A2/en unknown
- 2017-05-06 CN CN201780040900.0A patent/CN109478252B/zh active Active
- 2017-05-06 DE DE202017007434.6U patent/DE202017007434U1/de active Active
- 2017-05-06 EP EP17796610.8A patent/EP3452962A4/en not_active Withdrawn
-
2021
- 2021-08-10 US US17/444,752 patent/US11704548B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4964040A (en) * | 1983-01-03 | 1990-10-16 | United States Of America As Represented By The Secretary Of The Navy | Computer hardware executive |
WO2006115896A2 (en) * | 2005-04-21 | 2006-11-02 | Violin Memory, Inc. | Interconnection system |
US20100005221A1 (en) * | 2008-07-03 | 2010-01-07 | Nokia Corporation | Address generation for multiple access of memory |
US8051227B1 (en) * | 2010-05-10 | 2011-11-01 | Telefonaktiebolaget L M Ericsson (Publ) | Programmable queue structures for multiprocessors |
CN104603739A (zh) * | 2012-08-30 | 2015-05-06 | 微软公司 | 对并行存储的块级访问 |
CN103778100A (zh) * | 2012-10-23 | 2014-05-07 | 亚德诺半导体技术公司 | 向量处理器的存储器互连网络体系结构 |
Non-Patent Citations (3)
Title |
---|
MINKENBERG C J A: ""On PacketSwitch Design"", 《EINDHOVEN UNIVERSITY OF TECHNOLOGY》 * |
佟冬等: "用非线性存储方案设计SIMD计算机的一般方法", 《计算机研究与发展》 * |
陈海燕等: "一种高效的面向基2 FFT算法的SIMD并行存储结构", 《电子学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113692570A (zh) * | 2019-05-02 | 2021-11-23 | 戴尔产品有限公司 | 支持管道式数据转换的数据移动器系统 |
CN113692570B (zh) * | 2019-05-02 | 2024-04-16 | 戴尔产品有限公司 | 支持管道式数据转换的数据移动器系统 |
Also Published As
Publication number | Publication date |
---|---|
DE202017007434U1 (de) | 2021-06-22 |
US20210374512A1 (en) | 2021-12-02 |
EP3452962A2 (en) | 2019-03-13 |
US11120329B2 (en) | 2021-09-14 |
US11704548B2 (en) | 2023-07-18 |
WO2017196694A3 (en) | 2017-12-14 |
EP3452962A4 (en) | 2020-05-06 |
WO2017196694A2 (en) | 2017-11-16 |
CN109478252B (zh) | 2023-07-25 |
US20170337468A1 (en) | 2017-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478252A (zh) | 用于神经网络硬件加速的多播网络和存储器转移优化 | |
EP3568756B1 (en) | Special purpose neural network training chip | |
CN1244878C (zh) | 在分布式存储器上实现多维快速傅里叶变换的方法和系统 | |
CN107836001A (zh) | 硬件加速器上的卷积神经网络 | |
CN109219821A (zh) | 运算装置和方法 | |
US5696922A (en) | Recursive address centrifuge for distributed memory massively parallel processing systems | |
CN107851102A (zh) | 用于键值存储的系统和方法 | |
CN113642734A (zh) | 一种深度学习模型的分布式训练方法、装置以及计算设备 | |
US11651209B1 (en) | Accelerated embedding layer computations | |
Vu et al. | Parallel Branch-and-Bound in multi-core multi-CPU multi-GPU heterogeneous environments | |
CN111860807B (zh) | 分形计算装置、方法、集成电路及板卡 | |
Shterenlikht et al. | Fortran 2008 coarrays | |
CN107646105B (zh) | 云计算基础架构 | |
WO2021194616A1 (en) | Load balancing for memory channel controllers | |
US20230305967A1 (en) | Banked memory architecture for multiple parallel datapath channels in an accelerator | |
TW201923612A (zh) | 平行計算 | |
CN105045789A (zh) | 一种游戏服务器数据库缓存方法及系统 | |
US20210326683A1 (en) | Hardware circuit for accelerating neural network computations | |
US11922292B2 (en) | Shared scratchpad memory with parallel load-store | |
Akhmetova et al. | Interoperability of gaspi and mpi in large scale scientific applications | |
CN103823764B (zh) | 用于移动应用缓存的方法和系统 | |
US20230297487A1 (en) | Method and apparatus for estimating execution time of neural network | |
US20210326173A1 (en) | Software managed memory hierarchy | |
Zhang | Harp: A Machine Learning Framework on Top of the Collective Communication Layer for the Big Data Software Stack | |
US20090187718A1 (en) | Information processing system and information processing method |
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 |