【技术实现步骤摘要】
脉动阵列以及包括脉动阵列的加速器
[0001]相关申请的交叉引用
[0002]本申请基于并要求于2021年5月3日在韩国知识产权局提交的韩国专利申请No.10
‑
2021
‑
0057124的优先权,所述韩国专利申请的公开内容通过引用全部包含于此。
[0003]本公开涉及脉动阵列(systolic array)以及包括脉动阵列的加速器。
技术介绍
[0004]包括脉动阵列的加速器用于执行基于卷积神经网络(CNN)的运算,诸如,卷积运算。脉动阵列可以包括以矩阵设置的多个处理元件。例如,脉动阵列可以包括多个硬件结构,多个硬件结构包括以矩阵布置的数据处理单元(DPU)。通常,脉动阵列的矩阵的大小可以固定以执行卷积运算。
技术实现思路
[0005]本公开示例性实施例提供了一种能够通过可变地重新配置脉动阵列的矩阵的大小来执行卷积运算的脉动阵列以及包括脉动阵列的加速器。
[0006]本公开不限于上述目的,本领域技术人员将基于以下对本公开的描述清楚地理解其他未提及的目的。
[0007]根据本公开的一方面,提供一种脉动阵列,包括多个处理元件,所述多个处理元件以n
×
n矩阵被设置,所述多个处理元件被配置为执行以下操作:对第一输入n
×
n矩阵的行向量的第一输入数据和第一权重n
×
n矩阵的列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者将所述多个处理元件划分为k个部分脉动阵列,所述k个部 ...
【技术保护点】
【技术特征摘要】
1.一种脉动阵列,包括:多个处理元件,所述多个处理元件以n
×
n矩阵被设置,所述多个处理元件被配置为执行以下操作:对第一输入n
×
n矩阵的行向量的第一输入数据和第一权重n
×
n矩阵的列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者将所述多个处理元件划分为k个部分脉动阵列,所述k个部分脉动阵列中的每一者包括以m
×
m矩阵设置的多个子处理元件,和对k个第二输入m
×
m矩阵的行向量的第二输入数据和k个第二权重m
×
m矩阵的列向量的第二权重数据执行第二卷积运算,以生成m个第二输出数据,每个所述第二输入m
×
m矩阵对应所述k个部分脉动阵列之一,每个所述第二权重m
×
m矩阵对应所述k个部分脉动阵列之一,其中,n是大于或等于4的整数,其中,k是大于或等于4的整数,并且其中,m为小于n的整数,并且m大于或等于2。2.根据权利要求1所述的脉动阵列,其中,在所述第一卷积运算期间,在所述多个处理元件当中,设置在所述n
×
n矩阵的第一列中的多个第一列处理元件中的每一者接收所述第一输入n
×
n矩阵的n个行向量的第一输入数据中的对应一个行向量的第一输入数据,在所述多个处理元件当中,设置在所述n
×
n矩阵的第一行中的多个第一行处理元件中的每一者接收所述第一权重n
×
n矩阵的n个列向量的第一权重数据中的对应一个列向量的第一权重数据,在所述多个处理元件当中,除了设置在所述n
×
n矩阵的所述第一列中的所述多个第一列处理元件之外的其余处理元件接收通过在第一方向上设置在相应处理元件之前的前端处理元件施加的第一输入数据,在所述多个处理元件当中,除了设置在所述n
×
n矩阵的所述第一行中的所述多个第一行处理元件之外的其余处理元件接收通过在第二方向上设置在相应处理元件之前的前端处理元件施加的第一权重数据,以及所述多个处理元件中的每一者将所接收的第一输入数据与所接收的第一权重数据相乘以获得第一相乘结果,累加所述第一相乘结果以获得第一部分累加结果,将所述第一部分累加结果与从在所述第二方向上位于相应处理元件之前的前端处理元件发送的第二部分累加结果相加以获得第三部分累加结果,并且向在第三方向上位于相应处理元件之后的后端处理元件发送所述第三部分累加结果。3.根据权利要求2所述的脉动阵列,其中,所述第一输入n
×
n矩阵的所述n个行向量包括n条第一输入数据,所述n个行向量的所述n条第一输入数据在逐个延迟一个周期的状态下被顺序地应用,并且所述第一权重n
×
n矩阵的所述n个列向量包括n条第一权重数据,所述n个列向量的所述n条第一权重数据在逐个延迟一个周期的状态下被顺序地应用。4.根据权利要求2所述的脉动阵列,其中,在所述第二卷积运算期间,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括在所述n
×
n
矩阵的所述第一列中设置的所述多个第一列处理元件的、设置在所述m
×
m矩阵的第一列中的多个第一列子处理元件不接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件发送的第二输入数据,而接收所述k个第二输入m
×
m矩阵中的对应一者的行向量的第二输入数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括在所述n
×
n矩阵的所述第一行中设置的所述多个第一行处理元件的、设置在所述m
×
m矩阵的第一行中的多个第一行子处理元件不接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件发送的第二权重数据,而接收所述k个第二输入m
×
m矩阵中的对应一者的列向量的第二权重数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在第一列中的所述多个第一列子处理元件之外的多个其余子处理元件接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件施加的第二输入数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在第一行中的所述多个第一行子处理元件之外的多个其余子处理元件接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件施加的第二权重数据,并且所述k个部分脉动阵列中的每一者的所述多个子处理元件中的每一者将所接收的第二输入数据与所接收的第二权重数据相乘以获得第二相乘结果,累加所述第二相乘结果以获得第四部分累加结果,将所述第四部分累加结果与从在所述第二方向上位于相应子处理元件之前的相应前端处理元件发送的第五部分累加结果相加以获得第六部分累加结果,并且向在所述第三方向上位于相应子处理元件之后的后端处理元件或者向外部发送所述第六部分累加结果。5.根据权利要求2所述的脉动阵列,其中,在所述第二卷积运算期间,所述k个第二权重矩阵当中的第二权重矩阵的第二权重数据被预先存储在所述k个部分脉动阵列中的每一者的所述多个子处理元件中,在每个所述部分脉动阵列的所述多个子处理元件当中,包括设置在所述n
×
n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m
×
m矩阵的第一列中的多个第一列子处理元件接收所述k个第二输入m
×
m矩阵中的对应一者的行向量的第二输入数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n
×
n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m
×
m矩阵的第一列中的多个第二列子处理元件不接收通过在所述第一方向上设置相应其余子处理元件之前的前端处理元件发送的第二输入数据,而接收所述k个第二输入m
×
m矩阵中的对应一者的行向量的第二输入数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在所述m
×
m矩阵的第一列中的所述多个第一列子处理元件之外的多个其余子处理元件接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件施加的第二输入数据,并且所述k个部分脉动阵列中的每一者的所述多个子处理元件中的每一者将所接收的第二输入数据与所存储的第二权重数据相乘以获得第二相乘结果,累加所述第二相乘结果以获得第四部分累加结果,将所述第四累加结果与从在所述第二方向上位于相应子处理元件之前的相应前端处理元件发送的第五部分累加结果相加以获得第六部分累加结果,并且向在
所述第三方向上位于相应子处理元件之后的后端处理元件或者向外部发送所述第六部分累加结果。6.根据权利要求4所述的脉动阵列,其中,每个所述第二输入m
×
m矩阵的m个行向量包括m条第二输入数据,每个所述第二输入m
×
m矩阵的所述m个行向量的所述m条第二输入数据在逐个延迟一个周期的状态下被顺序地应用,并且每个所述第二权重m
×
m矩阵的所述m个列向量包括m个第二权重数据,每个所述第二权重m
×
m矩阵的所述m个列向量的所述m条第二权重数据在逐个延迟一个周期的状态下被顺序地应用。7.根据权利要求1所述的脉动阵列,其中,所述多个处理元件中的每一者包括:乘法器,所述乘法器被配置为:将所述第一输入数据与所述第一权重数据相乘以生成所述第一相乘结果,或者将所述第二输入数据与所述第二权重数据相乘以生成所述第二相乘结果;以及部分累加器,所述部分累加器被配置为:累加所述第一相乘结果以生成所述第一部分累加结果,并且将所述第一部分累加结果与第二部分累加结果进行累加,以生成第三部分累加结果,或者累加所述第二相乘结果以生成第四部分累加结果,并且将所述第四部分累加结果与第五部分累加结果进行累加,以生成第六部分累加结果。8.根据权利要求7所述的脉动阵列,其中,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n
×
n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m
×
m矩阵的所述第一列中的多个子处理元件中的每一者还包括第一选择器,所述第一选择器被配置为:在所述第一卷积运算期间接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件发送的所述第一输入数据,并且在所述第二卷积运算期间接收所述k个第二输入m
×
m矩阵中的对应一者的对应行向量的所述第二输入数据。9.根据权利要求8所述的脉动阵列,其中,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,设置在所述m
×
m矩阵的第m行中的所述多个子处理元件中的每一者还包括第二选择器,所述第二选择器被配置为:在所述第一卷积运算期间,向在所述第三方向上设置在相应子处理元件之后的后端处理元件发送所述第三部分累加结果,并且在所述第二卷积运算期间,不向在所述第三方向上设置在相应子处理元件之后的所述后端处理元件发送所述第六部分累加结果,而向外部发送所述第六部分累加结果。10.根据权利要求9所述的脉动阵列,其中,在所述多个处理元件当中,不包括设置在所述n
×
n矩阵的所述第一行中的所述多个第一行处理元件的、在所述k个部分脉动阵列中的每一者的所述m
×
m矩阵的所述第一行中设置的所述多个子处理元件中的每一者还包括第三选择器,所述第三选择器被配置为:在所述第一卷积运算期间,接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件发送的所述第一权重数据,并且在所述第二卷积运算期间,接收所述k个第二权重m
×
m矩阵中的对应一者的对应列向量的所述第二权重数据。11.一种加速器,包括:
脉动阵列,所述脉动阵列包括以n
×
n矩阵设置的多个处理元件,所述多个处理元件被配置为执行以下操作:响应于控制信号,对第一输入n
×
n矩阵的n个行向量的第一输入数据和第一权重n
×
n矩阵的n个列向量的第一权重数据进行第...
【专利技术属性】
技术研发人员:吴成一,鲁元宇,朴世训,
申请(专利权)人:延世大学校产学协力团,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。