CN111028136A - 一种人工智能处理器处理二维复数矩阵的方法和设备 - Google Patents

一种人工智能处理器处理二维复数矩阵的方法和设备 Download PDF

Info

Publication number
CN111028136A
CN111028136A CN201911349811.1A CN201911349811A CN111028136A CN 111028136 A CN111028136 A CN 111028136A CN 201911349811 A CN201911349811 A CN 201911349811A CN 111028136 A CN111028136 A CN 111028136A
Authority
CN
China
Prior art keywords
sub
matrix
row
complex
column
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
Application number
CN201911349811.1A
Other languages
English (en)
Other versions
CN111028136B (zh
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201911349811.1A priority Critical patent/CN111028136B/zh
Publication of CN111028136A publication Critical patent/CN111028136A/zh
Application granted granted Critical
Publication of CN111028136B publication Critical patent/CN111028136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0007Image acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本公开记载了一种人工智能处理器处理二维复数矩阵的方法、电子设备和计算装置,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。

Description

一种人工智能处理器处理二维复数矩阵的方法和设备
技术领域
本发明涉及数据处理领域,更具体地,涉及人工智能处理器上的矩阵 运算领域。
背景技术
离散傅里叶变换和离散傅里叶逆变换在数字图像处理和计算机视觉 等领域中有着很广泛的作用,这使得离散傅里叶变换的快速工程实现具有 十分重要的意义。但是,随着人工智能技术的发展,对图像和视频的处理 算法和性能有较高的要求,在各种应用中对计算性能要求的越来越高。
在CPU上只能进行标量的计算,随着数据规模的增加,计算时间快 速增加,如果可以直接进行一组数据的计算,即张量的计算,那么计算性 能可以显著提升。之前常用快速傅里叶变换进行离散傅里叶变换的计算, 通常也是进行的标量的计算,虽然可以减少算法复杂度,但是执行快速傅 里叶变换的计算量很大,并且和系统的性能有很大关系。在现有技术中, 之所以不直接采用矩阵相乘的方法,是因为CPU和GPU都不能直接进行 矩阵相乘,都是在上层开发中进行了算法设计。
当前对高分辨率图像的使用越来越频繁,除了深度学习领域中会使用 较小尺寸的图片,在信号处理、图像处理和视频解析等领域,一般图像都 很大,最常见的有720p,1080p,4k甚至8k和16k的图像,会出现大量 对大尺度图像的傅里叶变换与逆变换运算的需求,但是参与计算的处理 器,不管是CPU、GPU还是MLU,它们的片内RAM资源都是有限的, 不足以缓存这样的大规模的矩阵数据。同时,由于在片内存储进行运算的 速度远高于在片外存储,而且对片外存储访问进行大量的标量操作,会影 响算法的性能,导致整个算法的效率很低。
发明内容
本公开的目的在于克服现有技术中无法无法对大规模二维矩阵进行 处理的缺陷,提供一种能够对片外存储单元中的大型二维复数矩阵进行处 理的方法。
根据本公开的第一方面,提供一种人工智能处理器处理二维复数矩阵 的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复数矩阵 对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列系数矩 阵的尺寸为N×N,所述方法包括:根据人工智能处理器上的片上存储单 元的第一存储区的容量以及所述二维复数矩阵的尺寸,将所述二维复数矩 阵拆分为至少两个子复数矩阵,所述子复数矩阵的尺寸为n×m,且所述 子复数矩阵的所有元素均能够存放在所述第一存储区内;将所述子复数矩 阵加载至所述人工智能处理器的片上存储单元的第一存储区中;根据所述 子复数矩阵的尺寸,将所述行系数矩阵拆分为至少两个子行系数矩阵,以 及将所述列系数矩阵拆分为至少两个子列系数矩阵,其中,所述子行系数 矩阵的尺寸为m×m,所述子列系数矩阵的尺寸为n×n;将所述子行系数 矩阵加载至所述人工智能处理器的片上存储单元的第二存储区中;将所述 子列系数矩阵加载至所述人工智能处理器的片上存储单元的第三存储区 中;所述人工智能处理器利用所述片上存储单元中的子复数矩阵、子行系 数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结果;以及所述人 工智能处理器将所述运算结果传送至所述片外存储单元以进行存储。。
根据本公开的第二方面,提供一种人工智能处理器处理二维复数矩阵 的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复数矩阵 对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列系数矩 阵的尺寸为N×N,所述方法包括:根据人工智能处理器上的片上存储单 元的第二存储区的容量,将所述行系数矩阵拆分为至少两个子行系数矩 阵,所述子行系数矩阵的尺寸为m×m,并且所述子行系数矩阵的所有元 素均能够存放在所述第二存储区内;将所述子行系数矩阵加载至所述人工 智能处理器上的片上存储单元的第二存储区;根据所述子行系数矩阵的尺 寸,将所述二维复数矩阵拆分为至少两个与所述子行系数矩阵对应的子复 数矩阵,其中所述子复数矩阵的尺寸为n×m;将所述子复数矩阵加载至 所述人工智能处理器上的片上存储单元的第一存储区;根据所述子复数矩 阵,将所述子列系数矩阵拆分为多至少两个与所述子复数矩阵对应的子列 系数矩阵,其中所述子列系数矩阵的尺寸为n×n;将所述子列系数矩阵加 载至所述人工智能处理器上的片上存储单元的第三存储区;所述人工智能 处理器利用所述片上存储单元中的子复数矩阵、子行系数矩阵和子列系数 矩阵来进行傅里叶变换,以得到运算结果;以及所述人工智能处理器将所 述运算结果传送至所述片外存储单元以进行存储。
根据本公开的第三方面,提供一种人工智能处理器处理二维复数矩阵 的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复数矩阵 对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列系数矩 阵的尺寸为N×N,所述方法包括:根据人工智能处理器上的片上存储单 元的第三存储区的容量,将所述列系数矩阵拆分为至少两个子列系数矩 阵,所述子列系数矩阵的尺寸为n×n,并且所述子列系数矩阵的所有元素 均能够存放在所述第三存储区内;将所述子列系数矩阵加载至所述人工智 能处理器上的片上存储单元的第三存储区;根据所述子列系数矩阵,将所 述二维复数矩阵拆分为至少两个与所述子列系数矩阵对应的子复数矩阵, 其中所述子复数矩阵的尺寸为n×m;将所述子复数矩阵加载至所述人工 智能处理器上的片上存储单元的第一存储区;根据所述子复数矩阵,将所 述子行系数矩阵拆分为至少两个与所述子复数矩阵对应的子行系数矩阵, 其中所述子行系数矩阵的尺寸为m×m;将所述子行系数矩阵加载至所述 人工智能处理器上的片上存储单元的第二存储区;所述人工智能处理器利 用所述片上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进 行傅里叶变换,以得到运算结果;以及所述人工智能处理器将所述运算结 果传送至所述片外存储单元以进行存储。
根据本公开的第四方面,提供一种电子设备,包括:一个或多个处理 器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机 可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上 所述的方法。
根据本公开的第五方面,提供一种计算机可读存储介质,包括计算机 可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行 如上所述的方法。
本公开的技术方案可以充分利用硬件资源,解决所有因硬件资源有限 不足以支撑大型数据运算的问题;降低内存间缓存耗时,从而提升访存效 率,进一步提升算法的性能。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以 及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制 性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同 或对应的部分其中:
图1a示出了本公开的方法可以应用的一个处理器组的内部结构示意 图;
图1b示出了本公开的方法可以应用的人工智能处理器的结构示意图;
图2示出了根据本公开的一个实施方式的不同存储区域存储二维复数 矩阵,行系数矩阵和列系数矩阵的示意图;
图3示出了根据本公开的第一方面的一种人工智能处理器处理二维复 数矩阵的方法;
图4示出了根据本公开的第二方面的一种人工智能处理器处理二维复 数矩阵的方法;
图5示出了根据本公开的第三方面的一种人工智能处理器处理二维复 数矩阵的方法;
图6示出了根据本公开的一个实施方式的二维复数矩阵的示意图;
图7示出了根据本公开的一个实施方式的将系数矩阵转换为一维数组 的示意图;
图8示出了根据本公开一个实施方式的动态地调整所述子矩阵的尺寸 的方法流程图;
图9a示出了根据本公开的一个实施方式的对二维矩阵进行扩展的示 意图;
图9b示出了根据本公开的另一个实施方式的对二维矩阵进行扩展的 示意图;
图10示出了根据本公开一个实施方式的对二维数据矩阵进行划分和 调节的方法流程图;
图11示出了根据本公开的一个实施方式的子矩阵存在重叠部分的示 意图;
图12示出了根据本公开一个实施方式的人工智能处理器利用所述片 上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶 变换的方法流程图;
图13示出了根据本公开的一个实施方式的对子复数矩阵和相应的子 行系数矩阵进行傅里叶变换的示意图;
图14示出了根据本公开的一个实施方式的对子复数矩阵和相应的子 列系数矩阵进行傅里叶变换的示意图;
图15示出了通过多个工智能处理器分别对多个子矩阵进行并行的傅 里叶变换的示意图;
图16a和图16b分别示出了不同元素位于不同行以及不同元素位于不 同列的情形;
图17示出了根据本公开的组合处理装置的示意图;以及
图18示出了根据本公开的板卡的示意性框图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进 行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而 不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出 创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第 二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定 顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指 示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一 个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或 添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定 实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书 中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、 “一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明 书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多 个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据 上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测 到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]” 可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检 测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图对本公开的实施方式进行详细描述。
图1a示出了本公开的方法可以应用的一个处理器组的内部结构示意 图。
人工智能(AI)芯片加速了数据计算能力,降低了访存延时。AI芯片 采用多核处理器架构,支持多达16核并行计算,并加入存储单元核(也 可称为片上或片内存储单元)来加速数据读取,解决了AI芯片的处理器 核与DDR(也可以称为片外存储单元)的访存瓶颈问题。为用户在处理深 度学习、网络计算等场景中,提供更强的运算能力。
AI芯片共有16个处理器核,用于执行计算任务。每4个处理器核组 成一个处理器组,即共4个处理器组。每个处理器组内有个存储单元核。 存储单元核主要用于处理器组内部的共享存储单元与处理器核的数据交 换和处理器组之间的数据交换。当存储器核和处理器核同时访问DDR时, 通过多路复用器仲裁后,保证仅一组总线访问DDR。
图1b示出了本公开的方法可以应用的人工智能处理器的结构示意图 图。
AI芯片的DDR采用非统一内存存取(Non-Uniform Memory Access, NUMA)架构,每个处理器组可以通过NOC0访问不同的DDR通道,但 访问不同的DDR通道的延时不同。每个处理器组都对应一个访问延时最 低的DDR通道,访问其他通道时延时相对较长。如图1b中处理器组与 DDR结构图所示,处理器组0,处理器组1,处理器组2和处理器组3分 别访问对应的DDR0,DDR1,DDR2和DDR3时延时最低。也就是每个 处理器核访问了各自处理器组访存延时最低的DDR通道。
由于处理器组内部的访存带宽高于处理器核和DDR之间的访问带宽, 所以AI芯片可以通过采用处理器组来内部存取共享存储单元,以减少处 理器核直接访问DDR,从而提高了数据吞吐量。
当需要4核并行计算时,存储单元核可以通过数据广播方式(通过 NOC1),将数据由共享存储单元同时广播到处理器组内的4个处理器核 以进行数据计算。相对于所有处理器核通过DDR来读取数据的方式,这 种情况下能够降低访存延时,优化计算性能。
当计算需求增大时,16个处理器核可以需要同时处理多个计算任务。 处理器核直接访问DDR必然会引起数据访问延时,导致计算速度慢等问 题。AI芯片通过处理器组相互之间的数据交换,避免了16个处理器核直 接与DDR通信,从而降低了数据访问的延时。
对于大型二维数据矩阵,例如高清图片等,可以充分利用AI芯片的 这种结构,来减少与外部存储单元之间的数据交换或数据存取,提升数据 处理速度和数据传输的吞吐率。
图2示出了根据本公开的一个实施方式的不同存储区域存储二维复数 矩阵,行系数矩阵和列系数矩阵的示意图。
如图2所示,在对二维复数矩阵进行傅里叶变换时,需要将该二维复 数矩阵以及相对应的行系数矩阵和列系数矩阵分别存储到片上存储单元 的不同存储区域中,以便于处理器的操作。在图2中,将二维复数矩阵的 一部分(即子复数矩阵)、行系数矩阵的一部分(即子行系数矩阵)以及 列系数矩阵的一部分(即子列系数矩阵)分别存储到第一存储区、第二存 储区和第三存储区。
此外,二维复数矩阵的尺寸,行系数矩阵以及列系数矩阵的大小各不 相同,因此对存储区域的要求也是不同的。例如,在某些情况下,用于存 储二维复数矩阵的第一存储区可能是最小的,因此可以首先确定子复数矩 阵的大小,然后再以该子复数矩阵为基准来设置各个子系数矩阵的大小; 在另外一些情况下,用于存储行系数矩阵的第二存储区域是最小的,则此 情况下可以首先确定子行系数矩阵的尺寸,然后以该子行系数矩阵为基准来设置子复数矩阵和子列系数矩阵的尺寸;在其他一些情况下,用于存储 列系数矩阵的第三存储区域是最小的,则可以首先确定子列系数矩阵的尺 寸,然后以该子列系数矩阵为基准来设置子复数矩阵和子行系数矩阵的大 小。
上文所述的存储区域,可以是处于一个独立的存储器中的不同存储 区,也可以是多个独立的存储器,本公开的技术方案对存储区域的类型不 做任何的限制。
图3示出了根据本公开的第一方面的一种人工智能处理器处理二维复 数矩阵的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复 数矩阵对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列 系数矩阵的尺寸为N×N,所述方法包括:在操作S310,根据人工智能处 理器上的片上存储单元的第一存储区的容量以及所述二维复数矩阵的尺 寸,将所述二维复数矩阵拆分为至少两个子复数矩阵,所述子复数矩阵的 尺寸为n×m,且所述子复数矩阵的所有元素均能够存放在所述第一存储 区内;在操作S320,将所述子复数矩阵加载至所述人工智能处理器的片上 存储单元的第一存储区中;在操作S330,根据所述子复数矩阵的尺寸,将 所述行系数矩阵拆分为至少两个子行系数矩阵,以及将所述列系数矩阵拆 分为至少两个子列系数矩阵,其中,所述子行系数矩阵的尺寸为m×m, 所述子列系数矩阵的尺寸为n×n;在操作S340,将所述子行系数矩阵加 载至所述人工智能处理器的片上存储单元的第二存储区中;在操作S350, 将所述子列系数矩阵加载至所述人工智能处理器的片上存储单元的第三 存储区中;在操作S360,所述人工智能处理器利用所述片上存储单元中的 子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运 算结果;以及在操作S370,所述人工智能处理器将所述运算结果传送至所 述片外存储单元以进行存储。
在上述实施方式中,以第一存储区的容量为基础,将一个大型二维复 数矩阵拆分为至少两个子复数矩阵,每个子复数矩阵的尺寸不大于第一存 储区的容量,从而该第一存储区能够容纳该子复数矩阵的所有元素。在确 定了子复数矩阵的尺寸之后,则可以根据该子复数矩阵来确定子行系数矩 阵的尺寸和子列系数矩阵的尺寸,其中子行系数矩阵为正方形矩阵,其行 数(或列数)与子复数矩阵的列数相同;子列系数矩阵也为正方形矩阵, 其行数(或列数)与子复数矩阵的行数相同。这将在后文中进行更详细的 描述。
图4示出了根据本公开的第二方面的一种人工智能处理器处理二维复 数矩阵的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复 数矩阵对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列 系数矩阵的尺寸为N×N,所述方法包括:在操作S410,根据人工智能处 理器上的片上存储单元的第二存储区的容量,将所述行系数矩阵拆分为至 少两个子行系数矩阵,所述子行系数矩阵的尺寸为m×m,并且所述子行 系数矩阵的所有元素均能够存放在所述第二存储区内;在操作S420,将所 述子行系数矩阵加载至所述人工智能处理器上的片上存储单元的第二存 储区;在操作S430,根据所述子行系数矩阵的尺寸,将所述二维复数矩阵 拆分为至少两个与所述子行系数矩阵对应的子复数矩阵,其中所述子复数 矩阵的尺寸为n×m;在操作S440,将所述子复数矩阵加载至所述人工智能处理器上的片上存储单元的第一存储区;在操作S450,根据所述子复数 矩阵,将所述子列系数矩阵拆分为多至少两个与所述子复数矩阵对应的子 列系数矩阵,其中所述子列系数矩阵的尺寸为n×n;在操作S460,将所 述子列系数矩阵加载至所述人工智能处理器上的片上存储单元的第三存 储区;在操作S470,所述人工智能处理器利用所述片上存储单元中的子复 数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结 果;以及在操作S480,所述人工智能处理器将所述运算结果传送至所述片 外存储单元以进行存储。
在上述实施方式中,以第二存储区的容量为基础,将一个大型行系数 矩阵拆分为至少两个子行系数矩阵,每个子行系数矩阵的尺寸不大于第二 存储区的容量,从而该第二存储区能够容纳该子行系数矩阵的所有元素。 在确定了子行系数矩阵的尺寸之后,则可以根据该子行系数矩阵来确定子 复数矩阵的尺寸,再根据子复数矩阵的尺寸来确定子列系数矩阵的尺寸。 其中子行系数矩阵为正方形矩阵,其行数(或列数)与子复数矩阵的列数相同;子列系数矩阵也为正方形矩阵,其行数(或列数)与子复数矩阵的 行数相同。在该实施方式中,由于首先确定了子行系数矩阵的尺寸,因此 子复数矩阵的列数已经确定,在此情况下,只要第一存储区的容量足够大, 并且第三存储区的容量足够大,则该子复数矩阵的行数可以尽量大,子复 数矩阵的尺寸越大,则大型二维复数矩阵被划分的次数越少,由此减少对 片外存储单元的存取次数。
图5示出了根据本公开的第三方面的一种人工智能处理器处理二维复 数矩阵的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复 数矩阵对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列 系数矩阵的尺寸为N×N,所述方法包括:在操作S510,根据人工智能处 理器上的片上存储单元的第三存储区的容量,将所述列系数矩阵拆分为至 少两个子列系数矩阵,所述子列系数矩阵的尺寸为n×n,并且所述子列系 数矩阵的所有元素均能够存放在所述第三存储区内;在操作S520,将所述 子列系数矩阵加载至所述人工智能处理器上的片上存储单元的第三存储 区;在操作S530,根据所述子列系数矩阵,将所述二维复数矩阵拆分为至 少两个与所述子列系数矩阵对应的子复数矩阵,其中所述子复数矩阵的尺 寸为n×m;在操作S540,将所述子复数矩阵加载至所述人工智能处理器上的片上存储单元的第一存储区;在操作S550,根据所述子复数矩阵,将 所述子行系数矩阵拆分为至少两个与所述子复数矩阵对应的子行系数矩 阵,其中所述子行系数矩阵的尺寸为m×m;在操作S560,将所述子行系 数矩阵加载至所述人工智能处理器上的片上存储单元的第二存储区;在操 作S570,所述人工智能处理器利用所述片上存储单元中的子复数矩阵、子 行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结果;以及在 操作S580,所述人工智能处理器将所述运算结果传送至所述片外存储单元 以进行存储。
与结合图4描述的实施方式类似,在结合图5描述的实施方式中,以 第三存储区的容量为基础,将一个大型列系数矩阵拆分为至少两个子列系 数矩阵,每个子列系数矩阵的尺寸不大于第三存储区的容量,从而该第三 存储区能够容纳该子列系数矩阵的所有元素。在确定了子列系数矩阵的尺 寸之后,则可以根据该子列系数矩阵来确定子复数矩阵的尺寸,再根据子 复数矩阵的尺寸来确定子行系数矩阵的尺寸。其中子行系数矩阵为正方形矩阵,其行数(或列数)与子复数矩阵的列数相同;子列系数矩阵也为正 方形矩阵,其行数(或列数)与子复数矩阵的行数相同。在该实施方式中, 由于首先确定了子列系数矩阵的尺寸,因此子复数矩阵的行已经确定,在 此情况下,只要第一存储区的容量足够大,并且第二存储区的容量足够大, 则该子复数矩阵的行数可以尽量大,子复数矩阵的尺寸越大,则大型二维 复数矩阵被划分的次数越少,由此减少对片外存储单元的存取次数。
在本公开中,片上存储单元的存储区的容量并不足以一次性将相应的 大型二维复数矩阵、行系数矩阵和/或列系数矩阵存储起来,因此需要将该 大型二维复数矩阵、行系数矩阵和/或列系数矩阵进行拆分。
本文中的二维复数矩阵,是一种数学上的表示,在实际的存储中,二 维复数矩阵可以包括两个矩阵:实部矩阵和虚部矩阵。图6示出了根据本 公开的一个实施方式的二维复数矩阵的示意图。
如图6所示,二维复数矩阵的尺寸示例性地为2×4,其包括8个元素, 分别为a00+jb00、a01+jb01、a02+jb02、a03+jb03、a10+jb10、a11+jb11、a12+jb12、 a13+jb13,其可以拆分为实部矩阵和虚部矩阵,实部矩阵包括了每个复数的 实部,分别为a00、a01、a02、a03、a10、a11、a12、a13,虚部矩阵包括了每个 复数的虚部,分别为b00、b01、b02、b03、b10、b11、b12、b13。实部矩阵和 虚部矩阵的组合,可以表达该二维复数矩阵。
二维离散傅里叶变换的系数矩阵和输入数据的数据尺寸相关,在计算 二维离散傅里叶变换矩阵之前只需要知道输入数据的尺寸即可;根据输入 数据的高和宽(行数和列数)依次进行二维傅里叶变换的行相关和列相关 系数矩阵的计算:
Figure BDA0002334356830000121
Figure BDA0002334356830000122
Figure BDA0002334356830000123
Figure BDA0002334356830000124
其中f_row_rr表示行变换对应的输入实部,输出实部过程;f_row_ri 表示行变换对应的输入实部,输出虚部的过程;f_row_ir表示行变换对应 的输入虚部,输出实部的过程;f_row_ii表示行变换输入虚部,输出虚部 的过程,Mcols表示输入数据每一行的长度,即原二维矩阵对应的列数;j 和k的取值范围分别为0≤j<Mcols,0≤k<Mcols
由此,对于尺寸为N×M的二维复数矩阵,其行系数矩阵的尺寸为M ×M,并且行系数矩阵包括第一行系数矩阵,用于存放实部到实部转换的 第一行系数f_row_rr;第二行系数矩阵,用于存放实部到虚部转换的第二 行系数f_row_ri;第三行系数矩阵,用于存放虚部到实部转换的第三行系 数f_row_ir;以及第四行系数矩阵,用于存放虚部到虚部转换的第四行系 数f_row_ii。
类似地,列相关系数矩阵的计算通过如下等式:
Figure BDA0002334356830000125
Figure BDA0002334356830000126
Figure BDA0002334356830000127
Figure BDA0002334356830000128
其中f_cols_rr表示列变换对应的输入实部,输出实部过程;f_cols_ri 表示列变换对应的输入实部,输出虚部的过程;f_cols_ir表示列变换对应 的输入虚部,输出实部的过程;f_cols_ii表示列变换输入虚部,输出虚部 的过程;N_rows表示输入数据每一行的长度,此处是经过转置之后得出 的数据,即原二维矩阵对应的行数;j和k的取值范围分别为0≤j<Nrows, 0≤k<Nrows
由此,对于尺寸为N×M的二维复数矩阵,其列系数矩阵的大小为N ×N,并且列系数矩阵包括:第一列系数矩阵,用于存放实部到实部转换 的第一列系数f_cols_rr;第二列系数矩阵,用于存放实部到虚部转换的第 二列系数f_cols_ri;第三列系数矩阵,用于存放虚部到实部转换的第三列 系数f_cols_ir;以及第四列系数矩阵,用于存放虚部到虚部转换的第四列 系数f_cols_ii。
类似地,傅里叶逆变换的行系数通过如下等式来计算:
Figure BDA0002334356830000131
Figure BDA0002334356830000132
Figure BDA0002334356830000133
Figure BDA0002334356830000134
其中b_row_rr表示行逆变换对应的输入实部,输出实部过程;b_row_ri 表示行逆变换对应的输入实部,输出虚部的过程;b_row_ir表示行逆变换 对应的输入虚部,输出实部的过程;b_row_ii表示行逆变换输入虚部,输 出虚部的过程。
类似地,傅里叶逆变换的行系数通过如下等式来计算:
Figure BDA0002334356830000135
Figure BDA0002334356830000136
Figure BDA0002334356830000137
Figure BDA0002334356830000138
其中b_cols_rr表示列逆变换对应的输入实部,输出实部过程; b_cols_ri表示列逆变换对应的输入实部,输出虚部的过程;b_cols_ir表示 列逆变换对应的输入虚部,输出实部的过程;b_cols_ii表示列逆变换输入 虚部,输出虚部的过程。
由于上述的系数矩阵无法被存储单元一次性存储,因此,可以将其拆 分为多个子行系数矩阵和子列矩阵。对于这些子行矩阵和子列矩阵,根据 本公开的一个实施方式,可以通过所述人工智能处理器将所述子行系数矩 阵转换为一维数组以加载至所述第二存储区;将所述子列系数矩阵转换为 一维数组以加载至所述第三存储区。
图7示出了根据本公开的一个实施方式的将系数矩阵转换为一维数组 的示意图。
如图7所示,设一个子系数矩阵(行系数矩阵或列系数矩阵)的大小 为4×4,则可以将该子系数矩阵转换为1×16的一维数组。将二维矩阵转 换为一维数组来存储便于进行数据的访问与进行变换计算操作。
同样地,二维复数矩阵也可以转换为一维数组,对于一个大小为n× m的子复数矩阵(包括实数矩阵和虚数矩阵),其在转换为一维数组时大 小为1×(n×m)。为了进行张量计算,可以将此一维数组变换成1×1 ×1×(n×m)的多维矩阵方式存储在所述第一存储单元中,其中数据组 数为1,高为1,宽为1,深度为(n×m)。
下面将以一个二维数据矩阵为例来具体描述如何将二维复数矩阵进 行拆分。该二维数据矩阵可以是该二维复数矩阵的实部矩阵或者虚部矩 阵,其是二维复数矩阵的一个特例,因此下文中多个“二维数据矩阵”可 以组合为“二维复数矩阵”。
二维数据矩阵的尺寸是由矩阵的长和宽来限定的。例如,一个4×16 的二维数据矩阵和一个8×8的二维数据矩阵,均含有64个元素,如果将 这两个二维数据矩阵转换为一维数组,则该64个元素所占用的空间是相 同的,但是,在本公开中,则认为8×8的二维数据矩阵和4×16的二维 数据矩阵在尺寸上是不同的。下面举例来说明大型二维数据矩阵的拆分过 程。
设大型二维数据矩阵为BM,其高为H,宽为W,其矩阵可以表示为 等式1:
Figure BDA0002334356830000151
其中m表示该二维数据矩阵中的每一个元素,第一个下标表示该元素所处 的行,第二个下标表示该元素所处的列。
下文中,将使用术语“子矩阵”来表示从二维数据矩阵中拆分出的小 型矩阵,该子矩阵可以表示拆分出的实部矩阵,也可以表示拆分出的虚部 矩阵,因此,在下文中,也可以将子矩阵称为“子复数矩阵”。
可以将上述二维数据矩阵BM拆分为Rn×Cn个子矩阵SM(h,w), 每个子矩阵的尺寸为Sr×Sc,其中Rn=H/Sr,Cn=W/Sc,这里的h,w表 示子矩阵的下标索引,满足0<=h<=H-1,0<=w<=W-1;由此,上述的大规 模二维数据矩阵BM还可以表示为等式2:
Figure BDA0002334356830000152
其中,SM例如可以表示拆分的子矩阵,其中子矩阵SM00可以表示为 等式3.1,并且子矩阵SM01可以表示为等式3.2:
Figure BDA0002334356830000153
Figure BDA0002334356830000154
其他子矩阵可以以类似的方式来表示,这里将不再穷举。
由此,每次在进行运算时,可以分批次将子矩阵SM读入到片上存储 单元中,以便于在片上存储单元中进行高速运算。
当将二维复数矩阵中的一个拆分为多个子矩阵之后,可以在所述片外 存储单元中,根据所述子矩阵(子复数矩阵)在所述二维数据矩阵中的坐 标,逐行或逐列地存储所述子矩阵,以形成一维数组。
下面等式4示出了按照逐行进行存储的方式。
BM={SM00 SM01 ... SM0(Cn-1) SM10 ... SM1(Cn-1) ... SM(Rn-1)0 ...SM(Rn-1)(Cn-1)}等式(4)
等式5示出了按照逐列来进行存储的方式:
BM={SM00 SM10 ... SM(Rn-1)0 SM01 ... SM(Rn-1)1 ... SM0(Cn-1) ...SM(Rn-1)(Cn-1)}等式(5)
在上面的存储过程中,每个子矩阵中的元素也可以按照逐行或者逐列 的方式来进行存储,即先逐行地存储第零子矩阵SM00的第零行(或第零 列)元素,接下来存储子矩阵SM00第一行(或第一列)元素。当子矩阵 SM00的所有元素存储完毕之后,再存储第一子矩阵(按行计算的第一子矩 阵SM01或者按列计算的第一子矩阵SM10)的所有元素,直至所拆分出来 的所有子矩阵存储完毕为止。
可以根据元素所在的子矩阵的编号、子矩阵的尺寸以及元素在子矩阵 中的绝对位置,来计算所述元素在所述一维数组中的位置。
根据本公开的一个实施方式,计算所述元素在所述一维数组中的位置 可以包括:以所述子矩阵的编号乘以所述子矩阵的尺寸,再加上所述元素 在所述子矩阵中的绝对位置。
上文中的绝对位置是指,当矩阵转换为一维数组时,矩阵中的元素在 序列中相应的位置。
以逐行存储为例,设每个子矩阵的编号为idx_block,每个子矩阵的尺 寸为Sr×Sc,每个元素在子矩阵中的绝对位置为idx_element,则该元素在 整个一维数组中的位置如等式6所示:
idx=idx_block*(Sr*Sc)+idx_element 等式(6)
其中,子矩阵的编号idx_block可以根据如下等式7来计算:
Figure BDA0002334356830000161
每个元素在子矩阵中的绝对位置idx_element可以根据如下等式8来计算:
Idx_element=(i%Sr)*Sc+(j%Sc) 等式(8)
其中,算子Floor表示向下取整,符号“%”表示取余。
以一个16×16的二维数据矩阵,子矩阵尺寸为8×8(即Sr=8,Sc=8), 划分为四个子矩阵(即Rn=2,Cn=2)为例来对以上等式6-8进行说明。
例如一个元素的坐标为(3,3),那么
idx_block=Floor(3/8)*2+Floor(3/8)=0
idx_element=(3%8)*8+(3%8)=3*8+3=27
idx=0*(8*8)+27=27
从上面的计算结果中可以得到,该元素处于第零子矩阵中,在第零子 矩阵中位于第27个,并且在整个二维数据矩阵中也处于第27个。
在又一个例子中,例如一个元素的坐标为(8,9),那么
idx_block=Floor(8/8)*2+Floor(9/8)=3
idx_element=(8%8)*8+(9%8)=0*8+1=1
idx=3*(8*8)+1=193。
在上面的例子中,元素(8,9)处于第三个子矩阵中,在第三个子矩阵 中位于第1个,并且在整个二维数据矩阵中位于第193个。
需要理解的是,对大型二维数据矩阵进行拆分并不完全取决于片上存 储单元的容量,还进一步取决于二维数据矩阵的尺寸。根据本公开的一个 实施方式,其中,根据所述二维数据矩阵(二维复数矩阵)的尺寸的不同, 来动态地调整所述子矩阵(子复数矩阵)的尺寸。
需要理解的是,本文中在描述二维数据矩阵的尺寸时,忽略了这些矩 阵和存储单元空间的单位(例如K,M等),而仅仅以无单位的数据来做 示意性表示。需要理解的是,本公开的这种无单位表示方式,仅仅在于方 便理解,其原理可应用于任何尺寸的矩阵以及存储单元。
例如,对于一个64×64的二维数据矩阵,其包含的元素总数为4096, 而片上存储单元的空间为64,在此情况下,可以将64×64的二维数据矩 阵划分为多个8×8的子矩阵,每个字矩阵的元素数量为64,而该64×64 的二维数据矩阵刚好可以拆分为64个子矩阵;在另外的情况下,也可以 将此二维矩阵拆分为4×16的子矩阵,同样也拆分为64个子矩阵;还可 以将此二维矩阵拆分为2×32的子矩阵或者1×64的矩阵(或称为序列)。
又例如,对于一个4×1024的二维数据矩阵(例如狭长的图片),其 包含的元素总数也为4096,在此情况下,则优选地将该二维数据矩阵拆分 为4×16的子矩阵,或者拆分为2×32的子矩阵,或者拆分为1×64的矩 阵或序列。
由此,优选地,对每一个输入的二维数据矩阵,可以动态地调整拆分 方式,从而动态地调整所拆出的子矩阵的尺寸。
图8示出了根据本公开一个实施方式的动态地调整所述子矩阵的尺寸 的方法流程图。
如图8所示,动态地调整所述子矩阵的尺寸可以包括如下操作:在操 作S810,设定所述子矩阵的初始行数和初始列数;在操作S820,确定所 述二维数据矩阵的行数与所述初始行数之间的第一比值;在操作S830,确 定所述二维数据矩阵的列数与所述初始列数之间的第二比值;以及,在操 作S840,调整所述子矩阵的行数和列数,以使得所述第一比值和第二比值 均为整数。
在以上操作中,可以首先根据片上存储单元的容量来设定一个初始行 数和初始列数。例如,对于尺寸为64的存储单元,该初始值可以设置为8 ×8、1×64、2×32、4×16等等。该初始值可以是一个经验值,例如根据 接收的大部分二维数据矩阵的尺寸来确定该初始值。需要理解的是,上面 的初始值仅仅是一个示例,还可以采用5×5、9×9等非2的整数幂的方 案。
接下来,可以根据上述的初始值来确定该二维数据矩阵可以拆分的子 矩阵的数量,即确定二维数据矩阵的行数与初始行数的第一比值以及二维 数据矩阵的列数与初始列数的第二比值,不断调整这两个比值,直至这两 个比值均为整数。这意味着对二维数据矩阵的拆分达到了较优的结果。第 一比值和第二比值越小,则意味着能够拆分出尽量少数量的子矩阵,这对 于减少处理器对片外存储单元的存取次数产生有利效果。
通常,二维数据矩阵的形式较为复杂,因此并非所有二维数据矩阵的 行和/或列能够被恰好无缝地被分为整数个子矩阵,而是可能会存在无法整 数划分的情形。
针对此情况,可以存在多种实施方式来进行解决。
根据本公开的一个实施方式,当所述第一比值和/或第二比值为非整数 时,对所述二维数据矩阵的行/或列进行扩展,以使得所述第一比值和/或 所述第二比值为整数。
图9a示出了根据本公开的一个实施方式的对二维矩阵进行扩展的示 意图。
如图9a所示,深颜色表示二维数据矩阵的原始内容,浅色部分表示 扩展部分。其中,该二维数据矩阵的原始尺寸为16×15,即16行,15列, 而片上存储单元的尺寸为64,在此情况下,可以拆分为多个8×8的子矩 阵,分别为第零子矩阵,第一子矩阵,第二子矩阵和第三子矩阵。如图9a 所示,此时列(15列)无法被整数地划分,因此可以在该二维矩阵的列中 扩展一列,以形成16×16的矩阵。所扩展的一列可以为全0值,由此, 可以将列被扩展之后的二维数据矩阵拆分为四个子矩阵,其中第一子矩阵 和第三子矩阵包含了一列扩展列。每个子矩阵的尺寸为8×8。此外,所扩 展的一列并不必然是补充0,而是可以根据该相邻列的数据来补充相应的 数据,例如可以将扩展列的数据补充为与最后一列的数据相同。对于风 景图片而言,这种细微的补充可能并不会实质上影响人类对图片的判读以 及图片的美感。
图9b示出了根据本公开的另一个实施方式的对二维矩阵进行扩展的 示意图。
对二维数据矩阵的行和/或列进行扩展并不必然是在行的最后或者列 的最后进行扩展,而是也可以将扩展行或者扩展列插入到二维矩阵的中 间。
在图9b中,在二维数据矩阵的第8列和第9列之间插入了扩展列, 扩展列可以全部填充为0,或者,扩展列也可以根据相邻列的值来填充, 例如,可以根据前一列或后一列的数据来填充,也可以根据前一列和后一 列的平均值来填充。通过平均值的方式来填充有助于形成较为平缓的过 渡。与图9a不同的是,第一子矩阵和第三子矩阵所包含的扩展列位于该 子矩阵的第零列。
需要理解的是,在图9a和图9b中仅仅示出了扩展行/扩展列的两个实 施方式,在其他实施方式中(未以附图的方式示出),还可以将扩展行或 者扩展列插入到该二维数据矩阵的首行之前或者首列之前,或者,还可以 插入到二维数据矩阵的任何行或者任何列之间。
根据本公开的一个实施方式,所述子矩阵之间可以彼此紧邻地设置。 在图9a和图9b所示的实施方式中,每个子矩阵之间不发生重叠,因此可 以称之为本公开中的“紧邻”。对于图9b中的情况,虽然在第7列和第8 列之间插入了扩展列,但由于子矩阵之间未发生重叠,本公开中也将此情 形称为“紧邻”。
在上文中,可以定位所扩展的行或者列的位置,因此,当将子矩阵还 原为二维数据矩阵时,可以将扩展的行或者列删除,从而得到与原矩阵尺 寸相同的矩阵,进而并不增加任何额外数据内容。
上文中给出了动态地调整子矩阵尺寸的情形,根据本公开的另一个实 施方式,所述子矩阵的尺寸可以是固定的,其具有预定行数和预定列数。
例如,对于尺寸为64的片上存储单元,可以将该矩阵的尺寸固定设 置为8×8。需要理解的是,该固定尺寸并不必然等于该片上存储单元的容 量,而是也可以小于该片上存储单元的容量。此外,8×8只是一个示例, 该矩阵的尺寸也可以固定设置为1×64、2×32、4×16等其他尺寸。
采用固定尺寸的子矩阵,则无需对子矩阵进行任何的调节,从而节省 了相应的调节时间。
图10示出了根据本公开一个实施方式的对二维数据矩阵进行划分和 调节的方法流程图。
如图10所示,在子矩阵为固定尺寸的情况下,可以通过如下方式来 确定如何对二维数据矩阵进行划分:在操作S1010,确定所述二维数据矩 阵的行数与所述预定行数之间的第三比值;在操作S1020,确定所述二维 数据矩阵的列数与所述预定列数之间的第四比值;以及,在操作S1030, 当所述第三比值和/或第四比值为非整数时,对所述二维数据矩阵的行和/ 或列进行扩展,以使得所述第三比值和/或所述第四比值为整数。
在图10所示的流程图中,可以在二维数据矩阵的行无法被子矩阵的 预定行数整除,或者当二维数据矩阵的列无法被子矩阵的预定行数整除 时,将该二维矩阵的行或者列进行扩展,直至能够被上述预定行数或预定 列数整除为止。
上面已经结合图9a和图9b描述了对所述二维数据矩阵的行/或列进行 扩展的实施方式,这里将不再赘述。
根据本公开的另一个实施方式,所述子矩阵中的至少两个矩阵存在重 叠部分。
图11示出了根据本公开的一个实施方式的子矩阵存在重叠部分的示 意图。
如图11所示,二维数据矩阵的尺寸为16×14,而子矩阵的预定尺寸 为8×8,在此情况下,可以将二维数据矩阵拆分为四个8×8的子矩阵, 分别为第零子矩阵,第一子矩阵,第二子矩阵和第三子矩阵。由于二维数 据矩阵的列数14除以子矩阵的预定列数8为非整数,因此可以使得至少 两个子矩阵存在重叠部分。在图11中,网格部分为两个子矩阵的重叠部 分,即第零子矩阵与第一子矩阵的重叠部分,以及第二子矩阵与第三子矩 阵的重叠部分。该重叠部分既包含了第零子矩阵和第二矩阵的最后两列的 元素,也包含了第一子矩阵和第三矩阵的最初两列的元素。
子矩阵包含重叠部分的内容可以使得在二维数据矩阵的尺寸不能被 子矩阵的尺寸整除时,不必在矩阵中插入额外的行或者列。需要理解的是, 图11仅仅是一种示例,重叠部分的尺寸可以是任意,并且,子矩阵的重 叠和不重叠是可以混合使用的。例如,对于二维数据矩阵的尺寸为24×23, 子矩阵的尺寸为8×8的情形,在列的方向上可以拆分为3个子矩阵(分 别为第零子矩阵,第一子矩阵和第二子矩阵),第零子矩阵和第一子矩阵 可以是紧邻并且不发生重叠的,而第一子矩阵可以和第二子矩阵有一列重 叠部分。
根据以上描述,当拆分二维矩阵时,可能存在重叠部分。当存在重叠 部分时,可以标识该重叠部分,以对该重叠部分进行定位。
仍然以图11为例来进行说明。在图11中,二维数据矩阵的尺寸为16 ×14,子矩阵的尺寸为8×8,因此,可以得出重叠的部分可以是第6列和 第7列。可以在关于子矩阵的信息中标识出该重叠部分,以便于后续的定 位和处理。关于子矩阵的信息例如可以包括子矩阵的尺寸,子矩阵在二维 数据矩阵中的位置,子矩阵是否存在与其他子矩阵的重叠部分,以及子矩 阵与其他子矩阵的重叠部分的位置等等。
当在片上存储单元中对每一个子矩阵进行处理之后,可以将这些处理 之后形成的子矩阵存储回片外存储单元中。当在片外存储单元中存储这些 经过处理的子矩阵时,如果两个子矩阵存在重叠部分,则可以以多种方式 来存储,例如,重叠部分可以用一个经过处理的子矩阵的数据来覆盖另外 一个经过处理的子矩阵的数据,也可以将经过处理的两个子矩阵的重叠部 分求平均值,作为最终的存储结果。需要理解的是,对重叠部分的任何处 理,都包含在本公开所要保护的范围之内。
上面描述了如何将二维复数矩阵拆分为多个子复数矩阵的情形,接下 来将详细描述如何对这些子复数矩阵进行傅里叶变换。
图12示出了根据本公开一个实施方式的人工智能处理器利用所述片 上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶 变换的方法流程图。
如图12所示,人工智能处理器利用所述片上存储单元中的子复数矩 阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换包括:在操作S1210, 将所述子复数矩阵的每一行与所述子行系数矩阵的所有行进行卷积运算, 以得到第一中间结果;在操作S1220,将所述第一中间结果的同一行元素 相加,以得到第一运算结果;在操作S1230,将第一运算结果进行转置以 得到转置结果,将所述转置结果的每一行与所述子列系数矩阵的所有行进 行卷积运算,以得到第二中间结果;以及在操作S1240,将所述第二中间 结果的同一行元素相加,以得到运算结果。
首先,介绍进行对复数进行傅里叶变换的基本概念。对于输入为复数, 通过傅里叶变换后,输出的也是复数;实现复数相乘的通用计算公式:
(A1+jB1)*(A2+jB2)=(A1*A2-B1*B2)+j(A1B2+B1A2)
其中A1、A2为两个复数数据的实部,B1、B2为两个复数数据的虚部;
基于以上通用计算公式,根据二维复数矩阵与行系数矩阵来计算傅里 叶变换可以通过如下等式来进行:
RRrow=inpreal*f_rows_rr
IRrow=inpimag*f_rows_ir
RIrow=inpreal*f_rows_ri
IIrow=inpimag*f_rows_ii
Realrow=RRrow+IRrow
Imagrow=RIrow+IIrow
其中inpreal、inpimag分别为输入数据的实部和虚部,RRrow表示对应输入 实部输出也是实部,RIrow表示对应输入实部输出是虚部,IRrow表示输入 是虚部输出是实部,IIrow表示输入时虚部输出也是虚部;Realrow表示傅里 叶变换之后的实部,Imagrow表示傅里叶变换之后的虚部,其中下标“row” 表示上述操作针对的是行系数矩阵的。
图13示出了根据本公开的一个实施方式的对子复数矩阵和相应的子 行系数矩阵进行傅里叶变换的示意图。
如图13所示,子复数矩阵为2×4,其中该子复数矩阵第一行的数据 示例性地为a1,b1,c1和d1;子行系数矩阵为4×4,其第一行的数据示 例性地为a2,b2,c2和d2。将子复数矩阵第一行的数据与该子行系数矩 阵进行卷积操作,得到第一中间结果,其中a1与a2进行卷积操作的值为 a3,b1与b2进行卷积操作的值为b3,c1与c2进行卷积操作的值为c3,d1与d2进行卷积操作的值为d3。在第一运算结果中,结果A=a3+b3+c3+d3, 即将所述第一中间结果的同一行元素相加而得到。进一步地,尽管图13 中未示出,子复数矩阵的第一行的数据与子行系数矩阵的第二行的数据进 行卷积操作,得到的这些结果相加得到第一运算结果B。同样地,可以得 到第一运算结果C和D。在子复数矩阵的第一行数据的运算结束之后,以 同样的方式进行第二行数据的运算。从而第一运算结果的大小与二维复数 矩阵的大小相同,均为2×4。
根据子复数矩阵与子列系数矩阵来计算傅里叶变换可以通过如下等 式来进行:
RRcol=tempreal*f_cols_rr
IRcol=tempimag*f_cols_ir
RIcol=tempreal*f_cols_ri
IIcol=tempimag*f_cols_ii
Realcol=RRcol+IRcol
Imagcol=RIcol+IIcol
其中tempreal、tempimag分别为图13中进行计算得到的第一中间结果经 过转置后数据的实部和虚部,RRcol表示对应输入实部输出也是实部,RIcol表示对应输入实部输出是虚部,IRcol表示输入是虚部输出是实部,IIcol表 示输入时虚部输出也是虚部;Realcol表示傅里叶变换之后的实部,Imagcol表示傅里叶变换之后的虚部,其中下标“col”表示上述操作针对的是列系 数矩阵的。
图14示出了根据本公开的一个实施方式的对子复数矩阵和相应的子 列系数矩阵进行傅里叶变换的示意图。
如图14所示,第一运算结果的尺寸为2×4,经过转置之后,尺寸为 4×2,由此列系数矩阵的尺寸为2×2。经过计算得到运算结果,其尺寸为 4×2。多得到的运算结果经过转置之后,则可以得到最终的运算结果。
需要理解的是,上面的计算首先以子复数矩阵和子行系数矩阵来计算 第一运算结果,再通过第一运算结果的转置矩阵与子列系数矩阵来计算运 算结果;根据本公开的另一个实施方式,可以首先以子复数矩阵的转置与 子列系数矩阵来计算第一运算结果,再通过第一运算结果的转置矩阵与子 行系数矩阵来计算运算结果。
根据本公开的一个实施方式,所述傅里叶变换可以是并行进行的。
根据图1a和图1b所示,可以存在多个处理器核以及多个处理器组, 由此当从片外存储单元中读取到数据后,可以对这些数据进行并行处理, 以加快数据的处理速度。
根据本公开的一个实施方式,其中,通过人工智能处理器对所述二维 复数矩阵,所述行系数矩阵和列系数矩阵来进行傅里叶变换包括:通过多 个人工智能处理器分别对多个子复数矩阵、多个子行系数矩阵以及多个子 列系数矩阵并行进行傅里叶变换。
图15示出了通过多个工智能处理器分别对多个子矩阵进行并行的傅 里叶变换的示意图。
如图15所示,一个二维数据矩阵的尺寸为16×16,可以将其拆分为 四个子矩阵,即第零子矩阵,第一子矩阵,第二子矩阵和第三子矩阵,每 个子矩阵的尺寸为8×8。可以采用四个处理器来分别对这四个子矩阵进行 并行处理,即处理器0处理第零子矩阵,处理器1处理第一子矩阵,处理 器2处理第二子矩阵,以及处理器3处理第三子矩阵。需要理解的是,为 了清楚器件,这里并未示出行系数矩阵和列系数矩阵。
需要理解的是,这里的处理器0-3仅仅是对处理器的一种统称,每个 处理器可以是单独的处理器器核(如图1a所示),也可以是处理器组(如 图1b所示)。多个处理器可以从片外存储单元中分别将相应的子矩阵读 取到片上存储单元中,并在片上存储单元中对相应的子矩阵与其对应的子 行系数矩阵以及子列系数矩阵进行傅里叶变换。
片上存储单元可以是多个,每个片上存储单元存储一个子矩阵,从而 每个处理器分别对不同的片上存储单元中的子矩阵进行并行处理;片上存 储单元也可以是单个共享存储单元,该共享存储单元可以一次性存储多个 子矩阵,多个处理器对该单个共享存储单元中的不同子矩阵进行并行处 理。
根据本公开的一个实施方式,通过人工智能处理器对所述二维复数矩 阵,所述行系数矩阵和列系数矩阵来进行傅里叶变换包括:通过多个人工 智能处理器分别对每个子复数矩阵中的不同元素,以及与所述元素相对应 的子行系数矩阵和子列系数中的系数元素进行傅里叶变换。
这里所述的不同元素,是指子复数矩阵中位于不同位置的元素,根据 本公开的一个实施方式,可以是每一个处理器都负责固定位置处的元素, 例如,对于子复数矩阵中每一行中第0,2,4个元素,由第零个处理器核来 执行,对于二维复数矩阵中每一行中第1,3,5个元素,可以由第一个处理 器核来执行等等。
图16a和图16b分别示出了不同元素位于不同行以及不同元素位于不 同列的情形。
在图16a中,子复数矩阵例如可以是2×4,处理器0负责第0列的处 理,处理器1负责第1列的处理,处理器2负责第2列的处理,以及处理 器3负责第3列的处理。在此情况下,每个处理器从片上存储单元中读取 相应的元素并进行并行处理,从而能够提升处理速度。
在图16b中,子复数矩阵例如可以是2×4,处理器0负责第0行的处 理,处理器1负责第1行的处理。在此情况下,处理器0可以将第0行的 所有元素与子行系数矩阵进行卷积运算,而处理器1可以将第1行的所有 元素与子行系数矩阵进行卷积运算。在此情况下,每个行都由不同的处理 器来负责处理,从而加快了运算速度。
需要理解的是,这里所述的处理器,仅仅还是一个统称,其可以是处 理器核,也可以是处理器组。本公开不对处理器的类型做任何限定。
综上所述,相对于现有方法,本发明公开的技术方案具有如下优势:
本公开的技术方案可以充分利用处理器的片上资源,解决由了于处理 器片上资源有限而不能处理大型数据的缺陷。
本公开的技术方案对原大型矩阵进行了分块转存的操作,可以解决由 于大量地址随机跳变操作导致访问效率降低的问题。
本公开的技术方案可以一次性操作整个子矩阵尺寸的数据,可以避免 在片外存储上频繁进行效率很低的标量的操作,这样可以提升计算效率。
由此可见,本公开的技术方案可以充分利用硬件资源,解决所有因硬 件资源有限不足以支撑大型数据运算的问题;降低内存间缓存耗时,从而 提升访存效率,进一步提升算法的性能。
此外,还需要理解的是,尽管上文中仅以傅里叶变换为例来进行描述 和说明,但本公开的方案也同样适用于傅里叶逆变换操作,其区别仅在于 行系数矩阵和列系数矩阵中元素的不同,但在整体的操作方面,傅里叶变 换和傅里叶逆变换是等同的,因此本公开的保护范围也同样包含了傅里叶 逆变换的情形。
本公开还提供了一种电子设备,包括:一个或多个处理器;以及存储 器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由 所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
本公开还提供一种计算机可读存储介质,包括计算机可执行指令,当 所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方 法。
本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智 能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图17示出了一种组合处理装置1700,其包括上述的计算装置1702, 通用互联接口1704,和其他处理装置1706。根据本公开的计算装置与其 他处理装置进行交互,共同完成用户指定的操作。图17为组合处理装置 的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络 处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所 包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部 数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、 停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成 运算任务。
通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其 他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所 需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中 获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存 储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置1708,存储装置分别与所述计算 装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述 其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他 处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设 备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降 低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部 件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述 芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装 结构。参阅图18,其提供了一种示例性的板卡,上述板卡除了包括上述芯 片1802以外,还可以包括其他的配套部件,该配套部件包括但不限于: 存储器件1804、接口装置1806和控制器件1808。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储 数据。所述存储器件可以包括多组存储单元1810。每一组所述存储单元与 所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储 器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许 在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的 两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一 组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所 述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中 64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述 存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个 时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器, 用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用 于实现所述芯片与外部设备1012(例如服务器或计算机)之间的数据传输。 例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处 理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。 在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制 上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。 另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务 器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状 态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。 所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯 片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负 载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所 述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理 电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上 述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、 平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服 务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可 穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空 调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机; 所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都 表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受 所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序 或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实 施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须 的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没 有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通 过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例 如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的 划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或 一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合 或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通 信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的, 作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地 方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的 部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在 一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软 件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品 销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解, 当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品 存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人 计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部 或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬 盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披 露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本 披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披 露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本 说明书内容不应理解为对本披露的限制。

