用于存算一体芯片的算子拆分方法、控制方法和装置制造方法及图纸

技术编号:34745119 阅读:14 留言:0更新日期:2022-08-31 18:38
本发明专利技术实施例提供的用于存算一体芯片的算子拆分方法、控制方法和装置,该拆分方法包括:判断目标算子的行数是否大于最大运行块的行数、目标算子的列数是否大于所述最大运行块的列数,所述最大运算块的行列数为所述目标存算一体芯片的闪存单元阵列的参数;根据判断结果将所述目标算子拆分成多个子算子,另外,在列拆分场合,采用Slice技术进行切片。通过采用上述技术方案,能够使得算子规模适应存算一体芯片的硬件参数,解决当算子的权重矩阵规模超出最大运算块时,不能直接利用该存算一体芯片执行神经网络运算的问题。执行神经网络运算的问题。执行神经网络运算的问题。

【技术实现步骤摘要】
用于存算一体芯片的算子拆分方法、控制方法和装置


[0001]本专利技术涉及半导体
,尤其涉及一种用于存算一体芯片的算子拆分方法、控制方法以及相关装置、设备以及存储介质。

技术介绍

[0002]在传统的冯诺依曼架构中,存储器与处理器是两个完全分离的单元,运行时两者之间需要进行数据交换,当数据量巨大时带来的高能耗以及高延迟造成了冯诺依曼结构的瓶颈。为解决存算分离导致的问题,存算一体技术应运而生,该技术将运算从处理器转入到各闪存单元中进行,通过将神经网络的权重矩阵(即算子)存储到存算一体芯片中的闪存单元阵列的各闪存单元的电导上,再将以电压表示的数据源送入闪存单元阵列,实现数据源和权重矩阵乘加运算。
[0003]但是,存算一体芯片在设计时会给出一个最大运算块,即单次运算的最大规模,是一个固定参数,当算子的权重矩阵规模超出最大运算块时,不能直接利用该存算一体芯片执行神经网络运算。

技术实现思路

