CN114692077A - 一种矩阵计算装置、方法、系统、电路、芯片及设备 - Google Patents

一种矩阵计算装置、方法、系统、电路、芯片及设备 Download PDF

Info

Publication number
CN114692077A
CN114692077A CN202110181498.6A CN202110181498A CN114692077A CN 114692077 A CN114692077 A CN 114692077A CN 202110181498 A CN202110181498 A CN 202110181498A CN 114692077 A CN114692077 A CN 114692077A
Authority
CN
China
Prior art keywords
matrix
row
intermediate result
column
element values
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.)
Pending
Application number
CN202110181498.6A
Other languages
English (en)
Inventor
林腾毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2021/141000 priority Critical patent/WO2022143432A1/zh
Priority to EP21914169.4A priority patent/EP4258135A1/en
Publication of CN114692077A publication Critical patent/CN114692077A/zh
Priority to US18/343,622 priority patent/US20230342419A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

一种矩阵计算装置、方法、系统、电路、芯片及设备,能够直接对压缩格式的矩阵进行计算,从而提升压缩格式的矩阵的计算效能。矩阵计算装置包括:向量外积处理引擎和累加器,矩阵计算装置基于向量外积对压缩格式的第一矩阵和第二矩阵进行计算,在计算的过程中,向量外积处理引擎对保留了行坐标的第一列向量和保留了列坐标的第二列向量进行向量外积计算,然后累加器基于位置坐标的索引,将位置坐标相同的第三元素值进行累加,从而得到两个压缩格式的矩阵进行计算的结果矩阵,相对于传统的需要将压缩格式的矩阵进行先解压缩,然后对解压缩后的矩阵进行矩阵计算的方法,本申请实施例中提供的矩阵计算装置能够有效提升压缩格式的矩阵的计算效能。

Description