Claims (25)

1.一种人工智能处理器处理二维复数矩阵的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复数矩阵对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列系数矩阵的尺寸为N×N,所述方法包括:
根据人工智能处理器上的片上存储单元的第一存储区的容量以及所述二维复数矩阵的尺寸,将所述二维复数矩阵拆分为至少两个子复数矩阵,所述子复数矩阵的尺寸为n×m,且所述子复数矩阵的所有元素均能够存放在所述第一存储区内;
将所述子复数矩阵加载至所述人工智能处理器的片上存储单元的第一存储区中;
根据所述子复数矩阵的尺寸,将所述行系数矩阵拆分为至少两个子行系数矩阵,以及将所述列系数矩阵拆分为至少两个子列系数矩阵,其中,所述子行系数矩阵的尺寸为m×m,所述子列系数矩阵的尺寸为n×n;
将所述子行系数矩阵加载至所述人工智能处理器的片上存储单元的第二存储区中;
将所述子列系数矩阵加载至所述人工智能处理器的片上存储单元的第三存储区中;
所述人工智能处理器利用所述片上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结果;以及
所述人工智能处理器将所述运算结果传送至所述片外存储单元以进行存储。
2.一种人工智能处理器处理二维复数矩阵的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复数矩阵对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列系数矩阵的尺寸为N×N,所述方法包括:
根据人工智能处理器上的片上存储单元的第二存储区的容量,将所述行系数矩阵拆分为至少两个子行系数矩阵,所述子行系数矩阵的尺寸为m ×m,并且所述子行系数矩阵的所有元素均能够存放在所述第二存储区内;
将所述子行系数矩阵加载至所述人工智能处理器上的片上存储单元的第二存储区;
根据所述子行系数矩阵的尺寸,将所述二维复数矩阵拆分为至少两个与所述子行系数矩阵对应的子复数矩阵,其中所述子复数矩阵的尺寸为n×m;
将所述子复数矩阵加载至所述人工智能处理器上的片上存储单元的第一存储区;
根据所述子复数矩阵,将所述子列系数矩阵拆分为多至少两个与所述子复数矩阵对应的子列系数矩阵,其中所述子列系数矩阵的尺寸为n×n;
将所述子列系数矩阵加载至所述人工智能处理器上的片上存储单元的第三存储区;
所述人工智能处理器利用所述片上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结果;以及
所述人工智能处理器将所述运算结果传送至所述片外存储单元以进行存储。
3.一种人工智能处理器处理二维复数矩阵的方法,其中,所述二维复数矩阵的尺寸为N×M;与所述二维复数矩阵对应的行系数矩阵的尺寸为M×M,与所述二维复数矩阵对应的列系数矩阵的尺寸为N×N,所述方法包括:
根据人工智能处理器上的片上存储单元的第三存储区的容量,将所述列系数矩阵拆分为至少两个子列系数矩阵,所述子列系数矩阵的尺寸为n×n,并且所述子列系数矩阵的所有元素均能够存放在所述第三存储区内;
将所述子列系数矩阵加载至所述人工智能处理器上的片上存储单元的第三存储区;
根据所述子列系数矩阵,将所述二维复数矩阵拆分为至少两个与所述子列系数矩阵对应的子复数矩阵,其中所述子复数矩阵的尺寸为n×m;
将所述子复数矩阵加载至所述人工智能处理器上的片上存储单元的第一存储区;
根据所述子复数矩阵,将所述子行系数矩阵拆分为至少两个与所述子复数矩阵对应的子行系数矩阵,其中所述子行系数矩阵的尺寸为m×m;
将所述子行系数矩阵加载至所述人工智能处理器上的片上存储单元的第二存储区;
所述人工智能处理器利用所述片上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结果;以及
所述人工智能处理器将所述运算结果传送至所述片外存储单元以进行存储。
4.根据权利要求1-3中任意一项所述的方法,其中,所述人工智能处理器将所述子行系数矩阵转换为一维数组以加载至所述第二存储区;将所述子列系数矩阵转换为一维数组以加载至所述第三存储区。
5.根据权利要求1-4中任意一项所述的方法,其中,所述二维复数矩阵包括实部矩阵和虚部矩阵。
6.根据权利要求5所述的方法,其中,所述行系数矩阵包括:
第一行系数矩阵,用于存放实部到实部转换的第一行系数;
第二行系数矩阵,用于存放实部到虚部转换的第二行系数;
第三行系数矩阵,用于存放虚部到实部转换的第三行系数;以及
第四行系数矩阵,用于存放虚部到虚部转换的第四行系数。
7.根据权利要求5所述的方法,其中,所述列系数矩阵包括:
第一列系数矩阵,用于存放实部到实部转换的第一列系数;
第二列系数矩阵,用于存放实部到虚部转换的第二列系数;
第三列系数矩阵,用于存放虚部到实部转换的第三列系数;以及
第四列系数矩阵,用于存放虚部到虚部转换的第四列系数。
8.根据权利要求1和4-7中任意一项所述的方法,其中,根据所述二维复数矩阵的尺寸的不同,来动态地调整所述子复数矩阵的尺寸。
9.根据权利要求8所述的方法,其中,动态地调整所述子复数矩阵的尺寸包括:
设定所述子复数矩阵的初始行数和初始列数;
确定所述二维复数矩阵的行数与所述初始行数之间的第一比值;
确定所述二维复数矩阵的列数与所述初始列数之间的第二比值;
调整所述子复数矩阵的行数和列数,以使得所述第一比值和第二比值均为整数。
10.根据权利要求9所述的方法,其中,当所述第一比值和/或第二比值为非整数时,对所述二维复数矩阵的行/或列进行扩展,以使得所述第一比值和/或所述第二比值为整数。
11.根据权利要求1和4-10中任意一项所述的方法,其中,所述子复数矩阵之间彼此紧邻地设置。
12.根据权利要求1和4-11中任意一项所述的方法,其中,所述子复数矩阵的尺寸是固定的,其具有预定行数和预定列数。
13.根据权利要求12所述的方法,其中,
确定所述二维复数矩阵的行数与所述预定行数之间的第三比值;
确定所述二维复数矩阵的列数与所述预定列数之间的第四比值;
当所述第三比值和/或第四比值为非整数时,对所述二维复数矩阵的行和/或列进行扩展,以使得所述第三比值和/或所述第四比值为整数。
14.根据权利要求12所述的方法,其中,所述子复数矩阵中的至少两个存在重叠部分。
15.根据权利要求14所述的方法,进一步包括:标识所述重叠部分,以对所述重叠部分进行定位。
16.根据权利要求1和4-15中任意一项所述的方法,进一步包括:在所述片外存储单元中,根据所述子复数矩阵在所述二维复数矩阵中的坐标,逐行或逐列地存储所述子复数矩阵,以形成一维数组。
17.根据权利要求16所述的方法,其中,根据所述子复数矩阵在所述二维复数矩阵中的编号、子复数矩阵的尺寸以及元素在子复数矩阵中的绝对位置,来计算所述元素在所述一维数组中的位置。
18.根据权利要求17所述的方法,其中,计算所述元素在所述一维数组中的位置包括:
以所述子复数矩阵的编号乘以所述子复数矩阵的尺寸,再加上所述元素在所述子复数矩阵中的绝对位置。
19.根据权利要求1-18中任意一项所述的方法,其中,所述人工智能处理器利用所述片上存储单元中的子复数矩阵、子行系数矩阵和子列系数矩阵来进行傅里叶变换,以得到运算结果包括:
将所述子复数矩阵的每一行与所述子行系数矩阵的所有行进行卷积运算,以得到第一中间结果;
将所述第一中间结果的同一行元素相加,以得到第一运算结果;
将第一运算结果进行转置以得到转置结果,将所述转置结果的每一行与所述子列系数矩阵的所有行进行卷积运算,以得到第二中间结果;
将所述第二中间结果的同一行元素相加,以得到运算结果。
20.根据权利要求1-19中任意一项所述的方法,其中,所述子复数矩阵按照1×1×1×(n×m)的多维矩阵方式存储在所述第一存储单元中。
21.根据权利要求1-20中任意一项所述的方法,其中,所述傅里叶变换是并行进行的。
22.根据权利要求21所述的方法,其中,通过人工智能处理器对所述二维复数矩阵,所述行系数矩阵和列系数矩阵来进行傅里叶变换包括:
通过多个人工智能处理器分别对多个子复数矩阵、多个子行系数矩阵以及多个子列系数矩阵并行进行傅里叶变换。
23.根据权利要求21所述的方法,其中,通过人工智能处理器对所述二维复数矩阵,所述行系数矩阵和列系数矩阵来进行傅里叶变换包括:
通过多个人工智能处理器分别对每个子复数矩阵中的不同元素,以及与所述元素相对应的子行系数矩阵和子列系数中的系数元素进行傅里叶变换。
24.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-23中任意一项所述的方法。
25.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-23中任意一项所述的方法。
CN201911349811.1A 2019-12-24 2019-12-24 一种人工智能处理器处理二维复数矩阵的方法和设备 Active CN111028136B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911349811.1A CN111028136B (zh) 2019-12-24 2019-12-24 一种人工智能处理器处理二维复数矩阵的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911349811.1A CN111028136B (zh) 2019-12-24 2019-12-24 一种人工智能处理器处理二维复数矩阵的方法和设备