[0004]针对现有技术中的问题,本专利技术提供一种用于存算一体芯片的算子拆分方法、控制方法、相关装置、设备以及存储介质,能够至少部分地解决现有技术中存在的问题。
[0005]为了实现上述目的,本专利技术采用如下技术方案:
[0006]第一方面,提供一种用于存算一体芯片的算子拆分方法,包括:
[0007]判断目标算子的行数是否大于最大运行块的行数、目标算子的列数是否大于所述最大运行块的列数,所述最大运算块的行列数为所述目标存算一体芯片的闪存单元阵列的参数;
[0008]根据判断结果将所述目标算子拆分成多个子算子。
[0009]进一步地,所述根据判断结果将所述目标算子拆分成多个子算子,包括:
[0010]若目标算子的列数不大于最大运行块的列数、目标算子的行数大于最大运行块的行数,根据所述最大运行块的行数以及所述目标算子的行列数将所述目标算子拆分成多个子算子;
[0011]若目标算子的列数大于最大运行块的列数,根据所述最大运行块的行列数以及所述目标算子的行列数将所述目标算子拆分成多个子算子;
[0012]其中,所述子算子的行数大不于所述最大运行块的行数,所述子算子的列数不大于所述最大运行块的列数。
[0013]进一步地,所述根据所述最大运行块的行列数以及所述目标算子的行列数将所述目标算子拆分成多个子算子,包括:
[0014]根据所述最大运行块的行列数以及所述目标算子的行列数获取各子算子的行数和列数;
[0015]根据各子算子的行数和列数,利用Slice技术对所述目标算子进行切片获取各子算子的各元素的参数值。
[0016]进一步地,所述目标算子为按照行优先方式存储的多维数组,切片时按照某一维度进行切片;
[0017]所述根据各子算子的行数和列数,利用Slice技术对所述目标算子进行切片获取各子算子的各元素的参数值,包括:
[0018]根据所述目标算子计算当前维度的基数;
[0019]根据当前维度需要切片的长度以及所述基数得到单个连续内存块中的元素个数;
[0020]根据切片的开始位置以及所述基数计算第一个连续内存块的首地址偏移;
[0021]根据当前维度需要切片的长度、所述基数以及第一个连续内存块的首地址偏移得到各连续内存块的首地址偏移;
[0022]根据所述目标算子大小以及单个连续内存块中的元素个数计算连续内存块的个数;
[0023]根据各连续内存块的首地址偏移、当前维度需要切片的长度以及连续内存块的个数得到各子算子的各元素的参数值。
[0024]进一步地,所述根据所述目标算子计算当前切片维度的基数,包括:
[0025]计算目标算子当前切片维度后所有维度的元素个数的乘积得到所述基数。
[0026]进一步地,所述根据所述最大运行块的行数以及所述目标算子的行列数获取各子算子的行数和列数,包括:
[0027]若所述目标算子的行数大于所述最大运行块的行数,对所述目标算子按行列进行拆分,得到各子算子的行数和列数;
[0028]若所述目标算子的行数不大于所述最大运行块的行数,对所述目标算子按列进行拆分,得到各算子的行数和列数。
[0029]进一步地,所述根据所述最大运行块的行数以及所述目标算子的行列数将所述目标算子拆分成多个子算子包括:
[0030]根据所述最大运行块的行数以及所述目标算子的行列数对所述目标算子按行进行拆分,得到各子算子的行数和列数;
[0031]根据各子算子的行数和列数获取各子算子的各元素的参数值。
[0032]进一步地,还包括:
[0033]将所述目标算子对应的偏置阵列组合至对应的子算子得到最终待映射至所述闪存单元阵列的数据。
[0034]进一步地,所述将所述目标算子对应的偏置阵列组合至对应的子算子,包括:
[0035]若子算子为所述目标算子按行拆分得到,将所述目标算子对应的偏置阵列组合在任一子算子上;
[0036]若子算子为所述目标算子按列拆分得到,将所述目标算子对应的偏置阵列按列拆分后组合至对应的子算子上;
[0037]若子算子为按照行列拆分得到,将所述目标算子对应的偏置阵列按列拆分后,组合至对应列的任一子算子上。
[0038]第二方面,提供一种用于存算一体芯片的算子拆分装置,包括:
[0039]判断模块,判断目标算子的行数是否大于最大运行块的行数、目标算子的列数是否大于所述最大运行块的列数,所述最大运算块的行列数为所述目标存算一体芯片的闪存单元阵列的参数;
[0040]算子拆分模块,根据判断结果将所述目标算子拆分成多个子算子,所述子算子用于映射至所述闪存单元阵列中以实现目标算子的运算。
[0041]第三方面,提供一种用于存算一体芯片的控制方法,包括:
[0042]根据预设拆分规则对上一算子的运算结果进行拆分后加载至对应的多个闪存单元子阵列,每个所述闪存单元子阵列上预存有对应的子算子,各子算子是根据上述的拆分方法拆分得到,预设拆分规则根据将当前算子拆成多个子算子的算子拆分规则设置;
[0043]获取各个子算子的运算结果并进行组合得到所述当前算子的运算结果。
[0044]进一步地,所述上一算子的运算结果为按照行优先方式存储的多维数组;
[0045]若所述预设拆分规则中涉及按列拆分,则利用Slice技术对所述上一算子的运算结果按照某一维度进行切片获取拆分后的运算子结果的各元素的参数值。
[0046]进一步地,所述利用Slice技术对所述上一算子的运算结果按照某一维度进行切片获取拆分后的运算子结果的各元素的参数值,包括:
[0047]根据所述运算结果计算当前维度的基数;
[0048]根据当前维度需要切片的长度以及所述基数得到单个连续内存块中的元素个数;
[0049]根据切片的开始位置以及所述基数计算第一个连续内存块的首地址偏移;
[0050]根据当前维度需要切片的长度、所述基数以及第一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于存算一体芯片的算子拆分方法,其特征在于,包括:判断目标算子的行数是否大于最大运行块的行数、目标算子的列数是否大于所述最大运行块的列数,所述最大运算块的行列数为所述目标存算一体芯片的闪存单元阵列的参数;根据判断结果将所述目标算子拆分成多个子算子。2.根据权利要求1所述的用于存算一体芯片的算子拆分方法,其特征在于,所述根据判断结果将所述目标算子拆分成多个子算子,包括:若目标算子的列数不大于最大运行块的列数、目标算子的行数大于最大运行块的行数,根据所述最大运行块的行数以及所述目标算子的行列数将所述目标算子拆分成多个子算子;若目标算子的列数大于最大运行块的列数,根据所述最大运行块的行列数以及所述目标算子的行列数将所述目标算子拆分成多个子算子;其中,所述子算子的行数大不于所述最大运行块的行数,所述子算子的列数不大于所述最大运行块的列数。3.根据权利要求2所述的用于存算一体芯片的算子拆分方法,其特征在于,所述根据所述最大运行块的行列数以及所述目标算子的行列数将所述目标算子拆分成多个子算子,包括:根据所述最大运行块的行列数以及所述目标算子的行列数获取各子算子的行数和列数;根据各子算子的行数和列数,利用Slice技术对所述目标算子进行切片获取各子算子的各元素的参数值。4.根据权利要求3所述的用于存算一体芯片的算子拆分方法,其特征在于,所述目标算子为按照行优先方式存储的多维数组,切片时按照某一维度进行切片;所述根据各子算子的行数和列数,利用Slice技术对所述目标算子进行切片获取各子算子的各元素的参数值,包括:根据所述目标算子计算当前维度的基数;根据当前维度需要切片的长度以及所述基数得到单个连续内存块中的元素个数;根据切片的开始位置以及所述基数计算第一个连续内存块的首地址偏移;根据当前维度需要切片的长度、所述基数以及第一个连续内存块的首地址偏移得到各连续内存块的首地址偏移;根据所述目标算子大小以及单个连续内存块中的元素个数计算连续内存块的个数;根据各连续内存块的首地址偏移、当前维度需要切片的长度以及连续内存块的个数得到各子算子的各元素的参数值。5.根据权利要求4所述的用于存算一体芯片的算子拆分方法,其特征在于,所述根据所述目标算子计算当前切片维度的基数,包括:计算目标算子当前切片维度后所有维度的元素个数的乘积得到所述基数。6.根据权利要求3所述的用于存算一体芯片的算子拆分方法,其特征在于,所述根据所述最大运行块的行列数以及所述目标算子的行列数获取各子算子的行数和列数,包括:若所述目标算子的行数大于所述最大运行块的行数,对所述目标算子按行列进行拆
分,得到各子算子的行数和列数;若所述目标算子的行数不大于所述最大运行块的行数,对所述目标算子按列进行拆分,得到各算子的行数和列数。7.根据权利要求2所述的用于存算一体芯片的算子拆分方法,其特征在于,所述根据所述最大运行块的行数以及所述目标算子的行列数将所述目标算子拆分成多个子算子包括:根据所述最大运行块的行数以及所述目标算子的行列数对所述目标算子按行进行拆分,得到各子算子的行数和列数;根据各子算子的行数和列数获取各子算子的各元素的参数值。8.根据权利要求1所述的用于存算一体芯片的算子拆分方法,其特征在于,还包括:将所述目标算子对应的偏置阵列组合至对应的子算子得到最终待映射至所述闪存单元阵列的数据。9.根据权利要求8所述的用于存算一体芯片的算子拆分方法,其特征在于,所述将所述目标算子对应的偏置阵列组合至对应的...

【专利技术属性】
技术研发人员:路瑶
申请(专利权)人:北京知存科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1