CN116910437A - 矩阵转置装置、方法、ai处理器及计算机设备 - Google Patents
矩阵转置装置、方法、ai处理器及计算机设备 Download PDFInfo
- Publication number
- CN116910437A CN116910437A CN202311171547.3A CN202311171547A CN116910437A CN 116910437 A CN116910437 A CN 116910437A CN 202311171547 A CN202311171547 A CN 202311171547A CN 116910437 A CN116910437 A CN 116910437A
- Authority
- CN
- China
- Prior art keywords
- matrix
- transposed
- sub
- read
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 869
- 230000017105 transposition Effects 0.000 title claims abstract description 101
- 238000000034 method Methods 0.000 title claims abstract description 57
- 239000013001 matrix buffer Substances 0.000 claims abstract description 79
- 230000008569 process Effects 0.000 claims description 23
- 238000013473 artificial intelligence Methods 0.000 abstract description 13
- 238000012545 processing Methods 0.000 description 43
- 230000001276 controlling effect Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 9
- 239000013598 vector Substances 0.000 description 9
- 230000000875 corresponding effect Effects 0.000 description 8
- 210000002569 neuron Anatomy 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 210000000225 synapse Anatomy 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 1
- 238000010219 correlation analysis Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例公开了一种矩阵转置装置、方法、AI处理器及计算机设备,属于人工智能技术领域。包括:矩阵读取器、移位器、矩阵缓存器、转置器、矩阵写入器以及控制器;控制器,用于控制矩阵读取器从上级存储器中读取待转置矩阵的矩阵元素,矩阵读取器每次读取所述待转置矩阵中的至少一行矩阵元素;控制移位器对矩阵读取器读取到的矩阵元素进行数据移位,以及控制移位器将移位后的矩阵元素写入矩阵缓存器;控制转置器从矩阵缓存器中读取子矩阵,以及控制转置器对读取到的子矩阵进行转置处理,得到转置子矩阵,子矩阵包含待转置矩阵中的至少一列矩阵元素;控制矩阵写入器将转置器输出的转置子矩阵写入下级存储器。
Description
技术领域
本申请实施例涉及人工智能技术领域,特别涉及一种矩阵转置装置、方法、AI处理器及计算机设备。
背景技术
随着人工智能技术的发展,越来越多的AI技术被用于生活和生产中。
矩阵运算作为人工智能技术的基础被大量运用,而矩阵转置则是一种常见的矩阵运算。比如,在进行图像处理时,可以通过矩阵转置实现对图像的翻转操作;又比如,在进行信号处理时,可以通过矩阵转置实现快速傅里叶变换。
为了实现矩阵转置,需要在AI处理器中设置专门的矩阵转置装置,因此如何降低矩阵转置装置的设计复杂度,并减小片上电路面积成为提高AI处理器性能的关键。
发明内容
本申请实施例提供了一种矩阵转置装置、方法、AI处理器及计算机设备,能够降低矩阵转置运算的处理延迟。所述技术方案如下:
一方面,本申请实施例提供了一种矩阵转置装置,所述装置包括:
矩阵读取器、移位器、矩阵缓存器、转置器、矩阵写入器以及控制器;
所述控制器,用于控制所述矩阵读取器从上级存储器中读取待转置矩阵的矩阵元素,其中,所述矩阵读取器每次读取所述待转置矩阵中的至少一行矩阵元素;
所述控制器,用于控制所述移位器对所述矩阵读取器读取到的矩阵元素进行数据移位,以及控制所述移位器将移位后的矩阵元素写入所述矩阵缓存器;
所述控制器,用于控制所述转置器从所述矩阵缓存器中读取子矩阵,以及控制所述转置器对读取到的子矩阵进行转置处理,得到转置子矩阵,其中,所述子矩阵包含所述待转置矩阵中的至少一列矩阵元素;
所述控制器,用于控制所述矩阵写入器将所述转置器输出的所述转置子矩阵写入下级存储器。
另一方面,本申请实施例提供了一种矩阵转置方法,所述方法用于如上述方面所述的矩阵转置装置,所述方法包括:
控制器控制矩阵读取器从上级存储器中读取待转置矩阵的矩阵元素,其中,所述矩阵读取器每次读取所述待转置矩阵中的至少一行矩阵元素;
所述控制器控制移位器对所述矩阵读取器读取到的矩阵元素进行数据移位,以及控制所述移位器将移位后的矩阵元素写入矩阵缓存器;
所述控制器控制转置器从所述矩阵缓存器中读取子矩阵,以及控制所述转置器对读取到的子矩阵进行转置处理,得到转置子矩阵,其中,所述子矩阵包含所述待转置矩阵中的至少一列矩阵元素;
所述控制器控制矩阵写入器将所述转置器输出的所述转置子矩阵写入下级存储器。
在一些实施例中,所述控制器控制移位器对所述矩阵读取器读取到的矩阵元素进行数据移位,包括:
基于所述上级存储器的读接口位宽,以及所述待转置矩阵的矩阵参数,确定所述子矩阵的子矩阵列数;
基于所述子矩阵列数,确定所述矩阵读取器各次读取到的矩阵元素对应的移位步长;
基于所述移位步长,控制所述移位器对所述矩阵读取器读取到的矩阵元素进行数据右移。
在一些实施例中,所述基于所述上级存储器的读接口位宽,以及所述待转置矩阵的矩阵参数,确定所述子矩阵的子矩阵列数,包括:
在所述读接口位宽等于所述待转置矩阵的行矩阵元素位宽的情况下,将所述待转置矩阵的列行比向上取整结果确定为所述子矩阵列数,所述行矩阵元素位宽基于所述待转置矩阵的列数以及各个矩阵元素的比特数确定得到;
在所述读接口位宽大于所述待转置矩阵的行矩阵元素位宽的情况下,将所述读接口位宽与所述待转置矩阵的列矩阵元素位宽的比值的向上取整结果确定为所述子矩阵列数,所述列矩阵元素位宽基于所述待转置矩阵的行数以及各个矩阵元素的比特数确定得到。
在一些实施例中,所述方法还包括:
在所述读接口位宽等于所述待转置矩阵的所述行矩阵元素位宽,且所述列行比为大于1的非整数的情况下,所述控制器控制所述矩阵读取器在读取到的矩阵元素后进行填充;
在写入最后一个转置子矩阵的过程中,所述控制器控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,并将填充去除后所述转置子矩阵中的矩阵元素写入所述下级存储器。
在一些实施例中,所述控制器控制所述矩阵读取器在读取到的矩阵元素后进行填充,包括:
基于所述待转置矩阵的行数和列数确定填充列数;
基于所述填充列数控制所述矩阵读取器在读取到的矩阵元素后进行填充;
所述控制器控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,包括:
基于所述填充列数控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,其中,从所述转置子矩阵中去除的矩阵元素的行数与所述填充列数相同。
在一些实施例中,所述矩阵缓存器由若干内存bank构成;
所述控制器控制转置器从所述矩阵缓存器中读取子矩阵,包括:
控制所述移位器将移位后的矩阵元素写入所述矩阵缓存器中的多个内存bank;
基于所述子矩阵列数,控制所述转置器从所述矩阵缓存器的多个内存bank中并行读取所述子矩阵的矩阵元素。
在一些实施例中,所述控制所述转置器从所述矩阵缓存器的多个内存bank中并行读取所述子矩阵的矩阵元素,包括:
基于所述子矩阵列数确定各个内存bank的读取地址,所述内存bank的读取地址递增;
基于所述读取地址控制所述转置器从所述矩阵缓存器的多个内存bank中并行读取所述子矩阵的矩阵元素。
在一些实施例中,所述控制器控制转置器从所述矩阵缓存器中读取子矩阵之后,所述方法还包括:
基于所述子矩阵列数,控制所述转置器对所述子矩阵的矩阵元素进行数据左移。
在一些实施例中,所述转置器由多个多路选择器构成;
所述方法还包括:
所述控制器基于所述待转置矩阵的矩阵尺寸,配置所述转置器中的所述多路选择器的数据输出端;
所述转置器通过经过配置的所述多路选择器对所述子矩阵的矩阵元素进行选通输出,得到所述转置子矩阵。
在一些实施例中,所述转置器中多路选择器的数量与所述上级存储器的读接口位宽相匹配。
另一方面,本申请实施例提供了一种AI处理器,所述AI处理器包括如上述方面所述的矩阵转置装置。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括如上述方面所述的AI处理器以及存储器,所述AI处理器与所述存储器通过总线相连。
本申请实施例中,矩阵转置装置通过对矩阵读取器读取到的矩阵元素进行数据移位处理,对移位后存储在矩阵缓存器中的矩阵进行分块读取,得到包含待转置矩阵中至少一列矩阵元素的子矩阵,并对子矩阵进行转置,进而基于各个子矩阵对应的转置子矩阵得到待转置矩阵的转置结果,实现了沿矩阵列方向的矩阵转置,相较于沿矩阵对角线方向进行矩阵转置能够降低矩阵转置的处理延迟;此外,沿矩阵列方向进行矩阵转置时,由于每次从矩阵缓存器中提取出的矩阵元素的数量一致,因此同一矩阵只需要采用一种转置逻辑,有助于降低矩阵转置装置的设计复杂度,减小矩阵转置装置占用的片上面积。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例示出的沿矩阵对角线方向进行矩阵转置过程的实施示意图;
图2示出了本申请一个示例性实施例提供的矩阵转置装置的结构示意图;
图3是本申请一个示例性实施例示出的矩阵填充以及填充去除过程的实施示意图;
图4是本申请一个示例性实施例示出的矩阵元素右移过程的实施示意图;
图5是本申请一个示例性实施例示出的矩阵缓存器的结构示意图;
图6是本申请一个示例性实施例提供的矩阵转置过程的原理示意图;
图7是本申请一个示例性实施例示出的矩阵转置过程的实施示意图;
图8是本申请另一个示例性实施例示出的矩阵转置过程的实施示意图;
图9是本申请再一个示例性实施例示出的矩阵转置过程的实施示意图;
图10示出了本申请一个示例性实施例提供的矩阵转置方法的流程图;
图11示出了本申请一个示例性实施例提供的计算机设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应当理解的是,在本文中提及的“若干个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
由于神经网络中存储和处理是一体化的,而经典计算机结构中存储和处理时分离的(分别由存储器和运算器实现),因此采用经典计算机运行神经网络时,将不可避免的受到存储和处理分离式结构的制约,影响处理效率。为了提高神经网络的处理效率,神经网络处理器(Neural-Network Processing Units,NPU)(又被称为AI处理器)应运而生。其中,AI处理器通过电路来模拟神经元和突触结构,每个神经元被抽象为一个激励函数,该函数的输入由与其相连的神经元的输出以及连接神经元的突触共同决定。为了表达特定的知识,需要调整人工神经网络中突触的取值、网络的拓扑结构等,该过程称为“学习”,在学习之后,人工神经网络可通过习得的知识来解决特定的问题。
AI处理器在运行中需要进行大量矩阵运算,包括矩阵乘法、矩阵求逆、矩阵转置(transposition)等等。为了使AI处理器能够实现矩阵转置,相关技术中,AI处理器中会专门设置矩阵转置装置。
在一种可能矩阵转置方式中,矩阵转置装置沿矩阵对角线方向进行矩阵转置。如图1所示,在进行矩阵转置时,矩阵转置装置沿待转置矩阵的对角线方向,每次提取一组与对角线垂直的向量(由至少一个矩阵元素构成)。示意性的,图1所示的(a)中,提取到的向量中包含矩阵元素(0,0),图1所示的(b)中,提取到的向量中包含矩阵元素(0,1)和(1,0),图1所示的(c)中,提取到的向量中包含矩阵元素(0,2)、(1,1)和(2,0),图1所示的(d)中,提取到的向量中包含矩阵元素(0,3)、(1,2)、(2,1)和(3,0),以此类推。
进一步的,矩阵转置装置对读取到向量进行镜像反转,并将反转后的向量以读取时相同的方式写入存储器中。示意性的,图1所示的(a)中,矩阵转置装置将矩阵元素(0,0)写入存储器,图1所示的(b)中,矩阵转置装置将矩阵元素(1,0)和(0,1)写入存储器,图1所示的(c)中,矩阵转置装置将矩阵元素(2,0)、(1,1)和(0,2)写入存储器,图1所示的(d)中,矩阵转置装置将矩阵元素(3,0)、(2,1)(1,2)和(0,3)写入存储器,以此类推。
然而,采用上述方式进行矩阵转置时,矩阵处理的延迟大于矩阵写入的延迟,导致性能不佳。比如,对于图1所示的4×4矩阵,写入存储器需要4个时钟周期(逐行写入,共计写入四行),而沿对角线读取向量进行翻转则需要7个时钟周期才能够完成矩阵处理。因此,在进行连续多矩阵转置运算的场景中,上述方案的启动延迟大于矩阵存取延迟;而在进行矩阵逐一转置运算的场景中,采用上述方案会引起矩阵存取断流,导致数据带宽降低。
此外,由于每次沿对角线取出的矩阵元素的数量不同,因此同一尺寸的矩阵转置需要配置多种向量反转逻辑,增加了反转电路的设计复杂度,进而导致矩阵转置装置占用的片上面积增加。
不同于上述方案中沿矩阵对角线方向进行矩阵转置,本申请实施例提供了一种沿矩阵列方向进行转置的矩阵转置装置。通过对矩阵元素进行移位和分块处理,使矩阵转置装置每次对包含待转置矩阵中至少一列矩阵元素的子矩阵进行转置,进而基于各个子矩阵对应的转置子矩阵得到待转置矩阵的转置结果。相较于沿矩阵对角线方向进行矩阵转置,采用本申请实施例提供的矩阵转置装置能够达到与矩阵存取一致的延迟,即降低了矩阵转置的处理延迟;并且,由于每次沿矩阵列方向从矩阵缓存器中提取出的矩阵元素的数量一致,因此同一种长宽尺寸的矩阵在整个转置过程中只需要采用一种转置逻辑,有助于降低矩阵转置装置的设计复杂度,减小矩阵转置装置占用的片上面积。
本申请实施例提供的矩阵转置装置可以应用于如下场景:
1、人工智能芯片中神经网络的训练和推理过程,包括训练神经网络时的反向传播梯度的计算,神经网络推理过程的特定层矩阵运算等等。
2、图像处理过程。在图像处理应用中执行矩阵转置计算,比如通过转置实现图像翻转或轮换操作时,被表示为矩阵的数字图像可以通过转置运算生成数字图像的轮换或镜像图像。
3、信号处理过程。使用矩阵转置实现快速傅里叶变换(FFT)算法。
4、图网络中的关联性分析。社交网络或其它网络分析可以利用矩阵转置计算来确定网络中的节点之间的关系源,或者确定网络中的节点之间的关系模式。
请参考图2,其示出了本申请一个示例性实施例提供的矩阵转置装置的结构示意图。该矩阵转置装置包括:矩阵读取器210、移位器220、矩阵缓存器230、转置器240、矩阵写入器250以及控制器260。
其中,矩阵读取器210的输入端与上级存储器相连,矩阵读取器210的输出端与移位器220的输入端相连,移位器220的输出端与矩阵缓存器230的写入端相连,矩阵缓存器230的读取端与转置器240的输入端相连,转置器240的输出端与矩阵写入器250的输入端相连,矩阵写入器250的输出端与下级存储器相连。控制器260作为矩阵转置过程的控制端,分别与矩阵读取器210、移位器220、矩阵缓存器230、转置器240以及矩阵写入器250相连。
控制器260用于控制矩阵读取器210从上级存储器中读取待转置矩阵的矩阵元素,其中,矩阵读取器每次读取待转置矩阵中的至少一行矩阵元素。
其中,不同应用场景下,待转置矩阵中矩阵元素的含义可能不同。比如,待转置矩阵中的矩阵元素可以是图像中像素点在某一颜色通道下的颜色值,或者,可以是图网络中某一图节点的特征值,本申请实施例并不对待转置矩阵中矩阵元素的具体含义进行限定。
在一些实施例中,矩阵读取器210基于上级存储器的读接口位宽,每次读取上级存储器的一行数据(即一个burst)。由于待转置矩阵中每一行矩阵元素的总位宽可能小于或等于读接口位宽,因此矩阵读取器210每次读取到的一行数据中,包含待转置矩阵中的至少一行矩阵元素。比如,当待转置矩阵中每一行矩阵元素的总位宽等于读接口位宽时,每次读取到待转置矩阵中的一行矩阵元素;当待转置矩阵中每一行矩阵元素的总位宽为读接口位宽的1/2时,每次读取到待转置矩阵中的2行矩阵元素。
为了避免后续读取矩阵元素时出现bank(内存块)读冲突,在将读取到的矩阵元素写入矩阵缓存器之前,控制器260用于控制移位器220对矩阵读取器210读取到的矩阵元素进行数据移位,并控制移位器220将移位后的矩阵元素写入矩阵缓存器230。
可选的,该移位操作可以是向右进行的循环移位操作。比如,当读取到的矩阵元素为00,01,02,03,04,05时,向右进行1位循环移位操作后,得到的矩阵元素序列为05,00,01,02,03,04。
将移位后的矩阵元素写入矩阵缓存器后,原先在待转置矩阵中处于同一列的矩阵元素位于不同的bank中,因此后续读取待转置矩阵中一列或多列矩阵元素时,不会出现bank读冲突。
在一些实施例中,每一行读取到的矩阵元素的数据移位长度不同,且相邻两行矩阵元素各自对应数据移位长度的差值相同。比如,4行矩阵元素各自的数据移位长度分别为0,1,2,3。
在一些实施例中,矩阵缓存器230可以采用随机存取存储器(Static Random-Access Memory,SRAM)或者寄存器,本申请实施例对矩阵缓存器的具体类型并不进行限定。
当待转置矩阵完全写入矩阵缓存器230时,控制器260控制转置器240进行矩阵转置。
控制器260,用于控制转置器240从矩阵缓存器230中读取子矩阵,并控制转置器240对读取到的子矩阵进行转置处理,得到转置子矩阵,其中,子矩阵包含待转置矩阵中的至少一列矩阵元素。
在一些实施例中,待转置矩阵可以在列方向上被划分为若干尺寸一致的子矩阵(可能会涉及到矩阵填充),控制器260控制转置器240从矩阵缓存器230中读取子矩阵时,每次读取即读取到若干子矩阵中的一个子矩阵。
由于每次读取到的子矩阵的尺寸一致,因此转置器240可以采用一致的转置逻辑对各个子矩阵进行转置处理,得到转置子矩阵。
在一个示意性的例子中,当待转置矩阵的尺寸为8×8时,待转置矩阵可以沿列方向被划分为8个8×1的子矩阵,控制器260每次控制转置器240读取一个子矩阵,共读取到8个子矩阵。转置器240对各个子矩阵进行转置助理,得到尺寸为1×8的转置子矩阵。
进一步的,控制器260,用于控制矩阵写入器250将转置器240输出的转置子矩阵写入下级存储器。
在一些实施例中,转置器240每完成一次转置处理后,矩阵写入器250即将转置得到的转置子矩阵的矩阵元素写入下级存储器。矩阵写入器250将所有转置子矩阵写入下级存储器后,下级存储器中即存储待转置矩阵对应的转置矩阵。
以待转置矩阵的尺寸为8×8,且存储器读写该矩阵需要8个时钟周期为例,沿对角线方向进行矩阵转置时,矩阵转置需要经过15个时钟周期;而采用本申请实施例提供的矩阵转置装置沿列方向进行矩阵转置时,矩阵转置仅需要经过8个时钟周期,矩阵转置的效率更高,且与存储器的读写延迟一致,有助于提高性能,提高传输带宽。
此外,沿对角线方向进行矩阵转置时,由于每次读取到的矩阵元素数量为1至8个,因此需要设置8种反转逻辑;而采用本申请实施例提供的方案,由于每次读取到的子矩阵中矩阵元素的数量均为8个,因此只需要为转置器设置一种转置逻辑,降低了矩阵转置装置的设计复杂度,有助于降低矩阵转置装置占用的片上面积。
综上所述,本申请实施例中,矩阵转置装置通过对矩阵读取器读取到的矩阵元素进行数据移位处理,对移位后存储在矩阵缓存器中的矩阵进行分块读取,得到包含待转置矩阵中至少一列矩阵元素的子矩阵,并对子矩阵进行转置,进而基于各个子矩阵对应的转置子矩阵得到待转置矩阵的转置结果,实现了沿矩阵列方向的矩阵转置,相较于沿矩阵对角线方向进行矩阵转置能够降低矩阵转置的处理延迟;此外,沿矩阵列方向进行矩阵转置时,由于每次从矩阵缓存器中提取出的矩阵元素的数量一致,因此同一矩阵只需要采用一种转置逻辑,有助于降低矩阵转置装置的设计复杂度,减小矩阵转置装置占用的片上面积。
在一种将待转置矩阵划分为若干子矩阵的方式中,对于尺寸为N×M的待转置矩阵,该待转置矩阵被划为k个子矩阵,各个子矩阵中矩阵元素的总位宽大于等于读接口位宽,即单次转置处理的子矩阵中矩阵元素的总位宽大于等于读接口位宽,从而保证矩阵转置过程中无传输带宽损失。
关于子矩阵列数的确定方式,在一种可能的实施方式中,控制器基于上级存储器的读接口位宽,以及待转置矩阵的矩阵参数,确定子矩阵的子矩阵列数。
其中,待转置矩阵的矩阵参数包括待转置矩阵的行数、列数以及各个矩阵元素的比特数。
由于矩阵中的矩阵元素通常按照先行后列的方式存储在存储器中,因此当待转置矩阵的行矩阵元素位宽大于等于读接口位宽时,即可保证每次矩阵处理的矩阵元素的总位宽大于等于读接口位宽。
在一种可能的实施方式中,在读接口位宽等于待转置矩阵的行矩阵元素位宽的情况下,将待转置矩阵的列行比向上取整结果确定为子矩阵列数。
其中,行矩阵元素位宽基于待转置矩阵的列数以及各个矩阵元素的比特数确定得到。示意性的,对于N×M的待转置矩阵,行矩阵元素位宽=M(待转置矩阵的列数)×Element_size(矩阵元素的比特数)。
比如,当待转置矩阵的尺寸为8×8,且矩阵元素的比特数为128bit时,该待转置矩阵的行矩阵元素位宽即为1024bit。
当行矩阵元素位宽等于读接口位宽时,控制器确定k=ceiling[M/N],其中,ceilling为向上取整操作,即将待转置矩阵划分为N个子矩阵,各个子矩阵的尺寸为N×k。
相应的,划分得到的各个子矩阵中矩阵元素的总位宽即为N×k×Element_size,由于k≥M/N,且M×Element_size=read_port_width(读接口位宽),因此N×k×Element_size≥read_port_width。
在一个示意性的例子中,当待转置矩阵的行矩阵元素位宽为2048bit,且读接口位宽为2048bit时,若待转置矩阵的尺寸为8×8,则确定子矩阵列数为1,即各个子矩阵的尺寸为8×1;若待转置矩阵的尺寸为4×8,则确定子矩阵列数为2,即各个子矩阵的尺寸为4×2;若待转置矩阵的尺寸为6×8,则确定子矩阵列数为2,即各个子矩阵的尺寸为6×2。
在另一种可能的实施方式中,在读接口位宽大于待转置矩阵的行矩阵元素位宽的情况下,将读接口位宽与待转置矩阵的列矩阵元素位宽的比值的向上取整结果确定为子矩阵列数,列矩阵元素位宽基于待转置矩阵的行数以及各个矩阵元素的比特数确定得到。
其中,列矩阵元素位宽基于待转置矩阵的行数以及各个矩阵元素的比特数确定得到。示意性的,对于N×M的待转置矩阵,列矩阵元素位宽=N(待转置矩阵的列数)×Element_size(矩阵元素的比特数)。
比如,当待转置矩阵的尺寸为8×8,且矩阵元素的比特数为128bit时,该待转置矩阵的列矩阵元素位宽即为1024bit。
当行矩阵元素位宽等于读接口位宽时,控制器确定k= ceilling[read_port_width/(N*Element_size)],即将待转置矩阵划分为N个子矩阵,各个子矩阵的尺寸为N×k。
相应的,划分得到的各个子矩阵中矩阵元素的总位宽即为N×k×Element_size,由于k≥read_port_width/N*Element_size,因此N×k×Element_size≥read_port_width。
在一个示意性的例子中,当待转置矩阵的行矩阵元素位宽为1024bit,且读接口位宽为2048bit时,若待转置矩阵的尺寸为8×8(矩阵元素为128bit),则确定子矩阵列数为2,即各个子矩阵的尺寸为8×2。
为了保证各个子矩阵的尺寸一致,当N无法被M整除时,需要对待转置矩阵进行填充(padding)处理,相应的,后续向下级存储器中写入转置子矩阵时,需要进行填充去除。
示意性的,如图3所示,对于N×M的待转置矩阵,由于M无法整除N,因此矩阵读取器在读取到的矩阵元素后填充M’-M个矩阵元素,其中,M’=k*N。由于经过转置后得到的尺寸为M’×N,因此需要将转置后矩阵的最后M’-M行矩阵元素去除,还原得到M×N的矩阵。
在一种可能的实施方式中,在读接口位宽等于待转置矩阵的行矩阵元素位宽,且列行比为大于1的非整数的情况下,控制器控制矩阵读取器在读取到的矩阵元素后进行填充。
可选的,矩阵读取器在读取到的矩阵元素后填充0或者其他预设数据。
在一种可能的实施方式中,控制器基于待转置矩阵的行数和列数确定填充列数,从而基于填充列数控制矩阵读取器在读取到的矩阵元素后进行填充。
其中,填充列数为k×N-M。比如,当待转置矩阵的尺寸为6×8时,矩阵读取器每次读取到矩阵元素后,需要填充4列矩阵元素。
需要说明的是,矩阵读取器在读取矩阵元素的过程中随路填充,无需额外占用时长。
相应的,在写入最后一个转置子矩阵的过程中,控制器控制矩阵写入器对转置器输出的转置子矩阵进行填充去除,并将填充去除后转置子矩阵中的矩阵元素写入下级存储器。
由于子矩阵经过转置后,填充的列变为了行,因此矩阵写入器需要对最后一个转置子矩阵中的至少一行进行去除。需要说明的是,此处的去除并不是指特定去除操作,而是指矩阵写入器不将转置子矩阵中的特定行写入下级存储器。
在一种可能的实施方式中,控制器基于填充列数控制矩阵写入器对转置器输出的转置子矩阵进行填充去除,其中,从转置子矩阵中去除的矩阵元素的行数与填充列数相同。
去除的矩阵元素的行数与填充列数一致,即k×N-M。比如,当待转置矩阵的尺寸为6×8时,每一个子矩阵的尺寸为6×2,对应的转置子矩阵的尺寸为2×6。当写入最后一个转置子矩阵时,矩阵写入器需要去除转置子矩阵后的最后4行矩阵元素,从而将2×2的子矩阵写入下级存储器。
为了避免从矩阵缓存器中读取子矩阵时出现bank读冲突,在一种可能的实施方式中,控制器基于子矩阵的子矩阵列数,确定矩阵读取器各次读取到的矩阵元素对应的移位步长,从而基于移位步长,控制移位器对矩阵读取器读取到的矩阵元素进行数据右移。
在一种可能的实施方式中,对于矩阵读取器第n次读取到的矩阵元素,控制器确定该矩阵元素的移位步长为(n-1)×k,即第一次读取到的矩阵元素的移位步长为0,第二次读取到的矩阵元素的移位步长为k,第三次读取到的矩阵元素的移位步长为2k,以此类推。
通过上述移位处理后,原先位于待转置矩阵中同一列的矩阵元素被移动至不同列,以此避免从矩阵缓存器中读取子矩阵时出现bank读冲突。
示意性的,如图4所示,当待转置矩阵的行数为5,且子矩阵的子矩阵列数为k时,第一行矩阵元素右移0步长后写入了矩阵缓存器,第二行矩阵元素右移k步长后写入了矩阵缓存器,第三行矩阵元素右移2k步长后写入了矩阵缓存器,第四行矩阵元素右移3k步长后写入了矩阵缓存器,第五行矩阵元素右移4k步长后写入了矩阵缓存器。
在一种可能的设计中,矩阵缓存器有若干内存bank构成。
在一个示意性的例子中,如图5所示,矩阵缓存器中设置有2n个内存bank,且各个内存bank分别与写总线与写数据接口相连,通过读总线与读数据接口相连,通过地址总线与地址接口相连。因此,移位器可以通过写数据接口向不同内存bank中并行写入数据,转置器可以通过读数据接口从不同内存bank中并行读取数据。
关于将移位后矩阵元素写入矩阵缓存器的方式,在一种可能的实施方式中,在进行矩阵元素写入时,控制器用于控制移位器将移位后的矩阵元素写入矩阵缓存器中的多个内存bank;而在进行矩阵元素读取时,控制器用于基于子矩阵列数,控制转置器从矩阵缓存器的多个内存bank中并行读取子矩阵的矩阵元素。
在一些实施例中,控制器控制移位器将移位后不同的矩阵元素写入矩阵缓存器中不同内存bank。比如,当读取到一行8个矩阵元素时,移位器将8个矩阵元素分别写入8个内存bank中。
相应的,后续转置器从矩阵缓存器中读取一列矩阵元素时,转置器从8个内存bank中分别读取8个矩阵元素。
在一种可能的实施方式中,从不同内存bank中读取同一子矩阵中的矩阵元素时,控制器基于子矩阵列数确定各个内存bank的读取地址,其中,该内存bank的读取地址递增,且地址递增的递增量为k个矩阵元素的位宽。
示意性的,在读取第1个子矩阵时,转置器基于起始地址0从第1个内存bank读取矩阵元素,基于起始地址k×Element_size从第2个内存bank读取矩阵元素,基于起始地址2k×Element_size从第3个内存bank读取矩阵元素,以此类推。在读取第i个子矩阵时,转置器基于起始地址0从第i个内存bank读取矩阵元素,基于起始地址k×Element_size从第i+1个内存bank读取矩阵元素,基于起始地址2k×Element_size从第i+2个内存bank读取矩阵元素,以此类推。需要说明的是,当读取到存储矩阵元素的最后一个内存bank后,将会从第一个内存bank开始读取矩阵元素。
由于在向矩阵缓存器中写入矩阵元素时进行了数据移位,因此为了保证子矩阵中矩阵元素的顺序正确性,在一种可能的实施方式中,控制器还用于基于子矩阵列数,控制转置器对子矩阵的矩阵元素进行数据左移处理。
可选的,该矩阵元素左移的移位步长为(n-1)×k,即第一次读取到的矩阵元素左移0,第二次读取到的矩阵元素左移k,第三次读取到的矩阵元素的左移2k,以此类推。
示意性的,如图6所示,待转置矩阵被划分为成5×k子矩阵,将右移处理后的待转置矩阵完整写入矩阵缓存器后,第一步,转置器从矩阵缓存器中读取第一子矩阵中的矩阵元素,并对矩阵元素左移0步长,进而对第一子矩阵进行转置,得到由待转置矩阵中第1至第k列矩阵元素转置得到的k×5矩阵,并将第一个k×5矩阵的矩阵元素写入下级存储器。
第二步,转置器从矩阵缓存器中读取第二子矩阵中的矩阵元素,并对矩阵元素左移k步长,进而对第二子矩阵进行转置,得到由待转置矩阵中第k+1至第2k列矩阵元素转置得到的k×5矩阵,并将第二个k×5矩阵的矩阵元素写入下级存储器。
第三和第四步的过程与第二步类似(左移步长分别为2k和3k),本实施例不再赘述。
第五步,转置器从矩阵缓存器中读取第五子矩阵中的矩阵元素,并对矩阵元素左移4k步长,进而对第五子矩阵进行转置,得到由待转置矩阵中第4k+1至第5k列矩阵元素转置得到的k×5矩阵。由于k×5矩阵中存在填充数据,因此向下级存储器中写入前,需要基于读取时的填充列数,将第五个k×5矩阵的最后若干列去除,并将剩余矩阵元素写入下级存储器。
由于每次从矩阵缓存器中读取的矩阵元素的数量一致,因此同一待转置矩阵可以采用统一转置逻辑的转置器。在一种可能的设计中,转置器可以由多个多路选择器(multiplexer)构成。在对矩阵元素进行转置处理时,各个多路选择器只需要根据配置的数据输出端进行选通输出即可。
在一种可能的实施方式中,控制器用于基于待转置矩阵的矩阵尺寸,配置转置器中的多路选择器的数据输出端,而转置器则用于通过经过配置的多路选择器对子矩阵的矩阵元素进行选通输出,得到转置子矩阵。
其中,控制器为不同矩阵尺寸的待转置矩阵所配置的多路选择器选通逻辑不同。
比如,对于采用A类矩阵尺寸的待转置矩阵,控制器为其配置的多路选择器选通逻辑为数据输入端1选通数据输出端1,数据输入端2选通数据输出端2,数据输入端3选通数据输出端3;对于采用B类矩阵尺寸的待转置矩阵,控制器为其配置的多路选择器选通逻辑为数据输入端1选通数据输出端1,数据输入端2选通数据输出端3,数据输入端3选通数据输出端5,数据输入端4选通数据输出端7,数据输入端5选通数据输出端2,数据输入端6选通数据输出端4,数据输入端7选通数据输出端6,数据输入端8选通数据输出端8。
并且,由于每次进行转置子矩阵中矩阵元素的数量与上级存储器的读接口位宽相关,因此转置器中多路选择器的数量与上级存储器的读接口位宽相匹配。
在一些实施例中,多路选择器的数量与读接口位宽呈正相关关系。比如,当矩阵元素的比特数为32bit时,若读接口位宽为1024bit,则转置器中配置32个多路选择器,若读接口位宽为2048bit,则转置器中配置64个多路选择器。
结合上述实施例,下面采用示例性的例子对几种典型矩阵转置的过程进行说明。
1、待转置矩阵的行列数相等,且行矩阵元素位宽与上级存储器的读接口位宽相同。
以8×8矩阵为例,如图7所示,矩阵读取器每次读取待转置矩阵中的一行矩阵元素,以k=1为单位步长,对读取到的矩阵元素进行右移,即第一行矩阵元素右移0,第二行矩阵元素右移1,第三行矩阵元素右移2,以此类推,从而将数据移位后的待转置矩阵写入矩阵缓存器。
转置器从矩阵缓存器中读取第一个子矩阵中的矩阵元素,并对矩阵元素进行左移0处理,进而通过配置的转置逻辑,对矩阵元素进行转置处理,最终将转置得到的转置子矩阵的矩阵元素写入下级存储器。
类似的,转置器从矩阵缓存器中读取第二个子矩阵中的矩阵元素,并对矩阵元素进行左移1处理,进而通过配置的转置逻辑,对矩阵元素进行转置处理,最终将转置得到的转置子矩阵的矩阵元素写入下级存储器。
以此类推,转置器完成剩余6个子矩阵的转置,最终将转置后的8×8矩阵写入下级缓存器中。
2、待转置矩阵的行列数相等,但行矩阵元素位宽小于上级存储器的读接口位宽。
以8×8矩阵,且行矩阵元素位宽为1024bit,读接口位宽为2048bit为例,如图8所示,矩阵读取器每次读取待转置矩阵中的2行矩阵元素,以k=2为单位步长,对读取到的矩阵元素进行右移,即第一行矩阵元素右移0,第二行矩阵元素右移2,第三行矩阵元素右移4,以此类推,从而将数据移位后的待转置矩阵写入矩阵缓存器。
转置器从矩阵缓存器中读取第一个子矩阵中的矩阵元素,并对矩阵元素进行左移0处理,进而通过配置的转置逻辑,对矩阵元素进行转置处理,最终将转置得到的转置子矩阵的矩阵元素写入下级存储器。
类似的,转置器从矩阵缓存器中读取第二个子矩阵中的矩阵元素,并对矩阵元素进行左移2处理,进而通过配置的转置逻辑,对矩阵元素进行转置处理,最终将转置得到的转置子矩阵的矩阵元素写入下级存储器。
以此类推,转置器完成剩余2个子矩阵的转置,最终将转置后的8×8矩阵写入下级缓存器中。
3、待转置矩阵的行列数不相等(M为N整数倍),且行矩阵元素位宽等于上级存储器的读接口位宽。
以4×8矩阵为例,如图9所示,矩阵读取器每次读取待转置矩阵中的一行矩阵元素,以k=2为单位步长,对读取到的矩阵元素进行右移,即第一行矩阵元素右移0,第二行矩阵元素右移2,第三行矩阵元素右移4,以此类推,从而将数据移位后的待转置矩阵写入矩阵缓存器。
转置器从矩阵缓存器中读取第一个子矩阵中的矩阵元素,并对矩阵元素进行左移0处理,进而通过配置的转置逻辑,对矩阵元素进行转置处理,最终将转置得到的转置子矩阵的矩阵元素写入下级存储器。
类似的,转置器从矩阵缓存器中读取第二个子矩阵中的矩阵元素,并对矩阵元素进行左移2处理,进而通过配置的转置逻辑,对矩阵元素进行转置处理,最终将转置得到的转置子矩阵的矩阵元素写入下级存储器。
以此类推,转置器完成剩余2个子矩阵的转置,最终将转置后的8×4矩阵写入下级缓存器中。
需要说明的是,当M无法整除N时,在进行数据移位前需要进行额外的填充操作,且在进行最后一次转置子矩阵写入前,需要进行填充去除。比如,以4×7矩阵为例,进行数据移位前需要额外填充一列矩阵元素,在进行最后一次转置子矩阵写入前,需要将转置子矩阵的最后一行。
请参考图10,其示出了本申请一个示例性实施例提供的矩阵转置方法的流程图,该方法用于上述各个实施例提供的矩阵转置装置,该方法包括:
步骤1001,控制器控制矩阵读取器从上级存储器中读取待转置矩阵的矩阵元素,其中,矩阵读取器每次读取待转置矩阵中的至少一行矩阵元素。
步骤1002,控制器控制移位器对矩阵读取器读取到的矩阵元素进行数据移位,以及控制移位器将移位后的矩阵元素写入矩阵缓存器。
步骤1003,控制器控制转置器从矩阵缓存器中读取子矩阵,以及控制转置器对读取到的子矩阵进行转置处理,得到转置子矩阵,其中,子矩阵包含待转置矩阵中的至少一列矩阵元素。
步骤1004,控制器控制矩阵写入器将转置器输出的转置子矩阵写入下级存储器。
在一些实施例中,控制器控制移位器对矩阵读取器读取到的矩阵元素进行数据移位,包括:
基于上级存储器的读接口位宽,以及待转置矩阵的矩阵参数,确定子矩阵的子矩阵列数;
基于子矩阵列数,确定矩阵读取器各次读取到的矩阵元素对应的移位步长;
基于移位步长,控制移位器对矩阵读取器读取到的矩阵元素进行数据右移。
在一些实施例中,基于所述上级存储器的读接口位宽,以及待转置矩阵的矩阵参数,确定子矩阵的子矩阵列数,包括:
在读接口位宽等于待转置矩阵的行矩阵元素位宽的情况下,将待转置矩阵的列行比向上取整结果确定为子矩阵列数,行矩阵元素位宽基于待转置矩阵的列数以及各个矩阵元素的比特数确定得到;
在读接口位宽大于待转置矩阵的行矩阵元素位宽的情况下,将读接口位宽与待转置矩阵的列矩阵元素位宽的比值的向上取整结果确定为所述子矩阵列数,列矩阵元素位宽基于待转置矩阵的行数以及各个矩阵元素的比特数确定得到。
在一些实施例中,该方法还包括:
在读接口位宽等于所述待转置矩阵的行矩阵元素位宽,且列行比为大于1的非整数的情况下,控制器控制矩阵读取器在读取到的矩阵元素后进行填充;
在写入最后一个转置子矩阵的过程中,控制器控制矩阵写入器对转置器输出的转置子矩阵进行填充去除,并将填充去除后转置子矩阵中的矩阵元素写入下级存储器。
在一些实施例中,控制器控制矩阵读取器在读取到的矩阵元素后进行填充,包括:
基于待转置矩阵的行数和列数确定填充列数;
基于填充列数控制矩阵读取器在读取到的矩阵元素后进行填充;
控制器控制矩阵写入器对转置器输出的转置子矩阵进行填充去除,包括:
基于填充列数控制矩阵写入器对转置器输出的转置子矩阵进行填充去除,其中,从转置子矩阵中去除的矩阵元素的行数与填充列数相同。
在一些实施例中,矩阵缓存器由若干内存bank构成;
控制器控制转置器从矩阵缓存器中读取子矩阵,包括:
控制移位器将移位后的矩阵元素写入矩阵缓存器中的多个内存bank;
基于子矩阵列数,控制转置器从矩阵缓存器的多个内存bank中并行读取子矩阵的矩阵元素。
在一些实施例中,控制转置器从矩阵缓存器的多个内存bank中并行读取子矩阵的矩阵元素,包括:
基于子矩阵列数确定各个内存bank的读取地址,内存bank的读取地址递增;
基于读取地址控制转置器从矩阵缓存器的多个内存bank中并行读取子矩阵的矩阵元素。
在一些实施例中,控制器控制转置器从矩阵缓存器中读取子矩阵之后,该方法还包括:
基于子矩阵列数,控制转置器对子矩阵的矩阵元素进行数据左移。
在一些实施例中,转置器由多个多路选择器构成;
该方法还包括:
控制器基于待转置矩阵的矩阵尺寸,配置转置器中的多路选择器的数据输出端;
转置器通过经过配置的多路选择器对子矩阵的矩阵元素进行选通输出,得到转置子矩阵。
在一些实施例中,转置器中多路选择器的数量与上级存储器的读接口位宽相匹配。
矩阵转置装置进行矩阵转置的详细过程可以参考上述装置实施例,本实施例在此不作赘述。
在一些实施例中,本申请实施例中的矩阵转置装置可以集成在AI处理器中。
请参考图11,其示出了本申请一个示例性实施例提供的计算机设备1100的结构框图。其中,该计算机设备1100可以是便携式移动终端,比如:智能手机、平板电脑、动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III,MP3)播放器、动态影像专家压缩标准音频层面4(Moving Picture Experts Group Audio Layer IV,MP4)播放器。计算机设备1100还可能被称为用户设备、便携式终端、工作站、服务器等其他名称。
通常,计算机设备1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,处理器1101可以集成有上述实施例提供的矩阵转置装置。当处理器1101存在矩阵转置需求时,即可通过该矩阵转置装置进行转置运算。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是有形的和非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。
在一些实施例中,计算机设备1100还可选包括有外围设备接口1103和至少一个外围设备。
本领域技术人员可以理解,图11中示出的结构并不构成对计算机设备1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (19)
1.一种矩阵转置装置,其特征在于,所述装置包括:
矩阵读取器、移位器、矩阵缓存器、转置器、矩阵写入器以及控制器;
所述控制器,用于控制所述矩阵读取器从上级存储器中读取待转置矩阵的矩阵元素,其中,所述矩阵读取器每次读取所述待转置矩阵中的至少一行矩阵元素;
所述控制器,用于控制所述移位器对所述矩阵读取器读取到的矩阵元素进行数据移位,以及控制所述移位器将移位后的矩阵元素写入所述矩阵缓存器;
所述控制器,用于控制所述转置器从所述矩阵缓存器中读取子矩阵,以及控制所述转置器对读取到的子矩阵进行转置处理,得到转置子矩阵,其中,所述子矩阵包含所述待转置矩阵中的至少一列矩阵元素;
所述控制器,用于控制所述矩阵写入器将所述转置器输出的所述转置子矩阵写入下级存储器。
2.根据权利要求1所述的装置,其特征在于,所述控制器,用于:
基于所述上级存储器的读接口位宽,以及所述待转置矩阵的矩阵参数,确定所述子矩阵的子矩阵列数;
基于所述子矩阵列数,确定所述矩阵读取器各次读取到的矩阵元素对应的移位步长;
基于所述移位步长,控制所述移位器对所述矩阵读取器读取到的矩阵元素进行数据右移。
3.根据权利要求2所述的装置,其特征在于,所述控制器,用于:
在所述读接口位宽等于所述待转置矩阵的行矩阵元素位宽的情况下,将所述待转置矩阵的列行比向上取整结果确定为所述子矩阵列数,所述行矩阵元素位宽基于所述待转置矩阵的列数以及各个矩阵元素的比特数确定得到;
在所述读接口位宽大于所述待转置矩阵的行矩阵元素位宽的情况下,将所述读接口位宽与所述待转置矩阵的列矩阵元素位宽的比值的向上取整结果确定为所述子矩阵列数,所述列矩阵元素位宽基于所述待转置矩阵的行数以及各个矩阵元素的比特数确定得到。
4.根据权利要求3所述的装置,其特征在于,所述控制器,还用于:
在所述读接口位宽等于所述待转置矩阵的所述行矩阵元素位宽,且所述列行比为大于1的非整数的情况下,控制所述矩阵读取器在读取到的矩阵元素后进行填充;
在写入最后一个转置子矩阵的过程中,控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,并将填充去除后所述转置子矩阵中的矩阵元素写入所述下级存储器。
5.根据权利要求4所述的装置,其特征在于,所述控制器,用于:
基于所述待转置矩阵的行数和列数确定填充列数;
基于所述填充列数控制所述矩阵读取器在读取到的矩阵元素后进行填充;
所述控制器,还用于:
基于所述填充列数控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,其中,从所述转置子矩阵中去除的矩阵元素的行数与所述填充列数相同。
6.根据权利要求2所述的装置,其特征在于,所述矩阵缓存器由若干内存bank构成;
所述控制器,用于控制所述移位器将移位后的矩阵元素写入所述矩阵缓存器中的多个内存bank;
所述控制器,还用于基于所述子矩阵列数,控制所述转置器从所述矩阵缓存器的多个内存bank中并行读取所述子矩阵的矩阵元素。
7.根据权利要求6所述的装置,其特征在于,所述控制器,用于:
基于所述子矩阵列数确定各个内存bank的读取地址,所述内存bank的读取地址递增;
基于所述读取地址控制所述转置器从所述矩阵缓存器的多个内存bank中并行读取所述子矩阵的矩阵元素。
8.根据权利要求2所述的装置,其特征在于,所述控制器,还用于:
基于所述子矩阵列数,控制所述转置器对所述子矩阵的矩阵元素进行数据左移。
9.根据权利要求1所述的装置,其特征在于,所述转置器由多个多路选择器构成;
所述控制器,还用于基于所述待转置矩阵的矩阵尺寸,配置所述转置器中的所述多路选择器的数据输出端;
所述转置器,用于通过经过配置的所述多路选择器对所述子矩阵的矩阵元素进行选通输出,得到所述转置子矩阵。
10.根据权利要求9所述的装置,其特征在于,所述转置器中多路选择器的数量与所述上级存储器的读接口位宽相匹配。
11.一种矩阵转置方法,其特征在于,所述方法用于如权利要求1至10任一所述的矩阵转置装置,所述方法包括:
控制器控制矩阵读取器从上级存储器中读取待转置矩阵的矩阵元素,其中,所述矩阵读取器每次读取所述待转置矩阵中的至少一行矩阵元素;
所述控制器控制移位器对所述矩阵读取器读取到的矩阵元素进行数据移位,以及控制所述移位器将移位后的矩阵元素写入矩阵缓存器;
所述控制器控制转置器从所述矩阵缓存器中读取子矩阵,以及控制所述转置器对读取到的子矩阵进行转置处理,得到转置子矩阵,其中,所述子矩阵包含所述待转置矩阵中的至少一列矩阵元素;
所述控制器控制矩阵写入器将所述转置器输出的所述转置子矩阵写入下级存储器。
12.根据权利要求11所述的方法,其特征在于,所述控制器控制移位器对所述矩阵读取器读取到的矩阵元素进行数据移位,包括:
所述控制器基于所述上级存储器的读接口位宽,以及所述待转置矩阵的矩阵参数,确定所述子矩阵的子矩阵列数;
所述控制器基于所述子矩阵列数,确定所述矩阵读取器各次读取到的矩阵元素对应的移位步长;
所述控制器基于所述移位步长,控制所述移位器对所述矩阵读取器读取到的矩阵元素进行数据右移。
13.根据权利要求12所述的方法,其特征在于,所述控制器基于所述上级存储器的读接口位宽,以及待转置矩阵的矩阵参数,确定子矩阵的子矩阵列数,包括:
在所述读接口位宽等于所述待转置矩阵的行矩阵元素位宽的情况下,所述控制器将所述待转置矩阵的列行比向上取整结果确定为所述子矩阵列数,所述行矩阵元素位宽基于所述待转置矩阵的列数以及各个矩阵元素的比特数确定得到;
在所述读接口位宽大于所述待转置矩阵的行矩阵元素位宽的情况下,所述控制器将所述读接口位宽与所述待转置矩阵的列矩阵元素位宽的比值的向上取整结果确定为所述子矩阵列数,所述列矩阵元素位宽基于所述待转置矩阵的行数以及各个矩阵元素的比特数确定得到。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
在所述读接口位宽等于所述待转置矩阵的所述行矩阵元素位宽,且所述列行比为大于1的非整数的情况下,所述控制器控制所述矩阵读取器在读取到的矩阵元素后进行填充;
在写入最后一个转置子矩阵的过程中,所述控制器控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,并将填充去除后所述转置子矩阵中的矩阵元素写入所述下级存储器。
15.根据权利要求14所述的方法,其特征在于,所述控制器控制矩阵读取器在读取到的矩阵元素后进行填充,包括:
所述控制器基于所述待转置矩阵的行数和列数确定填充列数;
所述控制器基于所述填充列数控制所述矩阵读取器在读取到的矩阵元素后进行填充;
所述控制器控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,包括:
所述控制器基于所述填充列数控制所述矩阵写入器对所述转置器输出的所述转置子矩阵进行填充去除,其中,从所述转置子矩阵中去除的矩阵元素的行数与所述填充列数相同。
16.根据权利要求12所述的方法,其特征在于,所述方法还包括:
基于所述子矩阵列数,所述控制器控制所述转置器对所述子矩阵的矩阵元素进行数据左移。
17.根据权利要求11所述的方法,其特征在于,所述转置器由多个多路选择器构成;
所述方法还包括:
所述控制器基于所述待转置矩阵的矩阵尺寸,配置所述转置器中的所述多路选择器的数据输出端;
所述转置器通过经过配置的所述多路选择器对所述子矩阵的矩阵元素进行选通输出,得到所述转置子矩阵。
18.一种AI处理器,其特征在于,所述处理器包括如权利要求1至10任一所述的矩阵转置装置。
19.一种计算机设备,其特征在于,所述计算机设备包括如权利要求18所述的AI处理器以及存储器,所述AI处理器与所述存储器通过总线相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311171547.3A CN116910437B (zh) | 2023-09-12 | 2023-09-12 | 矩阵转置装置、方法、ai处理器及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311171547.3A CN116910437B (zh) | 2023-09-12 | 2023-09-12 | 矩阵转置装置、方法、ai处理器及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116910437A true CN116910437A (zh) | 2023-10-20 |
CN116910437B CN116910437B (zh) | 2023-12-12 |
Family
ID=88365377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311171547.3A Active CN116910437B (zh) | 2023-09-12 | 2023-09-12 | 矩阵转置装置、方法、ai处理器及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116910437B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508803A (zh) * | 2011-12-02 | 2012-06-20 | 南京大学 | 一种矩阵转置存储控制器 |
CN108446252A (zh) * | 2017-02-16 | 2018-08-24 | 谷歌有限责任公司 | 矩阵向量处理器中的转置 |
US20190042248A1 (en) * | 2018-03-30 | 2019-02-07 | Intel Corporation | Method and apparatus for efficient matrix transpose |
CN109408117A (zh) * | 2018-10-08 | 2019-03-01 | 京东方科技集团股份有限公司 | 矩阵转置装置及方法、显示装置 |
CN112149049A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于变换矩阵的装置和方法、数据处理系统 |
CN113986200A (zh) * | 2021-10-29 | 2022-01-28 | 上海阵量智能科技有限公司 | 矩阵转置电路及人工智能芯片、电子设备 |
CN116301727A (zh) * | 2021-12-03 | 2023-06-23 | 澜起科技股份有限公司 | 数据处理方法及加速单元 |
-
2023
- 2023-09-12 CN CN202311171547.3A patent/CN116910437B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508803A (zh) * | 2011-12-02 | 2012-06-20 | 南京大学 | 一种矩阵转置存储控制器 |
CN108446252A (zh) * | 2017-02-16 | 2018-08-24 | 谷歌有限责任公司 | 矩阵向量处理器中的转置 |
US20210165635A1 (en) * | 2017-02-16 | 2021-06-03 | Google Llc | Transposing in a matrix-vector processor |
US20190042248A1 (en) * | 2018-03-30 | 2019-02-07 | Intel Corporation | Method and apparatus for efficient matrix transpose |
CN109408117A (zh) * | 2018-10-08 | 2019-03-01 | 京东方科技集团股份有限公司 | 矩阵转置装置及方法、显示装置 |
CN112149049A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于变换矩阵的装置和方法、数据处理系统 |
CN113986200A (zh) * | 2021-10-29 | 2022-01-28 | 上海阵量智能科技有限公司 | 矩阵转置电路及人工智能芯片、电子设备 |
CN116301727A (zh) * | 2021-12-03 | 2023-06-23 | 澜起科技股份有限公司 | 数据处理方法及加速单元 |
Non-Patent Citations (1)
Title |
---|
吴沁文: "基于FPGA和DDR的高效率矩阵转置方法", 《现代雷达》, vol. 39, no. 4, pages 34 - 40 * |
Also Published As
Publication number | Publication date |
---|---|
CN116910437B (zh) | 2023-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659728B (zh) | 神经网络优化方法、装置、计算机设备及存储介质 | |
US12067480B2 (en) | Signal processing system and method | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CA3030428A1 (en) | Superpixel methods for convolutional neural networks | |
CN110516810B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
CN111353598B (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
US20200218777A1 (en) | Signal Processing Method and Apparatus | |
CN113673701A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN116910437B (zh) | 矩阵转置装置、方法、ai处理器及计算机设备 | |
CN113569193A (zh) | 用于神经网络模型的矩阵向量运算方法、设备及存储介质 | |
JP7251354B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
CN112712457A (zh) | 数据处理方法以及人工智能处理器 | |
CN112200310A (zh) | 智能处理器、数据处理方法及存储介质 | |
US11868875B1 (en) | Data selection circuit | |
CN112889072A (zh) | 用于降低功率消耗的系统、方法和装置 | |
CN111667046A (zh) | 深度学习加速方法及用户终端 | |
CN112132272B (zh) | 神经网络的计算装置、处理器和电子设备 | |
KR20240036594A (ko) | 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 | |
CN111291884B (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 | |
US11086634B2 (en) | Data processing apparatus and method | |
CN111723917B (zh) | 运算方法、装置及相关产品 | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
KR20210014897A (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 |
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 |