Publications (2)

Publication Number Publication Date
CN111028136A true CN111028136A (zh) 2020-04-17
CN111028136B CN111028136B (zh) 2023-04-07

Family

ID=70214164

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911349811.1A Active CN111028136B (zh) 2019-12-24 2019-12-24 一种人工智能处理器处理二维复数矩阵的方法和设备

Country Status (1)

Country Link
CN (1) CN111028136B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125628A (zh) * 2019-12-24 2020-05-08 上海寒武纪信息科技有限公司 人工智能处理器处理二维数据矩阵的方法和设备
CN111784557A (zh) * 2020-06-30 2020-10-16 安徽寒武纪信息科技有限公司 一种处理图像数据的方法、装置、板卡及可读存储介质
CN115221101A (zh) * 2021-04-16 2022-10-21 中科寒武纪科技股份有限公司 用于优化片上系统的矩阵乘操作的方法和相关产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060109891A1 (en) * 2004-11-24 2006-05-25 Nokia Corporation Reduced parallel and pipelined high-order MIMO LMMSE receiver architecture
CN103347189A (zh) * 2013-08-03 2013-10-09 程涛 基于dct和dft的二维压缩感知影像采集和重构方法
US20150199266A1 (en) * 2014-01-16 2015-07-16 Carnegie Mellon University 3dic memory chips including computational logic-in-memory for performing accelerated data processing
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060109891A1 (en) * 2004-11-24 2006-05-25 Nokia Corporation Reduced parallel and pipelined high-order MIMO LMMSE receiver architecture
CN103347189A (zh) * 2013-08-03 2013-10-09 程涛 基于dct和dft的二维压缩感知影像采集和重构方法
US20150199266A1 (en) * 2014-01-16 2015-07-16 Carnegie Mellon University 3dic memory chips including computational logic-in-memory for performing accelerated data processing
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
曹平等: "边界元法中线性方程组的拟波阵分块求解", 《计算力学学报》 *
闫河等: "复数Curvelet变换域复数高斯尺度混合图像降噪", 《信息与控制》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125628A (zh) * 2019-12-24 2020-05-08 上海寒武纪信息科技有限公司 人工智能处理器处理二维数据矩阵的方法和设备
CN111784557A (zh) * 2020-06-30 2020-10-16 安徽寒武纪信息科技有限公司 一种处理图像数据的方法、装置、板卡及可读存储介质
CN115221101A (zh) * 2021-04-16 2022-10-21 中科寒武纪科技股份有限公司 用于优化片上系统的矩阵乘操作的方法和相关产品
CN115221101B (zh) * 2021-04-16 2023-12-19 中科寒武纪科技股份有限公司 用于优化片上系统的矩阵乘操作的方法和相关产品