一种矩阵计算装置、方法、系统、电路、芯片及设备
本申请要求于2020年12月30日提交中国专利局、申请号为“202011617575.X”、申请名称为“一种矩阵计算装置和算术逻辑单元”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机领域,尤其涉及一种矩阵计算装置、方法、系统、电路、芯片及设备。
背景技术
矩阵计算是人工智能、科学计算、图形计算等不同的应用场景中重要的计算类型。矩阵是一个按照长方阵列排列的元素值的集合,矩阵中的元素值可能包含有零元素值和非零元素值这两种数值,当矩阵中有大量的零元素值时,为了节省存储空间,可以仅存储矩阵中的非零元素值,即对矩阵进行压缩,存储压缩格式的矩阵。
当前技术中,针对压缩格式的矩阵的计算常用方法是,首先需要将压缩格式的矩阵进行解压缩,即将压缩格式的矩阵转换成非压缩格式的矩阵,然后再针对非压缩格式的矩阵做矩阵计算。在矩阵计算过程中,由于需要对压缩格式的矩阵进行解压缩操作,且解压缩后的数据会占用非常大的内存空间,这使得矩阵的计算速度会受限于内存的存取带宽,在内存的存取带宽一定的情况下,矩阵的计算速度无法提升,从而导致计算效能较低。
发明内容
本申请提供一种矩阵计算装置、方法、系统、电路、芯片及设备,能够直接对压缩格式的矩阵进行计算,不需要将压缩格式的矩阵进行解压缩,进而能够提升压缩格式的矩阵的计算效能。
第一方面,本申请实施例提供了一种矩阵计算装置,矩阵计算装置包括:向量外积处理引擎和累加器;向量外积处理引擎,用于计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,第一列向量包括第一元素值及第一元素值的行坐标,第一行向量包括第二元素值及第二元素值的列坐标,中间结果矩阵包括第三元素值及第三元素值的位置坐标,位置坐标包括第一元素值的行坐标和第二元素值的列坐标;其中,N个第一列向量是由压缩格式的第一矩阵转换得到的,N个第一行向量是由压缩格式的第二矩阵转换得到的,N为大于或者等于1的整数;累加器,用于根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。本申请实施例中,矩阵计算装置基于向量外积对压缩格式的第一矩阵和第二矩阵进行计算,在计算的过程中,保留第一列向量中元素值的行坐标,保留第二列向量中元素值的列坐标,然后基于位置坐标的索引,将位置坐标相同的第三元素值进行累加,从而得到两个压缩格式的矩阵进行计算的结果矩阵,相对于传统的需要将压缩格式的矩阵进行先解压缩,然后对解压缩后的矩阵进行矩阵计算的方法,本申请实施例中提供的矩阵计算装置能够有效提升压缩格式的矩阵的计算效能。
在一种可选的实现方式中,N个中间结果矩阵至少包括第一中间结果矩阵和第二中间结果矩阵,第一中间结果矩阵中第三元素值的位置坐标为第一位置坐标,第二中间结果矩阵中第三元素值的位置坐标为第二位置坐标;累加器用于按照N个中间结果矩阵的产生顺序,将第一中间结果矩阵中第三元素值按照第一位置坐标写入缓存器中的对应位置;然后再根据第二中间结果矩阵中第三元素值的第二位置坐标,读取第二位置坐标在缓存器中对应位置的缓存值,将第二中间结果矩阵中第三元素值和缓存值进行累加,得到非压缩格式的结果矩阵。在上述可选的实现方式中,矩阵计算装置可以根据不同的应用场景输出非压缩格式的矩阵,增加了矩阵计算装置的适用场景。
在一种可选的实现方式中,矩阵计算装置还包括矩阵压缩单元;矩阵压缩单元用于压缩非压缩格式的结果矩阵,得到压缩格式的结果矩阵。在上述可选的实现方式中,矩阵计算装置可以根据不同的应用场景输出压缩格式的矩阵,增加了矩阵计算装置的适用场景。并且矩阵计算装置将结果矩阵进行压缩,输出压缩格式的矩阵,从而节省传输资源或便于下一步计算操作。
在一种可选的实现方式中,累加器还具体用于:将N个中间结果矩阵中第三元素值按照第三元素值的位置坐标进行排序,例如,按照第三元素值的行坐标进行排序,或者,按照第三元素值的列坐标进行排序;然后将排序后的N个中间结果矩阵中的位置坐标进行比对,将位置坐标相同的第三元素值相加,并删除零元素值的位置坐标,得到压缩格式的结果矩阵。在上述可选的实现方式中,可以直接得到压缩格式的矩阵,矩阵计算装置输出的压缩格式的矩阵可以应用于某些后续计算需要压缩格式的矩阵的应用场景。且由于矩阵计算装置输出的是压缩格式的矩阵,可以减少后续传输矩阵的传输资源。
在一种可选的实现方式中,矩阵计算装置还包括格式转换单元;格式转换单元,用于获取第一矩阵和第二矩阵,将第一矩阵转换成N个第一列向量,并保留第一列向量中第一元素值的行坐标,将第二矩阵转换成N个第一行向量,并保留第一行向量中第一元素值的列坐标,从而可以使得矩阵计算装置可以基于向量外积对两个压缩格式矩阵进行计算。
在一种可选的实现方式中,矩阵计算装置还包括格式转换单元;格式转换单元用于获取第五矩阵和第六矩阵,对第五矩阵进行格式转换,得到第一矩阵,对第六矩阵进行格式转换,得到第二矩阵,其中,第五矩阵和第六矩阵中至少有一个矩阵为非压缩格式的矩阵。在上述可选的实现方式中,矩阵计算装置可以接收非压缩格式的矩阵,然后将非压缩格式的矩阵转换成压缩格式的矩阵,从而使得矩阵计算装置可以支持多种格式的矩阵计算。
在一种可选的实现方式中,矩阵计算装置还包括格式转换单元,格式转换单元还用于将第一列向量拆分为X个第二列向量,将第一行向量拆分为X个第二行向量,其中,第二列向量和第二行向量包含的元素值的精度为第二精度,第一列向量和第一行向量中包括的元素值的精度为第一精度,而且第一精度高于第二精度,X为大于或者等于2的整数;向量外积处理引擎,还用于计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,第四矩阵包括第四元素值及第四元素值的位置坐标,第四元素值的位置坐标包括第一元素值的行坐标和第二元素值的列坐标,第四元素值的精度为第一精度;然后累加器还用于根据第四元素值的位置坐标的索引,将X2个第四矩阵中位置坐标相同的第四元素值累加,得到中间结果矩阵,中间结果矩阵中的第三元素值的精度为第一精度。在上述可选的实现方式中,矩阵计算装置可基于低精度的矩阵计算装置实现高精度的矩阵计算,从而提高矩阵计算单元的适用性。
第二方面,本申请实施例提供了一种矩阵计算方法,该方法应用于矩阵计算装置,方法包括:首先,获取第一计算指令,第一计算指令包括N个第一列向量和N个第一行向量;然后,计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,其中,第一列向量包括第一元素值及第一元素值的行坐标,第一行向量包括第二元素值及第二元素值的列坐标,中间结果矩阵包括第三元素值及第三元素值的位置坐标,位置坐标包括第一元素值的行坐标和第二元素值的列坐标;N个第一列向量是由压缩格式的第一矩阵转换得到的,N个第一行向量是由压缩格式的第二矩阵转换得到的,N为大于或者等于1的整数;最后,根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。本申请实施例中,基于N个第一列向量和N个第一行向量的向量外积对第一矩阵和第二矩阵进行计算,在计算的过程中,保留第一列向量中元素值的行坐标,保留第二列向量中元素值的列坐标,然后基于位置坐标的索引,将位置坐标相同的第三元素值进行累加,从而得到两个压缩格式的矩阵进行计算的结果矩阵,相对于传统的需要将压缩格式的矩阵进行先解压缩,然后对解压缩后的矩阵进行矩阵计算的方法,本申请实施例中提供的矩阵计算装置能够有效提升压缩格式的矩阵的计算效能。
在一种可选的实现方式中,N个中间结果矩阵至少包括第一中间结果矩阵和第二中间结果矩阵,第一中间结果矩阵中第三元素值的位置坐标为第一位置坐标,第二中间结果矩阵中第三元素值的位置坐标为第二位置坐标;该方法中根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵可以具体包括:先按照N个中间结果矩阵的产生顺序,将第一中间结果矩阵中第三元素值按照第一位置坐标写入缓存器中的对应位置;然后进一步根据第二中间结果矩阵中第三元素值的第二位置坐标,读取第二位置坐标在缓存器中对应位置的缓存值,将第二中间结果矩阵中第三元素值和缓存值进行累加,得到非压缩格式的结果矩阵。在上述可选的实现方式中,矩阵计算装置可以根据不同的应用场景输出非压缩格式的矩阵,增加了矩阵计算装置的适用场景。
在一种可选的实现方式中,该方法还包括:压缩非压缩格式的结果矩阵,得到压缩格式的结果矩阵。在上述可选的实现方式中,矩阵计算装置可以根据不同的应用场景输出压缩格式的矩阵,增加了矩阵计算装置的适用场景。并且矩阵计算装置将结果矩阵进行压缩,输出压缩格式的矩阵,从而节省传输资源或便于下一步计算操作。
在一种可选的实现方式中,该方法中根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加得到结果矩阵,可以具体包括:首先,将N个中间结果矩阵中第三元素值按照第三元素值的位置坐标进行排序,例如,按照第三元素值的行坐标进行排序,或者,按照第三元素值的列坐标进行排序;将排序后的N个中间结果矩阵中的位置坐标进行比对,将位置坐标相同的第三元素值相加,并删除零元素值的位置坐标,得到压缩格式的结果矩阵。在上述可选的实现方式中,可以直接得到压缩格式的矩阵,矩阵计算装置输出的压缩格式的矩阵可以应用于某些后续计算需要压缩格式的矩阵的应用场景。且由于矩阵计算装置输出的是压缩格式的矩阵,可以减少后续传输矩阵的传输资源。
在一种可选的实现方式中,在获取第一计算指令之前,该方法还包括:获取第二计算指令,第二计算指令包括第一矩阵和第二矩阵;将第一矩阵转换成N个第一列向量,并保留第一列向量中第一元素值的行坐标,将第二矩阵转换成N个第一行向量,并保留第一行向量中第一元素值的列坐标,从而可以使得矩阵计算装置可以基于向量外积对两个压缩格式矩阵进行计算。
在一种可选的实现方式中,在获取第二计算指令之前,该方法还包括:获取第三计算指令,第三计算指令包括第五矩阵和第六矩阵,其中,第五矩阵和第六矩阵中至少有一个矩阵为非压缩格式的矩阵;然后对第五矩阵进行格式转换,得到压缩格式的第一矩阵,对第六矩阵进行格式转换,得到第二矩阵。在上述可选的实现方式中,矩阵计算装置可以接收非压缩格式的矩阵,然后将非压缩格式的矩阵转换成压缩格式的矩阵,从而使得矩阵计算装置可以支持多种格式的矩阵计算。
在一种可选的实现方式中,可以先将第一列向量拆分成X个第二列向量,将第一行向量拆分成X个第二行向量,其中,第二列向量和第二行向量包含的元素值的精度为第二精度,第一列向量和第一行向量中包括的元素值的精度为第一精度;第一精度高于第二精度,X为大于或者等于2的整数;该方法中计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵可以包括:计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,第四矩阵包括第四元素值及第四元素值的位置坐标,第四元素值的位置坐标包括第一元素值的行坐标和第二元素值的列坐标,第四元素值的精度为第一精度;再进一步的根据第四元素值的位置坐标的索引,将X2个第四矩阵中位置坐标相同的第四元素值累加,得到中间结果矩阵,中间结果矩阵中的第三元素值的精度为第一精度。在上述可选的实现方式中,矩阵计算装置可基于低精度的矩阵计算装置实现高精度的矩阵计算,从而提高矩阵计算单元的适用性。
第三方面,提供一种矩阵计算电路,该矩阵计算电路用于执行上述第二方面或者第二方面的任一种可能的实现方式所提供的矩阵计算方法的操作步骤。
第四方面,提供一种矩阵计算系统,该系统包括处理器和矩阵计算装置,该处理器用于向该矩阵计算装置发送计算指令,该矩阵计算装置用于执行上述第二方面或者第二方面的任一种可能的实现方式所提供的矩阵计算方法的操作步骤。
第五方面,提供一种芯片,该芯片包括处理器,该处理器中集成有矩阵计算装置,该矩阵计算装置用于执行上述第二方面或者第二方面的任一种可能的实现方式所提供的矩阵计算方法的操作步骤。
第六方面,提供一种矩阵计算设备,该设备包括上述第四方面所提供的矩阵计算系统、或者上述第五方面所提供的芯片。
第七方面,提供一种可读存储介质,该可读存储介质中存储有指令,当该可读存储介质在设备上运行时,使得该设备执行第二方面或者第二方面的任一项可能的实现方式所提供的矩阵计算方法的操作步骤。
第八方面,提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行第二方面或者第二方面的任一项可能的实现方式所提供的矩阵计算方法的操作步骤。
可以理解地,上述提供的任一种矩阵计算方法的装置、计算机存储介质或者计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1A为本申请实施例中COO压缩格式的矩阵的示意图;
图1B为本申请实施例中CSR压缩格式的矩阵的示意图;
图1C为本申请实施例中CSC压缩格式的矩阵的示意图;
图2为本申请实施例中提供的一种计算设备的结构示意图;
图3为本申请实施例中提供的一种处理器的结构示意图;
图4A为本申请实施例中提供的一种矩阵计算装置的结构示意图;
图4B为本申请实施例中提供的一种向量外积处理引擎的结构示意图;
图4C为本申请实施例中提供的一种MAC运算子单元的结构示意图;
图4D为本申请实施例中提供的一种累加器的结构示意图;
图4E为本申请实施例中提供的一种加法器的结构示意图;
图5A为本申请实施例中矩阵计算装置将第一矩阵转换为N个第一列向量及第二矩阵转换为多个第一行向量的示意图;
图5B为本申请实施例中的矩阵计算装置对N个第一列向量和N个第一行向量进行外积计算,得到N个中间结果矩阵的示意图;
图5C为本申请实施例中的第一中间结果矩阵中的元素值及位置坐标的示意图;
图5D为本申请实施例中的第二中间结果矩阵中的元素值及位置坐标的示意图;
图5E为本申请实施例中矩阵计算装置将N个中间结果矩阵中位置坐标相同的第三元素值进行累加得到结果矩阵的示意图;
图6为本申请实施例中将N个中间结果矩阵中位置坐标相同的第三元素值进行累加得到结果矩阵的一种实现方式的示意图;
图7为本申请实施例中提供的另一种矩阵计算装置的结构示意图;
图8为本申请实施例中将N个中间结果矩阵中位置坐标相同的第三元素值进行累加得到结果矩阵的另一种实现方式的示意图;
图9为本申请实施例中格式转换单元对非压缩格式的矩阵转换为压缩格式的矩阵的示意图;
图10为本申请实施例中将第一精度的整型数值分解成多个第二精度的整型数值的示意图;
图11为本申请实施例中将第一精度的第一列向量分解成多个第二精度的第二列向量及第一精度的第一行向量分解成多个第二精度的第二行向量的示意图;
图12为本申请实施例中矩阵计算装置对第二行向量和第二列向量进行向量外积计算得到第四矩阵的示意图;
图13为本申请实施例中一种矩阵计算方法的一个实施例的步骤流程示意图;
图14为本申请实施例中一种矩阵计算方法的另一个实施例的步骤流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必然用于描述特定的顺序或先后次序。
为了更好的理解本申请,首先对本申请中涉及的相关词语进行说明。
矩阵(matrix):一个维度为的m×n矩阵是一个由m行(row)n列(column)的元素排列成的矩形阵列。示例性的,矩阵A如下式(1)所示,矩阵B如下式(2)所示。
Figure BDA0002942100860000061
矩阵的加减法:维度相同的矩阵之间可以相互加减,具体是对每个位置上的元素做加减法。例如,矩阵A与矩阵B均为维度为m×n矩阵,矩阵A和矩阵B相加得到矩阵,矩阵C如下式(3)所示。
Figure BDA0002942100860000062
矩阵的乘法:两个矩阵的乘法仅当第一个矩阵A的列数(column)和另一个矩阵的行数(row)相等时才能相乘。例如,矩阵A是维度为m×n的矩阵,矩阵B是维度为n×p的矩阵,矩阵A和矩阵B的乘积是一个m×p矩阵,该m×p矩阵中的一个元素如下式(4)所示:
Figure BDA0002942100860000063
其中,1≤i≤m,1≤j≤p。
行向量(row vector)是一个维度为1×m的矩阵,其中,m为正整数。例如:一个行向量如下式(5)所示:
X=[x1 x2 ... xm], 式(5)。
列向量(column vector)是一个维度为m×1的矩阵,m为正整数。例如:一个列向量如下式(6)所示:
Figure BDA0002942100860000071
向量外积(vector outer product):两个向量的张量积,张量积为一矩阵。例如,给定一个维度为m×1的列向量U和维度为1×n的行向量V,向量U和向量V的外积,U×V被定义为维度为m×n的矩阵D,矩阵D如下式(7)所示:
Figure BDA0002942100860000072
压缩格式的矩阵:当一个矩阵中包含了零元素值和非零元素值时,通常情况下,为了节省存储空间,可以按照一定格式存储矩阵中的非零元素值,而不存储零元素值,这个过程即对矩阵进行压缩,压缩存储后的矩阵称为压缩格式的矩阵。对矩阵进行压缩的方法包括但不限定于坐标表示(coordinate,COO)、行压缩(compressed sparse row,CSR)、列压缩(compressed sparse column,CSC)等。
下面对分别对COO、CSR和CSC这三种压缩方法进行示例性说明。
COO:通过三元组来表示矩阵。三元组中包括三个值,三个值分别是行号、列号和元素值。其中,行号和列号用于标识元素值的位置。例如,三元组为(行号,列号,元素值),或者,三元组为(元素值,行号,列号)等,具体的并不限定三元组中三个值的排列顺序。举例来说,请参阅图1A,图1A中示出了一个维度为4×4的矩阵Y,该矩阵中包括零元素值和非零元素值,其中,非零元素值为:1,2,3,4,5,6,7,8,9。如非零元素值“1”所在的位置是第0行第0列,三元组表示为(0,0,1)。非零元素值“2”所在的位置是第0行第1列,三元组表示为(0,1,2)。非零元素值“3”所在的位置是第1行第1列,三元组表示为(1,1,3)。此处不对每个元素值进行一一赘述说明。例如,压缩格式的矩阵的三元组形式为:(0,0,1),(0,1,2),(1,1,3),(1,2,4),(2,0,5),(2,2,6),(2,3,7),(3,1,8),(3,3,9)。
可选地,压缩格式的矩阵Y可以表示为如下式(8)所示。
行坐标=([0,0,1,1,2,2,2,3,3])
列坐标=([0,1,1,2,0,2,3,1,3])
元素值=([1,2,3,4,5,6,7,8,9]), 式(8)。
CSR:通过三类数据来表示矩阵,三类数据分别是元素值、列号以及行偏移值。其中,CSR中的元素值和列号与上述COO方式中的元素值和列号的表示方式类似。CSR与COO方式不同的是,行偏移表示某一行的第一个元素在所有元素值中的起始偏移位置。请参阅图1B所示,首先,将图1B中所示的矩阵Y中的非零元素值按照行进行排列,得到所有的元素值为:1,2,3,4,5,6,7,8,9。第一行中的第一个非零元素值是“1”,元素值“1”在所有元素值中的偏移是“0”。同理,第二行中的第一个非零元素值是“3”,元素值“3”在所有元素值中的偏移是“2”。第三行中的第一个非零元素值是“5”,元素值“5”在所有元素值中的偏移是“4”,第四行中的第一个非零元素值是“8”,元素值“8”在所有元素值中的偏移是“7”。最后在行偏移所在行的最后位置补上矩阵中非零元素值的总个数(如“9”)。
压缩格式的矩阵Y可以表示为如下式(9)所示。
行偏移=([0,2,4,7,9])
列坐标=([0,1,1,2,0,2,3,1,3])
元素值=([1,2,3,4,5,6,7,8,9]), 式(9)。
CSC:通过三类数据来表示矩阵,三类数据分别是元素值、行号以及列偏移值。其中,CSR中的元素值和行号与上述COO方式中的元素值和行号的表示方式类似。CSC与COO方式不同的是,列偏移表示某一列的第一个元素在所有元素值中的起始偏移位置。请参阅图1C所示,首先,将图1C中所示的矩阵Y中的非零元素值按照列进行排列,得到所有的元素值为:1,5,2,3,8,4,6,7,9。第一列中的第一个非零元素值是“1”,元素值“1”在所有元素值中的偏移是“0”。同理,第二列中的第一个非零元素值是“5”,元素值“5”在所有元素值中的偏移是“2”。第三列中的第一个非零元素值是“2”,元素值“2”在所有元素值中的偏移是“5”,第四列中的第一个非零元素值是“3”,元素值“3”在所有元素值中的偏移是“7”。最后在列偏移所在行的最后位置补上矩阵中非零元素值的总个数(如“9”)。
压缩格式的矩阵Y可以表示为如下式(10)所示。
列偏移=([0,2,5,7,9])
行坐标=([0,0,1,1,2,2,2,3,3])
元素值=([1,5,2,3,8,4,6,7,9]), 式(10)。
通过对上述三种矩阵压缩方法的说明可知,COO压缩格式的矩阵中每个元素值具有对应的行坐标(行号)和列坐标(列号)。CSR压缩格式的矩阵中每个元素值都会有对应的列坐标。CSC压缩格式的矩阵中每个元素值都会有对应的行坐标。
非压缩格式的矩阵:请参阅图1A中示出的矩阵Y,非压缩格式矩阵包括零元素值和非零元素值。需要说明的是,通常情况下,将压缩格式的矩阵也称为稀疏矩阵,而将非压缩格式的矩阵也可以称为稠密矩阵。
数值类型:在计算机领域中,数值类型包括整型和浮点型。整型主要用于表示整数,浮点型主要用于表示小数。其中,整型的精度包括int2、int4、int8、int16、int32等精度。其中,int用于表示整型函数,int后加上数字就代表2进制值域有多少位(比特bit),1个位(bit)是0或者1。如int4的2进制值域是4位(0000-1111),换算到10进制为(-8,7)。同理int8的2进制值域为(-27,27-1)。计算机储存容量单位1字节是8位,所以对应的int8有1字节,int16有2字节。int16的2进制值域占2个字节,换算到10进制为(-32768,32767)。int32的2进制值域占4个字节,换算到10进制为(-2147483648,2147483647)。
整型矩阵是指以整型数值作为元素的矩阵。比如,m行n列的整型矩阵包括m×n个元素,这m×n个元素为整型数值。该整型数值可以为int2、int4、int8、int16或int32等精度,如整型矩阵也可以包括不同整型格式的矩阵,比如,包括int8格式的整型数值的矩阵、包括int16格式的整型数值的矩阵、以及包括int32格式的整型数值的矩阵等。
浮点数(float point,FP)主要用于表示小数,通常由三部分组成,即符号(sign)位、指数(exponent)位和尾数(mantisa)位,该指数位也可以称为阶码位。其中,符号位可以为1比特(bit),阶码位和尾数位可以为多个比特(bits)。浮点数通常可以包括多种格式(format),如IEEE754标准中的半精度浮点数、单精度浮点数和双精度浮点数等。其中,半精度浮点数(half-precision floating-point)在计算机存储器中占用16bits(即占用2个字节),也可以简称为FP16。半精度浮点数可表示的数值的绝对值范围大约为[6.10×10-5,6.55×104]。单精度浮点数(single-precision floating-point)在计算机存储器中占用32bits(即4个字节),也可以简称为FP32。单精度浮点数可表示的数值的绝对值范围大约为[1.18×10-38,3.40×1038]。双精度浮点数(double precision floating point)在计算机存储器中占用64bits(即占用8个字节),也可以简称为FP64。双精度浮点数可以表示十进制的15位或16位有效数字,可表示的数值的绝对值范围大约为[2.23×10-308,1.80×10308]。
下面表1中示出了上述三种浮点数的一种存储格式。其中,在FP16占用的16bits中,符号位占用1bit,阶码占用5bits,尾数位占用10bits。在FP32占用的32bits中,符号位占用1bit,阶码占用8bits,尾数位占用23bits。在FP64占用的64bits中,符号位占用1bit,阶码占用11bits,尾数位占用52bits。
表1
Figure BDA0002942100860000091
浮点数矩阵可以是指以浮点数作为元素的矩阵。比如,m行n列的浮点数矩阵包括m×n个元素,这m×n个元素可以为浮点数。与浮点数类似,浮点数矩阵也可以包括不同浮点数格式的矩阵,比如,包括FP16格式的浮点数的矩阵,包括FP32格式的浮点数的矩阵,以及包括FP64格式的浮点数的矩阵等。
图2为本实施例提供的一种计算设备的结构示意图,该计算设备可以是终端、网络设备或者服务器等具有计算能力的设备。参见图2,该计算设备可以包括存储器201、处理器202、通信接口203和总线204,存储器201、处理器202以及通信接口203通过总线204相互连接。
其中,存储器201可用于存储数据、软件程序以及模块,主要包括存储程序区和存储数据区,存储程序区可存储操作系统,至少一个功能所需的软件应用和中间层软件等,存储数据区可存储该设备的使用时所创建的数据等。比如,该操作系统可以包括Linux操作系统、Unix操作系统或者Window操作系统等;该至少一个功能所需的软件应用可以包括人工智能(artificial intelligence)相关的应用,高性能计算(high performancecomputing,HPC)相关的应用,深度学习(deep learning)相关的应用或者科学计算相关的应用等,该中间层软件可以包括线性代数库函数等。在一种可能的示例性中,存储器201包括但不限于静态随机存储器(static RAM,SRAM)、动态随机存储器(dynamic RAM,DRAM),同步动态随机存储器(synchronous DRAM,SDRAM)或者高速随机存取存储器等。进一步的,存储器201还可以包括其他非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
另外,处理器202用于对该计算设备的操作进行控制管理,比如通过运行或执行存储在存储器201内的软件程序和/或模块,以及调用存储在存储器201内的数据,执行该计算设备的各种功能和处理数据。在一种可能的示例性中,处理器202包括但不限于中央处理单元(central processing unit,CPU)、网络处理单元(network processing unit,NPU)、图形处理器(graphics processing unit,GPU)、应用专用集成电路(application specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件,晶体管逻辑器件,逻辑电路或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器202也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等。
通信接口203用于实现该计算设备与外部设备进行通信。其中,通信接口203可以包括输入接口和输出接口。该输入接口可用于获取下述实施例中的压缩格式的第一矩阵和第二矩阵。在一些可行的实施例中,该输入接口可以只有一个输入接口,也可以有多个输入接口。该输出接口可用于输出下述实施例中的结果矩阵。在一些可行的实施例中,该结果矩阵可以由处理器直接输出,也可以先被存储于存储器中,然后经存储器输出。在另一些可行的实施例中,可以只有一个输出接口,也可以有多个输出接口。
总线204可以是外设部件互连标准(Peripheral Component InterconnectExpress,PCIe)总线,或者扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。总线204可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本实施例中,处理器202可以包括矩阵计算装置,该矩阵计算装置可以是ASIC、FPGA或者逻辑电路等,当然该装置也可以通过软件实现,本申请实施例对此不作具体限制。该矩阵计算装置可以用于计算人工智能、科学计算、图形计算等涉及的矩阵计算。
进一步的,该处理器202还可以包括CPU、GPU或NPU等其他处理单元中的一个或者多个。如图3所示,以该处理器202包括CPU 1和矩阵计算装置2为例,矩阵计算装置2可以与CPU 1集成在一起(比如,矩阵计算装置2集成在CPU 1所在的SoC的内部),也可以与CPU 1并列单独设置(比如,矩阵计算装置2以PCIe卡的形式设置)。具体如图3中的(a)和图3中的(b)所示。进一步的,该CPU 1中还可以包括控制器(controller)11、一个或者多个算术逻辑单元(arithmetic logic unit,ALU)12、缓存器(cache)13和内存管理单元(memorymanagement unit,MMU)14等。图3中以存储器201为动态随机存储器DRAM为例进行说明。
本申请实施例中,矩阵计算装置能够对压缩格式的矩阵进行计算,矩阵计算装置在计算两个压缩格式的矩阵乘法时,首先获取由其中一个矩阵转换的N个第一列向量,该第一列向量会包含第一元素值及第一元素值的行坐标,获取由另一个矩阵转换的N个第一行向量,该第一行向量中会包含第二元素值及第二元素值的列坐标。矩阵计算装置计算N个第一列向量和N个第一行向量的向量外积,从而得到N个中间结果矩阵,中间结果矩阵中会包括元素值及元素值对应的位置坐标,位置坐标包括第一元素值的行坐标和所述第二元素值的列坐标。矩阵计算装置能够根据位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,然后得到结果矩阵。本申请实施例中,矩阵计算装置基于向量外积对第一矩阵和第二矩阵进行计算,在计算的过程中,保留第一列向量中元素值的行坐标,保留第二列向量中元素值的列坐标,然后基于位置坐标的索引,将位置坐标相同的第三元素值进行累加,从而得到两个压缩格式的矩阵进行计算的结果矩阵,相对于传统的需要将压缩格式的矩阵先解压缩,然后对解压缩后的矩阵进行矩阵计算的方法,本申请实施例中提供的矩阵计算装置能够有效提升压缩格式的矩阵的计算效能。
本申请实施例提供了一种矩阵计算装置。请参阅图4A所示,该矩阵计算装置包括向量外积处理引擎401和累加器402。可选地,矩阵计算装置包括第一缓存器403,向量外积处理引擎401、累加器402和第一缓存器403依次连接。第一缓存器403可以是矩阵计算装置内的第一缓存器403(如寄存器),或者,第一缓存器403也可以是图3中示出的中央处理单元1中的缓存器13。可选地,矩阵计算装置还包括格式转换单元405和第二缓存器406。格式转换单元405的功能可以通过上述图3中的中央处理单元1实现,或者,格式转换单元405的功能可以由矩阵计算装置内的逻辑电路实现。第二缓存器406可以是矩阵计算装置内的寄存器,或者,第二缓存器406可以是图3中示出的中央处理单元1中的缓存器13。
格式转换单元405,用于将压缩格式的第一矩阵转换为N个第一列向量,将压缩格式的第二矩阵转换为N个第一行向量,第一列向量包括第一元素值及第一元素值的行坐标,第一行向量包括第二元素值及第二元素值的列坐标。
可选地,下面对向量外积处理引擎401的结构进行说明。请参阅图4B所示,图4B为向量外积处理引擎401的结构示意图。向量外积处理引擎401多个处理单元(processingelement,PE)4011,多个PE 4011为一个二维阵列,每个PE4011包括乘积累加(multiplyaccumulate,MAC)运算子单元40110和坐标合并子单元40111。每个PE接收两组输入数据并输出一组数据。每组输入数据包含一个数值(value)与一个坐标(index)。一组输入数据包含第一元素值及第一元素值对应的行坐标,另一组输入数据包括第二元素值及第二元素值对应的列坐标。
每个PE具有两个作用,其中一个作用为,每个PE4011接收两组输入数据,根据该组输入数据输出一组输出数据。输出数据包括第三元素值及第三元素值的位置坐标,其中第三元素值是对第一元素值和第二元素值进行乘法运算得到的。位置坐标是对第一行坐标和第一列坐标进行合并后得到的。例如,以PE阵列中第0行第0列的PE为例,一组输入数据为第一行向量中的第一元素值(如a0)及第一元素值对应的行坐标(如i0)。另一组输入数据为第一列向量中的第二元素值(如b0)及第二元素值对应的列坐标(如j0)。MAC运算子单元40110用于接收第一元素值和第二元素值,对第一元素值和第二元素值进行乘法计算,然后输出第一元素值与第二元素值的乘积(即第三元素值)。坐标合并子单元40111用于接收第一元素值的行坐标和第二元素值的列坐标,对该行坐标和列坐标进行合并,得到位置坐标。一个PE输出的数据包括第三坐标值和该第三坐标值对应的位置坐标。
PE的另一个作用为,一个PE需要向行方向上的下一个PE传输第一元素值及该第一元素值对应的列坐标,并且该PE需要向列方向上的下一个PE传输第二元素值及该第二元素值对应的行坐标。例如,在第一个时钟周期后,PE阵列中的第一个PE(即第0行第0列的PE)将a0和i0传往行方向上的下一个PE(如第0行第1列的PE),并将与b0和j0传往列方向上的下一个PE(即第1行第0列的PE)。可选地,每个PE的数据传输方式可以是,依每个时钟周期往下一级的PE传输数据,或者,在一个时钟周期内,第一个PE将a0和i0传往行方向上的下一个PE(即第0行第1列的PE),直到传输到该行(即第0行)中的最后一个PE,及将b0和j0传输到该列(第0列)中的最后一个PE。本示例中,每个时钟单元内PE传递的级数可依实际需求设计,具体的并不限定。
可选地,下面对PE中的MAC运算子单元的结构进行说明。请参阅图4C所示,图4C为MAC运算子单元的结构示意图。每个PE中的MAC运算子单元包括符号子单元40112,指数子单元40113,整数子单元40114和精度格式转换子单元40115。符号子单元40112,指数子单元40113和整数子单元40114均与精度格式转换子单元40115连接。其中,符号子单元40112用于处理输入数值的正负号。指数子单元40113用于处理两个浮点数相乘时的小数点位移计算。整数子单元40114用于计算两个整数的相乘计算。精度格式转换子单元40115用于输出一个符合规范的数值格式(如FP16、FP32、FP64等浮点数格式或如int32、int16、int8等整数格式)。本示例中的,MAC运算子单元为支持浮点数格式和整数格式的通用单元,增强了矩阵计算装置的适用性。
可选地,下面对矩阵计算装置中的累加器402的结构进行说明。请参阅图4D所示,图4D为累加器402的结构示意图。累加器402包括多个累加(Accumulator,ACC)处理单元4021,即累加器402包括有多个ACC处理单元4021组成的ACC处理单元阵列。每个ACC处理单元4021接收向量外积处理引擎401输出的一组数据,该组数据包括一个第三元素值及该第三元素值对应的位置坐标。每个ACC处理单元4021包括一个加法器40210和一个数据获取子单元40211。其中,数据获取子单元40211用于接收位置坐标,并将该位置坐标输出至第一缓存器403,从而使得加法器40210从第一缓存器403中获取该位置坐标对应的缓存值。加法器40210用于将第一缓存器403输出的缓存值与该第三元素值累加。例如,一个ACC处理单元4021接收向量外积处理引擎401输出的中间结果矩阵C0中的一个“第三元素值0”(如c00)和该c00对应的位置坐标(如i0,j0),ACC处理单元4021先将该“第三元素值0”按照位置坐标(如1,1)写入第一缓存器403,然后,该ACC处理单元4021接收向量外积处理引擎401输出的中间结果矩阵C1中的“第三元素值1”(如c10)及该c10对应的位置坐标(如1,1)时,ACC处理单元4021接收第一缓存器403输出的该位置坐标对应的缓存值(如c00),然后,加法器40210用于将c00和c10相加,并将c00和c10的累加值输出到第一缓存器403。
可选地,请参阅图4E所示,加法器40210还具体包括符号单元40215、指数单元40216、整数单元40217和精度格式转换单元40218。符号单元40215、指数单元40216、整数单元40217均和精度格式转换单元40218连接。其中,符号单元40215用于处理输入数值的正负号。指数单元40216用于处理两个浮点数相乘时的小数点位移计算。整数单元40217用于计算两个整数的乘法运算。精度格式转换单元40218用于输出一个符合规范的数值格式(如FP16、FP32、FP64等浮点数格式或如int32、int16、int8等整数格式)。本示例中的,加法器40210为支持浮点数格式和整数格式的通用单元,增强了矩阵计算装置的适用性。
下面对格式转换单元405的具体作用进行说明。格式转换单元405,用于将压缩格式的第一矩阵转换为N个第一列向量,将压缩格式的第二矩阵转换为N个第一行向量,第一列向量包括第一元素值及第一元素值的行坐标,第一行向量包括第二元素值及第二元素值的列坐标。第一矩阵的维度为M×N,第二矩阵的维度为N×K,其中,M、N、K为大于或者等于1的整数。
参阅图5A所示,为了方便说明,本示例中,M、N、K均以4为例进行说明,即第一矩阵和第二矩阵的维度均为4×4。第一矩阵以矩阵A为例,第二矩阵以矩阵B为例进行说明。第一矩阵和第二矩阵的压缩格式以COO为例进行说明。
格式转换单元405,用于将矩阵A按照列进行拆分,将矩阵A拆分成4个第一列向量,该4个第一列向量分别为A0,A1,A2和A3。格式转换单元405将矩阵B按照行进行拆分,将矩阵B拆分成4个第一行向量,该4个第一行向量分别为B0,B1,B2和B3。示例性的,第一列向量以A0为例进行说明,A0为[a0,a1,a2,a3]T,其中,A0中的a0,a1,a2,a3均为元素值。每个元素值具有对应的行坐标。例如,a0的行坐标为i0,a1的行坐标为i1,a2的行坐标为i2,a3的行坐标为i3。第一行向量以B0为例进行说明。B0为[b0,b1,b2,b3],其中,B0中的b0,b1,b2,b3均为元素值。B0中的每个元素值都具有对应的列坐标。例如,b0的列坐标为j0,b1的列坐标为j1,b2的列坐标为j2,b3的列坐标为j3。应理解,矩阵A是按照N个列进行拆分的,拆分后的第一列向量中每个元素值只保留元素值的行坐标即可。而矩阵B是按照N个行进行拆分的,拆分后的第一行向量中的每个元素值只保留元素值的列坐标即可。同理,A1为[c0,c1,c2,c3]T,其中,A1中的c0,c1,c2,c3均为元素值。每个元素值具有对应的行坐标。例如,c0的行坐标为k0,c1的行坐标为k1,c2的行坐标为k2,c3的行坐标为k3。B1为[d0,d1,d2,d3],其中,B1中的d0,d1,d2,d3均为元素值。B1中的每个元素值都具有对应的列坐标。例如,d0的列坐标为l0,d1的列坐标为l1,d2的列坐标为l2,d3的列坐标为l3
举例来说,压缩格式的第一矩阵以COO格式表示为:(0,0,1),(1,0,2),(1,1,3),(1,2,4),(2,0,5),(2,2,6),(2,3,7),(3,1,8),(3,3,9),(3,0,6)。格式转换单元405将压缩格式的第一矩阵按照列进行拆分,其中,(0,0,1),(1,0,2),(2,0,5)和(3,0,6)中的元素值是同一列的元素值,即都是第0列的元素值。应理解,格式转换单元405在对矩阵A按照列进行拆分时,将元素值“1”,“2”,“5”和“6”作为A0向量中的元素值,元素值“1”,“2”,“5”和“6”都是同一列中的元素值,那么仅保留各元素值的行坐标即可。在这个例子中,向量A0包括4个元素值,该4个元素值分别为“1”,“2”,“5”和“6”,且元素值“1”的行坐标为“0”,同理,元素值“2”的行坐标为“1”,元素值“5”的行坐标为“2”,元素值“6”的行坐标为“3”。
再如,压缩格式的第二矩阵以COO格式表示为:(0,0,1),(1,0,2),(2,1,3),(1,2,4),(2,0,5),(2,2,6),(2,3,7),(3,1,8),(3,3,9),(3,0,6)。格式转换单元405将第二矩阵按照行坐标进行拆分,即将相同行的元素值作为同一个向量内的元素值。例如,(2,1,3),(2,0,5),(2,2,6)和(2,3,7)这4个三元组中的行坐标相同,那么将这4个三元组中的元素值拆分到一个行向量(如行向量B0)中,元素值“3”、“5”、“6”和“7”作为第一行向量B0中的元素值,且第一行向量B0中的每个元素值具有对应的列坐标。如元素值“3”的列坐标为“1”,元素值“5”的列坐标为“0”,元素值“6”的列坐标为“2”,元素值“7”的列坐标为“3”。需要说明的是,上述对于COO格式中的具体数值仅是为了方便说明而举的例子,并不造成对本申请的限定性说明。
向量外积处理引擎401用于计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,中间结果矩阵包括第三元素值及第三元素值的位置坐标,位置坐标包括第一元素值的行坐标和第二元素值的列坐标。示例性的,请参阅图5B所示,向量外积处理引擎401计算第一列向量和第一行向量的向量外积。例如,向量外积处理引擎401计算A0和B0的向量外积,得到一个中间结果矩阵C0。同理,向量外积处理引擎401计算A1和B1的向量外积,得到一个中间结果矩阵C1。向量外积处理引擎401计算A2和B2的向量外积,得到一个中间结果矩阵C2。向量外积处理引擎401计算A3和B3的向量外积,得到一个中间结果矩阵C3。向量外积处理引擎401计算的中间结果矩阵以C0为例,如下式(11)所示。
Figure BDA0002942100860000141
中间结果矩阵C0中包括第三元素值,每个第三元素值具有对应的位置坐标。该位置坐标是第一元素值的行坐标和第二元素值的列坐标的结合并值。例如,请参阅图5C所示,a0的行坐标为i0,而b0的列坐标为j0,则第三元素值a0b0的位置坐标为(i0,j0)。同理,a0的行坐标为i0,而b1的列坐标为j1,则第三元素值a0b1的位置坐标为(i0,j1)。a1的行坐标为i1,而b0的列坐标为j0,则第三元素值a1b0的位置坐标为(i1,j0)等。中间结果矩阵C0中的第三元素值的位置坐标不一一举例说明。
举例来说,a0为1,a1为2,a2为5,a3为6。且a0的行坐标为“0”,同理,a1的行坐标为“1”,a2的行坐标为“2”,a3的行坐标为“3”。b0为3,b1为5,b2为6,b3为7。b0的列坐标为“1”,b1的列坐标为“0”,b2的列坐标为“2”,b3的列坐标为“3”。第三元素值a0b0=1×3=3,a0b0的位置坐标包括a0的行坐标和b0的列坐标,即a0b0的位置坐标为(0,3)。第三元素值a0b1=1×5=5,a0b1的位置坐标包括a0的行坐标和b1的列坐标,即a0b1的位置坐标为(0,0)。第三元素值a1b0=2×3=6,a1b0的位置坐标包括a1的行坐标和b0的列坐标,即a1b0的位置坐标为(1,3)。
请参阅图5D所示,向量外积处理引擎401根据上述式(7)中的向量外积计算公式,得到中间结果矩阵。向量外积处理引擎401计算的中间结果矩阵以C1为例,如下式(12)所示。
Figure BDA0002942100860000151
同理,中间结果矩阵C1中包括第三元素值,C1中每个第三元素值具有对应的位置坐标。例如,请参阅图5D所示,c0的行坐标为k0,而d0的列坐标为l0,则第三元素值c0d0的位置坐标为(k0,l0)。同理,c0的行坐标为k0,而d1的列坐标为l1,则第三元素值c0d1的位置坐标为(k0,l1)。c1的行坐标为k1,而d0的列坐标为l0,则第三元素值c1d0的位置坐标为(k1,l0)等。中间结果矩阵C1中的第三元素值的位置坐标不一一举例说明。
累加器402,用于根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。请再次参阅图5B所示,本示例中,中间结果矩阵的数量以4个为例进行说明。中间结果矩阵C0,C1,C2和C3中每个中间结果矩阵中的第三元素值都具有位置坐标,累加器402将位置坐标相同的第三元素值进行累加,得到结果矩阵。例如,请参阅图5E所示,累加器402将C0,C1,C2和C3中位置坐标为(0,0)的4个第三元素值相加,得到结果矩阵中的一个第四元素值。同理,累加器402将C0,C1,C2和C3中位置坐标为(1,1)的4个第三元素值相加,得到结果矩阵中的一个第四元素值等。本示例中,矩阵位置坐标的具体数值仅是为了方便说明而举的例子,并非限定。
可选地,累加器402根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加的实现方式至少包括以下两种实现方式。
第一种可以实现的方式中,向量外积处理引擎401在对第一行向量和第一列向量进行向量外积计算时,会按照一定顺序产生中间结果矩阵。例如,以上述图5B中示出的第一行向量和第一列向量计算向量外积为例。向量外积处理引擎401计算A0和B0的向量外积,得到一个中间结果矩阵C0。然后,向量外积处理引擎401计算A1和B1的向量外积,得到一个中间结果矩阵C1。再后,向量外积处理引擎401计算A2和B2的向量外积,得到一个中间结果矩阵C2。最后,向量外积处理引擎401计算A3和B3的向量外积,得到一个中间结果矩阵C3。例如,4个中间结果矩阵的顺序为C0,C1,C2,C3。累加器402按照4个中间结果矩阵的产生顺序,从向量外积处理引擎401接收4个中间结果矩阵。
请参阅图6所示,4个中间结果矩阵至少包括第一中间结果矩阵(如C0)和第二中间结果矩阵(如C1)。为了区分第一中间结果矩阵中的位置坐标和第二中间结果矩阵中的位置坐标,将第一中间结果矩阵中第三元素值的位置坐标称为“第一位置坐标”,将第二结果矩阵中第三元素值的位置坐标称为“第二位置坐标”。
示例性的,在第一缓存器403中,通过行坐标标识和纵坐标标识来将第一缓存器403划分为多个存储位置。例如,在第一缓存器403中,通过p个行q个列将第一缓存器403的存储空间划分为q×p个存储位置。累加器402接收到C0后,将C0中第三元素值按照第一位置坐标写入第一缓存器403中的对应位置。例如,C0中第三元素值a0b0的位置坐标(i0,j0),如(i0,j0)为(1,1),那么累加器402按照位置坐标(i0,j0)将a0b0写入第一缓存器403中的第1行第1列的位置。同理,C0中第三元素值a0b1的位置坐标(i0,j1),如(i0,j1)为(1,2),累加器402按照位置坐标(i0,j1)将a0b1写入第一缓存器403中的第1行第2列的位置。C0中第三元素值a0b2的位置坐标(i0,j2),如(i0,j2)为(1,3),累加器402按照位置坐标(i0,j2)将a0b2写入第一缓存器403中的第1行第3列的位置。C0中第三元素值a0b3的位置坐标(i0,j3),如(i0,j3)为(1,4),累加器402按照位置坐标(i0,j3)将a0b3写入第一缓存器403中的第1行第4列的位置。累加器402将C0中的其他第三元素值写入第一缓存器403的过程不一一赘述说明。最终的结果是,累加器402将C0中的所有第三元素值按照每个第三元素值对应的第一位置坐标将第三元素值写入第一缓存器403。
然后,当累加器402接收到C1时,累加器402按照C1中第三元素值的第二位置坐标查找第一缓存器403中第二位置坐标的对应位置是否有缓存值,若第二位置坐标的对应位置没有缓存值,累加器402将第三元素值写入第一缓存器403中的第二位置坐标的对应位置。若第二位置坐标的对应位置有缓存值,则累加器402从第一缓存器403中读取该缓存值,将该缓存值与该C1中第三元素值进行累加。举例说明,C1中的第三元素值c0d0的位置坐标(k0,l0),如(k0,l0)为(1,0),累加器402按照位置坐标(k0,l0)查询第一缓存器403,如果在第一缓存器403中的第1行第0列的位置没有缓存值,那么累加器402将c0d0写入到第一缓存器403中的第1行第0列的位置。C1中的第三元素值c0d1的位置坐标(k0,l1),如(k0,l1)为(1,1),累加器402查询第一缓存器403中第1行第1列的位置有缓存值a0b0,累加器402读取a0b0,并将c0d1和a0b0进行相加,然后将相加后的结果(c0d1+a0b0)按照c0d1的位置坐标再写入第一缓存器403的对应位置(第1行第1列)。同理,C1中的第三元素值c0d2的位置坐标(k0,l2),如(k0,l2)为(1,2),累加器402查询第一缓存器403中第1行第2列的位置有缓存值a0b1,累加器402从第一缓存器403读取该缓存值a0b1,并将c0d2和a0b1相加,然后将相加后的累加值(c0d2+a0b1)按照c0d2的位置坐标再写入第一缓存器403的对应位置(第1行第2列)。本示例中,对于C1中的第三元素值不一一举例说明。最终的结果是,累加器402将C1和C0中位置坐标相同的第三元素值相加,相加后的结果按照该位置坐标写入第一缓存器403中的对应位置。同理,当累加器402接收到向量外积处理引擎401传输的中间结果矩阵C2时,累加器402按照C2中的每个第三元素值的位置坐标从第一缓存器403的对应位置读取缓存值(C0和C1中位置坐标相同的第三元素值的累加值),累加器402将C0、C1和C2中位置坐标相同的第三元素值的累加,然后将累加后的结果再写入第一缓存器403中位置坐标的对应位置。应理解,累加器402对C2和C3的处理过程,与对C1的处理过程类似,此处不一一赘述。累加器402最终的处理结果是,将C0,C1,C2和C3中位置坐标相同的第三元素值进行累加,得到第五元素值,结果矩阵包括多个第五元素值。最后,第一缓存器403输出该结果矩阵。
需要说明的是,第五元素值是C0,C1,C2和C3中至少一个中间结果矩阵中的第三元素值的累加值。举例来说,请再次参阅图6所示,C0中的a0b0的位置坐标是(1,0),而在其他三个中间结果矩阵(C1、C2和C3)中所有第三元素值的位置坐标都没有(1,0),那么在第一缓存器403第1行第0列的位置上写入的值就是a0b0,该a0b0不会和其他中间结果矩阵中的第三元素值进行累加。同理,C0中的a0b1和C1中的c0d1的位置坐标都是(1,1),而在其他两个中间结果矩阵(C2和C3)中的第三元素值的位置坐标都没有(1,1),那么在第一缓存器403第1行第0列的位置上写入的值就是a0b1和c0d1的累加值。综上,应理解,一个第五元素值可能是一个第三元素值,也可能是两个第三元素值的累加值,也可能是三个第三元素值的累加值,也可能是四个第三元素值的累加值等。在实际运算中,结果矩阵中某一个第五元素值是由几个第三元素值累加得到的,由相同的位置坐标下对应的第三元素值的个数确定,具体的并不限定。
进一步的,第五元素值是第三元素值的累加值,那么,第五元素值可能为零元素值。本示例中,结果矩阵为非压缩格式的矩阵。可选地,为了节省传输资源或便于下一步计算操作,矩阵计算装置可以将结果矩阵进行压缩,以输出压缩格式的矩阵。请参阅图7所示,图7为矩阵计算装置的另一个结构示意图。矩阵计算装置和矩阵压缩单元404,矩阵压缩单元404与第一缓存器403连接,第一缓存器403输出结果矩阵,矩阵压缩单元404接收结果矩阵,按照第一缓存器403中的行坐标标识和列坐标标识将结果矩阵转换成压缩格式的矩阵。结果矩阵可以为COO格式,CSR或CSC格式等,具体的并不限定。
应理解,累加器402在进行累加计算的过程中,第一缓存器403用于存储第三元素值及将第三元素值进行累加之后的结果。该第一缓存器403的存储空间需要大于或者等于某一个数值。例如,若每个中间结果矩阵的维度为M×P,也即每个中间结果矩阵包括M×P个第三元素值。第一缓存器403包括的缓存位置的数量大于或者等于M×P。那么该第一缓存器403的存储空间需要至少能够存储M×P个数值。
在第一种可能实现的方式中,矩阵计算装置可以根据不同的应用场景输出非压缩格式的矩阵或者输出压缩格式的矩阵,增加了矩阵计算装置的适用场景。
在第二种可能实现的方式中,请参阅图8所示,累加器402将N个中间结果矩阵中第三元素值按照第三元素值的位置坐标进行排序,然后将排序后的N个中间结果矩阵中的位置坐标进行比对,将位置坐标相同的第三元素值相加,并删除零元素值的位置坐标,得到压缩格式的结果矩阵。例如,当累加器402接收到C0时,累加器402先将C0中的第三元素值按照第三元素值的位置坐标进行排序后写入第一缓存器403内,累加器402可以按照第三元素值的行坐标进行排序,可选地,累加器402可以按照第三元素值的列坐标进行排序。本示例中,以累加器402按照第三元素值的行坐标排序为例进行说明。累加器402接收到C1,将C1中的第三元素值按照第三元素值的行坐标进行排序。累加器402按照C1中第三元素值的位置坐标的顺序将C1中第三元素值的位置坐标与C0中的第三元素值的位置坐标进行比对。例如,累加器402首先比对行坐标,如比对k0与i0,若k0与i0一致,则继续比对列坐标。若k0与i0不一致,累加器402继续将k0与i1比对。累加器402比对完行坐标后,按照位置坐标的顺序比对列坐标l0与j0,l0与j1等,当位置坐标(k0,l0)与位置坐标(i0,j1)一致时,累加器402将位置坐标(k0,l0)对应的第三元素值c0d0和位置坐标(i0,j1)对应的第三元素值a0b0相加,然后将相加之后的结果写入第一缓存器403。
同理,当累加器402接收到C2时,累加器402将C2中的第三元素值按照位置坐标进行排序,累加器402读取第一缓存器403中的位置坐标,然后将C2中的第三元素值的位置坐标与第一缓存器403中的位置坐标进行比对,将位置坐标相同的第三元素值和缓存值相加,得到累加值,然后将累加值存储到第一缓存器403。累加器402对C3中第三元素值的计算与对C2中的第三元素值的计算相似,此处不赘述举例说明。最终的结果是,累加器402将中间结果矩阵C3,C2,C1和C0中位置坐标相同的第三元素值累加,得到第五元素值,并且累加器402删除多个第五元素值中的零元素值及零元素值的位置坐标。第一缓存器403输出结果矩阵,该结果矩阵包含第五元素值及第五元素值的位置坐标。且结果矩阵中包括的第五元素值为非零元素值,由此,第一缓存器403输出的结果矩阵为压缩格式的矩阵。
在第二种实现方式中,可以直接得到压缩格式的矩阵,矩阵计算装置输出的压缩格式的矩阵可以应用于某些后续计算需要压缩格式的矩阵的应用场景。且由于矩阵计算装置输出的是压缩格式的矩阵,可以减少后续传输矩阵的传输资源。而且在第二种实现方式中,由于第一缓存器403中缓存的第三元素值是按位置坐标的顺序进行缓存,较少的缓存空间就可以实现本示例中的实现方式,从而节省第一缓存器403的缓存空间。
可选地,本示例中,格式转换单元405,还用于获取第五矩阵和第六矩阵,对非压缩格式的第五矩阵和第六矩阵进行格式转换,得到压缩格式的第一矩阵和第二矩阵。并将第一矩阵和第二矩阵输出至第二缓存器406,其中,第五矩阵和第六矩阵中至少有一个矩阵为非压缩格式的矩阵。向量外积处理引擎401从第二缓存器406获取压缩格式的第一矩阵和第二矩阵。本示例中,矩阵计算装置可以接收非压缩格式的矩阵,然后将非压缩格式的矩阵转换成压缩格式的矩阵,从而使得矩阵计算装置可以支持多种格式的矩阵计算。本示例中,第五矩阵和第六矩阵可以包括如下几种情况。
第一种情况:请参阅图9所示,第五矩阵和第六矩阵均为非压缩格式的矩阵。这种情况中,格式转换单元405将第五矩阵为压缩格式的第一矩阵,将第六矩阵转换为压缩格式的第二矩阵。可选地,格式转换单元405可以将第五矩阵和第六矩阵转换成COO格式的压缩矩阵。可选地,由于CSC压缩格式中保留了元素值的行坐标,而CSR压缩格式中保留了元素值的列坐标,格式转换单元可以将非压缩格式的第五矩阵转换成CSC压缩格式的第一矩阵,而将非压缩格式的第六矩阵转换成CSR压缩格式。进一步的,格式转换单元405将压缩格式的第一矩阵转换为N个第一列向量,将压缩格式的第二矩阵转换为N个第一行向量,并将N个第一列向量和N个第一行向量写入第一缓存器406中,向量外积处理引擎401从第二缓存器406中获取第一行向量和第二行向量。
第二种情况:第五矩阵和第六矩阵中有一个矩阵为非压缩格式的矩阵,而另一个矩阵为压缩格式的矩阵。第五矩阵为非压缩格式的矩阵,第六矩阵为压缩格式的矩阵为例进行说明。若第六矩阵为CSC或CSR格式的压缩矩阵。格式转换单元将第五矩阵和第六矩阵均转换成COO格式的压缩矩阵。
可选地,格式转换单元405,还用于将压缩格式的矩阵转换成目标压缩格式的矩阵。例如,第一矩阵和第二矩阵均为CSC格式或CSR格式时,格式转换单元将第一矩阵和第二矩阵均转换成COO格式。
本示例中,矩阵计算装置通过格式转换单元可以将非压缩格式的矩阵转换为压缩格式的矩阵,从而使矩阵计算装置既可以支持压缩格式的矩阵计算,又可以支持非压缩格式的矩阵计算。可选地,格式转换单元可以将非目标压缩格式的矩阵转换成目标压缩格式(如COO格式)的矩阵。本示例中,矩阵计算装置可以将其他压缩格式的矩阵转换成目标压缩格式的矩阵,对目标压缩格式的矩阵进行矩阵计算,本申请中提供的矩阵计算装置可以支持各种格式的矩阵计算。
可选地,为了提高矩阵计算单元的适用性,可基于低精度的矩阵计算装置实现高精度的矩阵计算。第一列向量和第一行向量中包括的元素值的精度为第一精度。格式转换单元405将第一列向量分解成X个第二列向量,并将第一行向量分解成X个第二行向量,其中,第二列向量和第二行向量包含的第二精度的元素值,第一精度高于第二精度。然后,向量外积处理引擎401计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,第四矩阵包括第四元素值及第四元素值的位置坐标。最后,累加器402根据第四元素值的位置坐标的索引,将X2个第四矩阵中位置坐标相同的第四元素值累加,得到中间结果矩阵,中间结果矩阵中的第三元素值的精度为第一精度。
下面对本示例中将第一精度的向量分解成第二精度的向量进行举例说明。格式转换单元405将压缩格式的第一矩阵转换成N个第一列向量,将压缩格式的第二矩阵转换成N个第一行向量之后,还可以进一步的按照元素值的精度将一个第一列向量分解成X个第二列向量,并将第一行向量分解成X个第二行向量。其中,第一列向量和第一行向量中包括的元素值的精度为第一精度。第二列向量和第二行向量均包含第二精度的元素值。为了方便说明,将包含第二精度的元素值的向量称为“第二精度的向量”,将包含第一精度的元素值的向量称为“第一精度的向量”。X为大于或者等于2的整数。第一精度和第二精度可以为整型精度,或者,第一精度和第二精度也可以是浮点数精度,具体的并不限定。具体的,格式转换单元405将第一精度的向量中的每一个元素值拆分成多个第二精度的数值,将第一精度的向量拆解成X个第二精度的向量。下面按照第一精度的向量和第二精度的向量是整型,及第一精度的向量和第二精度的向量是浮点型向量这种情况进行说明。
第一种情况,第一精度的向量和第二精度的向量是整型。第一精度高于第二精度,例如,第一精度为int32,第二精度可以为int2、int4、int8或int16。或者,第一精度为int16,第二精度可以为int4或int8。或者,第一精度为int8,第二精度为int2或int4。或者,第一精度为int4,第二精度为int2等。
格式转换单元405将一个高精度的整型数值拆分成多个低精度的整型数值,将高精度的整型数值按照从高位到低位的顺序进行拆分。例如,请参阅图10所示,以第一精度为int32,第二精度为int16为例进行说明。int32包括32bit值域,将一个int32中的32位从高位到低位的顺序拆分出2个16bit,即将int32拆分成2个int16。或者,将一个int32中的32位从高位到低位的顺序拆分出4个8bit,即将int32拆分成4个int8。同理,int16包括16bit值域,将一个int16中的16位从高位到低位的顺序拆分出2个8bit,即将int16拆分成2个int8。
第二种情况,第一精度的向量和第二精度的向量是浮点型。例如,第一精度为FP32、FP64,第二精度为FP16。或者,第一精度FP64,第二精度浮点可以为FP32,也可以为FP16。下面以第一精度浮点数为FP32,第二精度浮点数为FP16的情况为例进行说明。
一、将一个FP32进行分解,得到三个FP16。
目前,标准格式的FP32的组成如上表1所示,FP32包括1bit(比特)符号,8bit阶码和23bit尾数。另外,还有省略的1bit整数,省略的整数为1。对于一个标准格式的FP32,其整数加上尾数,共24bit。标准格式的FP16的组成包括1bit符号,5bit阶码和10bit尾数,另外,还有省略的1bit整数,省略的整数为1。对于一个标准格式的FP16整数加上尾数,共11bit。如果要将一个标准格式的FP32分解,得到标准格式的FP16,需要3个标准格式的FP16。
将标准格式的FP32的整数和尾数可以分为三部分,第一部分为整数和前10bit的尾数,第二部分为第11bit到第21bit的尾数,第三部分为第22bit和第23bit的尾数。将这三分部分别由一个标准格式的FP16表示。此处需要说明的是,对于上述第三部分第22bit和第23bit的尾数由标准格式的FP16表示时,可以先在第23bit的尾数后补9个0,即将第22bit和第23bit的尾数,以及补的0,由一个标准格式的FP16表示。
另外,FP16的阶码范围为-15到15,即可以表示小数点左移15位到右移15位。使用标准格式的FP16表示上述FP32的第一部分时,固定阶码位移值为0;使用标准格式的FP16表示上述FP32的第二部分时,固定阶码位移值为-11;使用标准格式的FP16表示上述FP32的第三部分时,固定阶码位移值为-22。可见,在表示第三部分时,仅对应的固定阶码位移值就已经超出了FP16的阶码范围。因此,可以对每个标准格式的FP16的阶码提取出对应的固定阶码位移值。
那么,对于一个标准格式的FP32,可以表示为:
Figure BDA0002942100860000201
其中,A1为标准格式的FP32,EA1为A1的阶码,a0、a1和a2为分解得到的三个标准格式的FP16,S1为最小的固定阶码位移值,对于该标准格式的FP16来说,S1=11。
除此之外,对于每个标准格式的FP16的阶码可以提取出一个公共阶码位移值。那么,同样对于一个标准格式的FP32,可以表示为:
Figure BDA0002942100860000202
其中,a0′、a1′和a2′为分解得到的三个标准格式的FP16。在上述两种表示方法中,分解得到的FP16有如下关系:
Figure BDA0002942100860000203
a1=a1′,
Figure BDA0002942100860000204
二、将一个FP32分解,得到两个FP16。
为了减少分解得到的FP16的个数,对于目前标准格式的FP16可以进行调整,将其尾数调整为13bit,符号和阶码的bit数不变,可以称调整后的FP16为非标准格式的FP16。则该非标准格式的FP16的整数加上尾数,共14bit。那么,如果要将一个标准格式的FP32的尾数使用非标准格式的FP16表示,则只需要2个非标准格式的FP16。
将标准格式的FP32的整数和尾数分为两部分,第一部分为整数和前13bit的尾数,第二部分为第14bit到第23bit。将这两部分分别由非标准格式的FP16表示。
此处还需说明的是,对于上述第二部分由非标准FP16表示时,可以先在第23bit的尾数后补4个0,即将第14bit到第23bit的尾数,以及补的0,由一个非标准格式的FP16表示。与上述情况一相同,此处,也可以对每个标准格式的FP16的阶码提取出对应的固定阶码位移值。
那么,同样对于一个标准格式的FP32,可以表示为:
Figure BDA0002942100860000211
其中,A2为标准格式的FP32,EA2为A2的阶码,a3和a4为分解得到的两个非标准格式的FP16,S2为固定阶码位移值,对于该非标准格式的FP16来说,S2=14。
除此之外,对于每个标准格式的FP16的阶码可以提取出一个公共阶码位移值。那么,同样对于一个标准格式的FP32,可以表示为:
Figure BDA0002942100860000212
其中,a3′和a4′为分解得到的两个非标准格式的FP16。在上述两种表示方法中,分解得到的FP16有如下关系:
Figure BDA0002942100860000213
a4=a4′。
当然,针对第一精度浮点数为FP64,第二精度浮点数为FP32的情况,对于FP64分解得到多个FP32可以有如下情况:将一个FP64浮点数进行分解,得到三个FP32浮点数;或者,将一个FP64浮点数分解,得到两个FP32浮点数。可选地,对于第一精度浮点数为FP64,第二精度浮点数为FP16的情况,对于FP64分解得到多个FP16可以有如下情况:将一个FP64浮点数进行分解,得到五个FP16浮点数;或者,将一个FP64浮点数分解,得到4个FP16浮点数。拆分原理与上述描述的第一精度浮点数为FP32,第二精度浮点数为FP16的情况类似,此处不一一赘述。
示例性的,为了方便说明,以将第一行向量拆分成两个第二行向量,将第一列向量拆分成两个第二列向量为例进行说明。例如,第一行向量A0为一个精度为FP32的列向量[a0,a1,a2,a3]T,如上述将第一精度的数值拆分成两个第二精度的数值的方法,格式转换单元405将精度为FP32的浮点数a0拆分成2个FP16的浮点数(如a0M和a0L)。同理,将a1拆分成a1M和a1L。将a2拆分成a2M和a2L。将a3拆分成a3M和a3L。即请参阅11所示,格式转换单元405将精度为FP32的列向量[a0 a1 a2 a3]T拆分为两个精度为FP16的列向量[a0M a1M a2M a3M]T(记做“第二列向量1”)与[a0L a1L a2L a3L]T(记做“第二列向量2”)。同理,B0是一个精度FP32的行向量[b0b1 b2 b3],将[b0 b1 b2 b3]也拆分为两个FP16的行向量[b0M b1M b2M b3M](记做“第二行向量1”)与[b0L b1L b2L b3L](记做“第二行向量2”)。需要说明的是,第一列向量和第二列向量中每个元素值的行坐标相同,即a0M和a0L的行坐标为i0,a1M和a1L的行坐标为i1,a2M和a2L的行坐标为i2。a3M和a3L的行坐标为i3。第一行向量和第二行向量中每个元素值的列坐标相同,即b0M和b0L的列坐标为j0,b1M和b1L的列坐标为j1,b2M和b2L的列坐标为j2,b3M和b3L的列坐标为j3
进一步的,向量外积处理引擎401计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,第四矩阵包括第四元素值及第四元素值的位置坐标,第四元素值的位置坐标包括第一列向量中元素值的行坐标和第一行向量中元素值的列坐标,第四元素值的精度为第一精度(如FP32)。本示例中,请参阅图12所示,X以2为例进行说明。向量外积处理引擎401计算[a0M a1M a2M a3M]T和[a0L a1L a2L a3L]T这两个第二列向量与[b0M b1M b2M b3M]和[b0L b1L b2L b3L]这两个第二行向量的向量外积。即向量外积处理引擎401计算[a0M a1Ma2M a3M]T和[b0M b1M b2M b3M]的向量外积,得到第四矩阵1;计算[a0M a1M a2M a3M]T和[b0L b1Lb2L b3L]的向量外积,得到第四矩阵2;计算[a0L a1L a2L a3L]T和[b0M b1M b2M b3M]的向量外积,得到第四矩阵3;[a0L a1L a2L a3L]T和[b0L b1L b2L b3L]的向量外积,得到第四矩阵4。向量外积处理引擎401通过向量外积计算得到4个第四矩阵。累加器402获取这4个第四矩阵,并根据第四元素值的位置坐标的索引,将4个第四矩阵中位置坐标相同的第四元素值累加,得到一个中间结果矩阵,中间结果矩阵中的第三元素值的精度为第一精度。例如,第四矩阵1中的第四元素值a0Mb0L、第四矩阵2中的第四元素值a0Mb1M、第四矩阵3中的第四元素值a1Lb0L,第四矩阵4中的第四元素值a1Lb1M的位置坐标相同,累加器402将a0Mb0L、a0Mb1M、a1Lb0L和a1Lb1M这4个第四元素值累加,得到的累加值为中间结果矩阵C0中的一个第三元素值。本示例中,将X2个第四矩阵中位置坐标相同的第四元素值累加的具体方法与参阅图6和图8对应的示例中累加器402进行累加的方法相似,具体请参阅上述对图5E,图6和图8对应的示例中累加器402执行的方法,此处不赘述。本示例中,在计算两个向量的向量外积时,可以进一步的将第一精度(高精度)的向量拆分成多个第二精度(低精度)的向量,然后对低精度的向量进行向量外积计算,从而使得第一精度的向量的外积可由多个第二精度的向量的外积结果做累积而得,且精度不会损失。
本示例中,若第一行向量和第一列向量中的元素值的精度较大,矩阵计算装置可以将第一行向量和第一列向量均拆解为多个低精度的向量。矩阵计算装置对低精度的第二列向量和第二行向量进行向量外积计算,以得到结果矩阵,既能够对压缩格式的矩阵进行计算,而且能够基于低精度的矩阵计算装置实现高精度的矩阵计算,提高了矩阵计算装置的适用性。并且,在矩阵计算过程中,基于矩阵计算装置的上层软件应用(如AI和HPC)不感知矩阵计算的具体过程,从而可以极大地降低软件适配的成本。
基于本申请中提供的矩阵计算装置,能在多个矩阵计算场景得到极大的收益,如将矩阵计算装置使用在AI训练与推理场景中,可完整支持压缩格式的矩阵和非压缩格式的矩阵计算,针对AI计算中的权重与特征数据的稀疏特性平均达50%以上(即50%以上为压缩格式的矩阵),本申请中的矩阵计算格式可以直接对压缩格式的矩阵进行计算,不需要对压缩格式的矩阵进行解压缩超出,这样计算效能可提高4倍以上。另针对科学计算等HPC场景,不论是高算力要求的非压缩格式的矩阵计算或内存带宽受限的矩阵计算场景中,使用本申请中的矩阵计算装置能直接从内存存取压缩格式的矩阵,提升计算收益。矩阵计算装置支持全精度数值计算,也能有效的覆盖各种不同精度需求的计算,如AI训练场景常需要FP32和FP16等浮点数计算,又如一些需要FP64的AI训练景与HPC科学计算等场景,矩阵计算装置都能完整支持。并且,矩阵计算装置中的MAC也能支持中低精度如INT1、INT2、INT4、INT8等整数格式计算,针对AI推理的计算场景,能提升算力与并减少推理计算时间,也能提供混合各种不同精度于推理计算的场景中,极大的增强了矩阵计算装置的适用性。
上面对一种矩阵计算装置的实施例进行了说明,下面对矩阵计算装置所执行的方法进行说明。请参阅图13所示,本申请实施例提供了一种矩阵计算的方法,该方法的执行主体可以是图2所示的计算设备,可选地,该方法的执行主体是图3中所示出的矩阵计算装置,可选的,该方法的执行主体可以是图4A所示的矩阵计算装置,可选地,该方法的执行主体可以是图7所示的矩阵计算装置。
步骤1301、获取第一计算指令,第一计算指令包括N个第一列向量和N个第一行向量。N个第一列向量是由压缩格式的第一矩阵转换得到的,N个第一行向量是由压缩格式的第二矩阵转换得到的,N为大于或者等于1的整数。
步骤1302、计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,其中,第一列向量包括第一元素值及第一元素值的行坐标,第一行向量包括第二元素值及第二元素值的列坐标,中间结果矩阵包括第三元素值及第三元素值的位置坐标,位置坐标包括第一元素值的行坐标和第二元素值的列坐标。
本步骤请参阅上述矩阵计算装置实施例中,请参阅图5B,图5C和图5D对应的示例中,向量外积处理引擎401所执行的功能的具体说明,此处不赘述。
步骤1303、根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。
N个中间结果矩阵至少包括第一中间结果矩阵和第二中间结果矩阵,第一中间结果矩阵中第三元素值的位置坐标为第一位置坐标,第二中间结果矩阵中第三元素值的位置坐标为第二位置坐标。
在第一种可能实现的方式中,矩阵计算装置按照N个中间结果矩阵的产生顺序,将第一中间结果矩阵中第三元素值按照第一位置坐标写入缓存器中的对应位置。然后根据第二中间结果矩阵中第三元素值的第二位置坐标,读取第二位置坐标在缓存器中对应位置的缓存值,将第二中间结果矩阵中第三元素值和缓存值进行累加,得到非压缩格式的结果矩阵。可选地,矩阵计算装置压缩非压缩格式的结果矩阵,得到压缩格式的结果矩阵。
在第一种可能的实现方式中,请参阅上述矩阵计算装置实施例中,图5E和图6对应的示例中,累加器402所执行的功能的具体说明,此处不赘述。
在第二种可能的实现方式中,矩阵计算装置将N个中间结果矩阵中第三元素值按照第三元素值的位置坐标进行排序。矩阵计算装置将排序后的N个中间结果矩阵中的位置坐标进行比对,将位置坐标相同的第三元素值相加,并删除零元素值的位置坐标,得到压缩格式的结果矩阵。
在第二种可能的实现方式中,请参阅上述矩阵计算装置实施例中,图5E和图8对应的示例中,累加器402所执行的功能的具体说明,此处不赘述。
本申请实施例中,矩阵计算装置能够直接对压缩格式的矩阵进行计算,不需要向传统方法那样将压缩格式的矩阵进行解压缩,对解压缩后的矩阵进行矩阵计算,本申请实施例中的矩阵计算装置能够提升压缩格式的矩阵的计算效能。
可选地,请参阅图14所示,为了能够支持支持多种格式的矩阵计算,矩阵计算装置能够将非压缩格式的矩阵转换成压缩格式的矩阵,从而可以对非压缩格式的矩阵进行计算,对非压缩格式的矩阵进行格式转换如下步骤1401和步骤1402所示。
步骤1401、获取第三计算指令,第三计算指令包括第五矩阵和第六矩阵,其中,第五矩阵和第六矩阵中至少有一个矩阵为非压缩格式的矩阵。
步骤1402、对第五矩阵进行格式转换,得到压缩格式的第一矩阵,对第六矩阵进行格式转换,得到第二矩阵。
步骤1401和步骤1402请参阅上述矩阵计算装置的实施例中,图9对应的示例中,格式转换单元405所执行的功能的具体说明,此处不赘述。
本申请实施例中,矩阵计算装置通过格式转换单元可以将非压缩格式的矩阵转换为压缩格式的矩阵,从而使矩阵计算装置既可以支持压缩格式的矩阵计算,又可以支持非压缩格式的矩阵计算。可选地,格式转换单元可以将非目标压缩格式的矩阵转换成目标压缩格式(如COO格式)的矩阵。本示例中,矩阵计算装置可以将其他压缩格式的矩阵转换成目标压缩格式的矩阵,对目标压缩格式的矩阵进行矩阵计算,本申请中提供的矩阵计算装置可以支持各种格式的矩阵计算。
步骤1403、获取第二计算指令,第二计算指令包括第一矩阵和第二矩阵。
步骤1404、将第一矩阵转换成N个第一列向量,将第二矩阵转换成N个第一行向量。
步骤1403和步骤1404请参阅上述矩阵计算装置的实施例中,图5A对应的示例中,格式转换单元405所执行的功能的说明,此处不赘述。
可选地,为了能够提高矩阵计算单元的适用性,可基于低精度的矩阵计算装置实现高精度的矩阵计算。将第一精度的向量拆分成多个第二精度的向量,然后对第二精度的向量进行向量外积计算。请参阅下述步骤1405至步骤1407所示。
步骤1405、将第一列向量拆分为X个第二列向量,将第一行向量拆分为X个第二行向量。第一列向量和第一行向量中包括的元素值的精度为第一精度,第二列向量和第二行向量包含的元素值的精度为第二精度,第一精度高于第二精度,X为大于或者等于2的整数。
本步骤请参阅上述矩阵计算装置的实施例中,图10和图11对应的示例中,格式转换单元405对整型数值进行拆分和格式转换单元405对浮点型数值进行拆分的具体说明,此处不赘述。
步骤1406、计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,第四矩阵包括第四元素值及第四元素值的位置坐标,第四元素值的位置坐标包括第一元素值的行坐标和第二元素值的列坐标,第四元素值的精度为第一精度。
本步骤请参阅上述矩阵计算装置的实施例中,图12对应的示例中,向量外积处理引擎401所执行的功能的说明,此处不赘述。
步骤1407、根据第四元素值的位置坐标的索引,将X2个第四矩阵中位置坐标相同的第四元素值累加,得到中间结果矩阵,中间结果矩阵中的第三元素值的精度为第一精度。
步骤1408、根据第三元素值的位置坐标的索引,将N个中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。
步骤1407和步骤1408请参阅上述矩阵计算装置的实施例中,图5E,图6和图8对应的示例中累加器402执行的功能,此处不赘述。
本申请实施例中,在计算两个向量的向量外积时,可以进一步的将第一精度(高精度)的向量拆分成多个第二精度(低精度)的向量,然后对低精度的向量进行向量外积计算,从而使得第一精度的向量的外积可由多个第二精度的向量的外积结果做累积而得,且精度不会损失。
在本申请的一种实施例中,提供了一种矩阵计算的电路,所述矩阵计算电路用于上述方法实施例中步骤1301-步骤1303中的一个或者多个步骤,或者,用于执行步骤1401-步骤1408中的一个或者多个步骤。在实际应用中,该矩阵计算电路可以是ASIC、FPGA或者逻辑电路等。
在本申请的另一种实施例中,还提供一种矩阵计算系统或者芯片,该系统或者芯片的结构可以如图3所示,包括:处理器(以中央处理器为例)1和矩阵计算装置1。其中,处理器1用于向矩阵计算装置1发送计算指令,矩阵计算装置2用于执行上述方法实施例中的步骤1301-步骤1303中的一个或者多个步骤,或者步骤1401-步骤1408中的一个或者多个步骤。
在本申请的又一种实施例中,提供一种矩阵计算设备,该设备的结构可以如图2所示,该设备具体可以为PCIe卡、SoC、处理器,以及包括上述硬件的服务器等。参见图2,该装置包括:存储器201、处理器202、通信接口203和总线204。其中,通信接口203可以包括输入接口和输出接口。
其中,处理器202可以被配置为执行上述方法实施例中的步骤1301-步骤1303中的一个或者多个步骤,或者步骤1401-步骤1408中的一个或者多个步骤。在一些可行的实施例中,处理器202可以包括矩阵计算单元,该矩阵计算单元可用于支持该处理器执行上述方法实施例中的一个或者多个步骤。在实际应用中,该矩阵计算单元可以是ASIC、FPGA或者逻辑电路等,当然该矩阵计算单元也可以通过软件实现,本申请实施例对此不作具体限制。
需要说的是,本申请实施例提供的上述矩阵计算电路、矩阵计算系统和矩阵计算设备等的各组成部分分别用于实现相对应的前述方法实施例的各步骤的功能,由于在前述的方法实施例中,已经对各步骤进行了详细说明,在此不再赘述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (18)

1.一种矩阵计算装置,其特征在于,包括:向量外积处理引擎和累加器;
所述向量外积处理引擎,用于计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,其中,所述第一列向量包括第一元素值及所述第一元素值的行坐标,所述第一行向量包括第二元素值及第二元素值的列坐标,所述中间结果矩阵包括第三元素值及所述第三元素值的位置坐标,所述位置坐标包括所述第一元素值的行坐标和所述第二元素值的列坐标;所述N个第一列向量是由压缩格式的第一矩阵转换得到的,所述N个第一行向量是由压缩格式的第二矩阵转换得到的,所述N为大于或者等于1的整数;
所述累加器,用于根据所述第三元素值的位置坐标的索引,将N个所述中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。
2.根据权利要求1所述的装置,其特征在于,所述N个所述中间结果矩阵至少包括第一中间结果矩阵和第二中间结果矩阵,所述第一中间结果矩阵中第三元素值的位置坐标为第一位置坐标,所述第二中间结果矩阵中第三元素值的位置坐标为第二位置坐标;
所述累加器还具体用于:
按照N个所述中间结果矩阵的产生顺序,将所述第一中间结果矩阵中第三元素值按照所述第一位置坐标写入缓存器中的对应位置;
根据所述第二中间结果矩阵中第三元素值的第二位置坐标,读取所述第二位置坐标在所述缓存器中对应位置的缓存值,将所述第二中间结果矩阵中第三元素值和所述缓存值进行累加,得到非压缩格式的结果矩阵。
3.根据权利要求2所述的装置,其特征在于,所述装置还包括矩阵压缩单元;
所述矩阵压缩单元,用于压缩所述非压缩格式的结果矩阵,得到压缩格式的结果矩阵。
4.根据权利要求1所述的装置,其特征在于,所述累加器还具体用于:
将所述N个中间结果矩阵中第三元素值按照所述第三元素值的位置坐标进行排序;
将排序后的所述N个中间结果矩阵中的位置坐标进行比对,将位置坐标相同的第三元素值相加,并删除零元素值的位置坐标,得到压缩格式的结果矩阵。
5.根据权利要求1所述的装置,其特征在于,所述装置还包括格式转换单元;
所述格式转换单元,用于获取所述第一矩阵和所述第二矩阵,将所述第一矩阵转换成N个第一列向量,将所述第二矩阵转换成N个第一行向量。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括格式转换单元;
所述格式转换单元,还用于获取第五矩阵和第六矩阵,对所述第五矩阵进行格式转换,得到所述第一矩阵,对所述第六矩阵进行格式转换,得到所述第二矩阵,其中,所述第五矩阵和所述第六矩阵中至少有一个矩阵为非压缩格式的矩阵。
7.根据权利要求1-6中任一项所述的装置,其特征在于,所述第一列向量和所述第一行向量中包括的元素值的精度为第一精度;
所述向量外积处理引擎,还用于计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,所述第四矩阵包括第四元素值及所述第四元素值的位置坐标,所述第四元素值的位置坐标包括所述第一元素值的行坐标和所述第二元素值的列坐标,所述第四元素值的精度为第一精度;其中,所述X个第二列向量是由所述第一列向量拆分后得到的,所述X个第二行向量是由所述第一行向量拆分后得到的,所述第二列向量和所述第二行向量包含的元素值的精度为第二精度,所述第一精度高于所述第二精度,X为大于或者等于2的整数;
所述累加器,还用于根据所述第四元素值的位置坐标的索引,将所述X2个第四矩阵中位置坐标相同的第四元素值累加,得到所述中间结果矩阵,所述中间结果矩阵中的第三元素值的精度为所述第一精度。
8.一种矩阵计算方法,其特征在于,所述方法应用于矩阵计算装置,所述方法包括:
获取第一计算指令,所述第一计算指令包括N个第一列向量和N个第一行向量;
计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,其中,所述第一列向量包括第一元素值及所述第一元素值的行坐标,所述第一行向量包括第二元素值及第二元素值的列坐标,所述中间结果矩阵包括第三元素值及所述第三元素值的位置坐标,所述位置坐标包括所述第一元素值的行坐标和所述第二元素值的列坐标;所述N个第一列向量是由压缩格式的第一矩阵转换得到的,所述N个第一行向量是由压缩格式的第二矩阵转换得到的,所述N为大于或者等于1的整数;
根据所述第三元素值的位置坐标的索引,将N个所述中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵。
9.根据权利要求8所述的方法,其特征在于,所述N个所述中间结果矩阵至少包括第一中间结果矩阵和第二中间结果矩阵,所述第一中间结果矩阵中第三元素值的位置坐标为第一位置坐标,所述第二中间结果矩阵中第三元素值的位置坐标为第二位置坐标;
所述根据所述第三元素值的位置坐标的索引,将N个所述中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵,包括:
按照N个所述中间结果矩阵的产生顺序,将所述第一中间结果矩阵中第三元素值按照所述第一位置坐标写入缓存器中的对应位置;
根据所述第二中间结果矩阵中第三元素值的第二位置坐标,读取所述第二位置坐标在所述缓存器中对应位置的缓存值,将所述第二中间结果矩阵中第三元素值和所述缓存值进行累加,得到非压缩格式的结果矩阵。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
压缩所述非压缩格式的结果矩阵,得到压缩格式的结果矩阵。
11.根据权利要求8所述的方法,其特征在于,所述根据所述第三元素值的位置坐标的索引,将N个所述中间结果矩阵中位置坐标相同的第三元素值进行累加,得到结果矩阵,包括:
将所述N个中间结果矩阵中第三元素值按照所述第三元素值的位置坐标进行排序;
将排序后的所述N个中间结果矩阵中的位置坐标进行比对,将位置坐标相同的第三元素值相加,并删除零元素值的位置坐标,得到压缩格式的结果矩阵。
12.根据权利要求8所述的方法,其特征在于,在所述获取第一计算指令之前,所述方法还包括:
获取第二计算指令,所述第二计算指令包括所述第一矩阵和所述第二矩阵;
将所述第一矩阵转换成N个第一列向量,将所述第二矩阵转换成N个第一行向量。
13.根据权利要求12所述的方法,其特征在于,在所述获取第二计算指令之前,所述方法还包括:
获取第三计算指令,所述第三计算指令包括第五矩阵和第六矩阵,其中,所述第五矩阵和所述第六矩阵中至少有一个矩阵为非压缩格式的矩阵;
对所述第五矩阵进行格式转换,得到压缩格式的所述第一矩阵,对所述第六矩阵进行格式转换,得到所述第二矩阵。
14.根据权利要求8-13中任一项所述的方法,其特征在于,所述第一列向量和所述第一行向量中包括的元素值的精度为第一精度;
所述计算N个第一列向量和N个第一行向量的向量外积,得到N个中间结果矩阵,包括:
计算X个第二列向量和X个第二行向量的向量外积,得到X2个第四矩阵,所述第四矩阵包括第四元素值及所述第四元素值的位置坐标,所述第四元素值的位置坐标包括所述第一元素值的行坐标和所述第二元素值的列坐标,所述第四元素值的精度为第一精度;其中,所述X个第二列向量是由所述第一列向量拆分后得到的,所述X个第二行向量是由所述第一行向量拆分后得到的,所述第二列向量和所述第二行向量包含的元素值的精度为第二精度,所述第一精度高于所述第二精度,X为大于或者等于2的整数;
所述方法还包括:
根据所述第四元素值的位置坐标的索引,将所述X2个第四矩阵中位置坐标相同的第四元素值累加,得到所述中间结果矩阵,所述中间结果矩阵中的第三元素值的精度为所述第一精度。
15.一种矩阵计算的电路,其特征在于,所述矩阵计算电路用于执行如权利要求8-14中任一项所述的方法。
16.一种矩阵计算的系统,其特征在于,所述系统包括处理器和矩阵计算的装置,所述处理器用于向所述矩阵计算的装置发送计算指令,所述矩阵计算的装置用于执行如权利要求8-14中任一项所述的方法。
17.一种芯片,其特征在于,所述芯片包括处理器,所述处理器中集成有矩阵计算装置,所述矩阵计算装置用于执行如权利要求8-14中任一项所述的矩阵计算方法。
18.一种矩阵计算的设备,其特征在于,所述设备包括如权利要求16所述的矩阵计算的系统,或者如权利要求17所述的芯片。
CN202110181498.6A 2020-12-30 2021-02-08 一种矩阵计算装置、方法、系统、电路、芯片及设备 Pending CN114692077A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/CN2021/141000 WO2022143432A1 (zh) 2020-12-30 2021-12-23 一种矩阵计算装置、方法、系统、电路、芯片及设备
EP21914169.4A EP4258135A1 (en) 2020-12-30 2021-12-23 Matrix calculation apparatus, method, system, circuit, chip, and device
US18/343,622 US20230342419A1 (en) 2020-12-30 2023-06-28 Matrix calculation apparatus, method, system, circuit, and device, and chip

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011617575X 2020-12-30
CN202011617575 2020-12-30

Publications (1)

Publication Number Publication Date
CN114692077A true CN114692077A (zh) 2022-07-01

Family

ID=82135944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110181498.6A Pending CN114692077A (zh) 2020-12-30 2021-02-08 一种矩阵计算装置、方法、系统、电路、芯片及设备

Country Status (4)

Country Link
US (1) US20230342419A1 (zh)
EP (1) EP4258135A1 (zh)
CN (1) CN114692077A (zh)
WO (1) WO2022143432A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116129249B (zh) * 2023-04-04 2023-07-07 上海燧原科技有限公司 一种图像处理方法、装置、电子设备和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106183A (zh) * 2013-01-29 2013-05-15 福建天晴数码有限公司 基于mapreduce的大规模稀疏矩阵乘法运算的方法
US10120649B2 (en) * 2016-07-29 2018-11-06 Microunity Systems Engineering, Inc. Processor and method for outer product accumulate operations
US20190278600A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
CN109857744B (zh) * 2019-02-13 2020-03-20 上海燧原智能科技有限公司 稀疏张量计算方法、装置、设备及存储介质

Also Published As

Publication number Publication date
EP4258135A1 (en) 2023-10-11
WO2022143432A1 (zh) 2022-07-07
US20230342419A1 (en) 2023-10-26

Similar Documents

Publication Publication Date Title
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
CN105634499B (zh) 一种基于新短浮点型数据的数据转换方法
US9804823B2 (en) Shift significand of decimal floating point data
US8959129B2 (en) Compression of floating-point data
CN111010883B (zh) 矩阵的处理方法、装置及逻辑电路
US10268380B2 (en) Methods, devices and systems for semantic-value data compression and decompression
CN105207678B (zh) 一种改进型lz4压缩算法的硬件实现系统
US20200218509A1 (en) Multiplication Circuit, System on Chip, and Electronic Device
US20140208069A1 (en) Simd instructions for data compression and decompression
CN111008230B (zh) 数据存储方法、装置、计算机设备及存储介质
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
US20140208068A1 (en) Data compression and decompression using simd instructions
US20230342419A1 (en) Matrix calculation apparatus, method, system, circuit, and device, and chip
US9143159B2 (en) DPD/BCD to BID converters
CN114640354A (zh) 数据压缩方法、装置、电子设备及计算机可读存储介质
US6240431B1 (en) Decompression of limited range floating point numbers
US11552652B2 (en) Systems and methods for lossless compression of tabular numeric data
US11614919B2 (en) Circuit
CN209879493U (zh) 乘法器
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化
CN111384975A (zh) 多进制ldpc解码算法的优化方法、装置及解码器
CN110175269B (zh) 一种顶点索引的压缩及解压缩方法、装置及计算机存储介质
CN112200301B (zh) 卷积计算装置及方法
Cao et al. A piecewise cubic polynomial interpolation algorithm for approximating elementary function
CN114186186B (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