Also Published As

Publication number Publication date
CN111028136B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
CN111028136B (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
US10768894B2 (en) Processor, information processing apparatus and operation method for processor
CN112633490B (zh) 执行神经网络模型的数据处理装置、方法及相关产品
CN112416433B (zh) 一种数据处理装置、数据处理方法及相关产品
CN115221102B (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
WO2023045445A1 (zh) 数据处理装置、数据处理方法及相关产品
CN111125628A (zh) 人工智能处理器处理二维数据矩阵的方法和设备
CN110059797B (zh) 一种计算装置及相关产品
CN111124995A (zh) 通过人工智能处理器处理一维复数数组的方法和设备
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
CN112766473A (zh) 运算装置及相关产品
CN113469333B (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
WO2021082723A1 (zh) 运算装置
US20240303295A1 (en) Operation apparatus and related product
CN111291884B (zh) 神经网络剪枝方法、装置、电子设备及计算机可读介质
CN111382852B (zh) 数据处理装置、方法、芯片及电子设备
CN111124996A (zh) 通过人工智能处理器处理一维复数数组的方法和设备
CN111125627A (zh) 用于池化多维矩阵的方法及相关产品
CN113807489B (zh) 用于执行反卷积操作的方法、板卡及其计算装置
CN113792867B (zh) 运算电路、芯片和板卡
WO2022257980A1 (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
WO2023087698A1 (zh) 执行卷积运算的计算装置、方法及相关产品
WO2021082724A1 (zh) 运算方法及相关产品
US20230305840A1 (en) Computing apparatus, integrated circuit chip, board card, device and computing method
CN118277305A (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
GR01 Patent grant
GR01 Patent grant