矩阵转置方法
未命名
09-22
阅读:91
评论:0

1.本技术涉及信息处理技术领域,特别是涉及一种矩阵转置方法。
背景技术:
2.通常,人工智能芯片在运行神经网络模型时,都需要把处理的数据矩阵化,然后在对矩阵进行运算,其中,矩阵运算中最基本的运算操作包括矩阵的转置。
3.相关技术,在进行矩阵的转置时,通常需要按照地址顺序读取矩阵数据,再寻址,之后转换地址输出矩阵转置数据,循环往复上述过程,实现对矩阵的转置操作。
4.然而,上述方法存在矩阵转置效率低,影响人工智能芯片的计算速度,导致人工智能芯片的计算效力较低。
技术实现要素:
5.基于此,有必要针对上述技术问题,提供一种能够提升人工智能芯片的计算速度,进而提升人工智能芯片的计算效力的矩阵转置方法。
6.第一方面,本技术提供了一种矩阵转置方法,该方法包括:
7.对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵;数据读写操作包括:
8.按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;
9.在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。
10.在其中一个实施例中,按照时钟顺序,依次控制多个移位寄存器从目标矩阵中读取数据,包括:
11.获取多个移位寄存器的读取顺序;
12.按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中的读取地址;
13.根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据。
14.在其中一个实施例中,获取多个移位寄存器的读取顺序包括:
15.根据芯片中存储单元的带宽确定多个移位寄存器的长度;各移位寄存器的长度均不相同;
16.将各移位寄存器的长度从大到小的顺序确定为多个移位寄存器的排序。
17.在其中一个实施例中,多个移位寄存器的数量与带宽相同,且各移位寄存器的长度依次递减;其中,各移位寄存器中的最小长度等于带宽加一,最大长度等于带宽的两倍。
18.在其中一个实施例中,按照时钟顺序和多个移位寄存器的读取顺序,获取每个移
位寄存器在目标矩阵中的读取地址,包括:
19.根据时钟顺序和多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取;
20.将目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟对应的移位寄存器的读取地址。
21.在其中一个实施例中,根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据,包括:
22.对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据;
23.控制移位寄存器读取目标数据。
24.在其中一个实施例中,控制各移位寄存器的最高位存储数据写入转置矩阵中,包括:
25.获取各移位寄存器的最高位存储数据,并将各移位寄存器的最高位存储数据进行组合,获取转置向量;
26.控制转置向量写入转置矩阵中。
27.在其中一个实施例中,控制转置向量写入转置矩阵中,包括:
28.获取转置向量在转置矩阵中的写入地址;
29.根据写入地址,控制转置向量写入转置矩阵中。
30.在其中一个实施例中,获取转置向量在转置矩阵中的写入地址,包括:
31.获取在对目标矩阵循环执行数据读写操作过程中,当前各移位寄存器均完成一次数据读取的次数;
32.根据次数确定转置向量在转置矩阵中的列地址;
33.将转置向量在转置矩阵中的列地址作为转置向量在转置矩阵中的写入地址。
34.在其中一个实施例中,矩阵转置方法还包括:
35.根据目标矩阵的尺寸和芯片中存储单元的带宽确定每个时钟的偏地址跳变步长;
36.在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,对时钟的基地址跳变一个地址。
37.第二方面,本技术还提供了一种矩阵转置装置,该装置包括:获取模块,获取模块包括读取单元和写入单元,其中:
38.获取模块,用于对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵;
39.读取单元,用于按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;
40.写入单元,用于在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。
41.第三方面,本技术还提供了一种计算机设备,该计算机设备包括存储器和处理器,
该存储器存储有计算机程序,该处理器执行计算机程序时实现上述第一方面中任一项实施例中的方法的步骤。
42.第四方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项实施例中的方法的步骤。
43.第五方面,本技术还提供了一种计算机程序产品,该计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项实施例中的方法的步骤。
44.上述矩阵转置方法对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵。其中,数据读写操作包括:按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。由于本技术在每个时钟下控制移位寄存器从目标矩阵中读取预设数量的数据的同时,还控制各移位寄存器中的已存储数据均向高位移动一位,并且还在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。相当于在利用移位寄存器进行矩阵转置的过程中,各移位寄存器在同时进行读取、移位和写入,这种流水线的读取和写入模式,避免各移位寄存器出现空闲状态的同时,贴合芯片流水线运行的特点,节省矩阵转置运算的时间。并且,本技术提供的矩阵转置方法中,移位寄存器从目标矩阵中读取数据的数量与多个移位寄存器的数量相同,那么,在各移位寄存器均完成一次数据读取的情况下,每个时钟下对应的移位寄存器读取数据的带宽,与该时钟下各移位寄存器输出的最高位存储数据的带宽是一致的,这种输入输出带宽一致的数据读写方式,便于芯片在写入转置矩阵过程中有规律地进行地址跳变,从而提升矩阵转置的写入效率。另外,通常情况下,芯片都是搭载于计算机设备中运行的,所以可以理解为,通过本技术实施例提供的矩阵转置方法在芯片内进行矩阵转置处理时,提高了这些矩阵的转置效率就相当于提高了芯片运行速度,从而也相当于提高了芯片所搭载的计算机设备的运行速度。
附图说明
45.图1为一个实施例中矩阵转置方法的应用环境图;
46.图2为一个实施例中矩阵转置方法的流程示意图;
47.图3为一个实施例中数据读取步骤的流程示意图;
48.图4为另一个实施例中数据读取步骤的流程示意图;
49.图5为另一个实施例中数据读取步骤的流程示意图;
50.图6为另一个实施例中数据读取步骤的流程示意图;
51.图7为一个实施例中数据写入步骤的流程示意图;
52.图8为另一个实施例中数据写入步骤的流程示意图;
53.图9为另一个实施例中数据写入步骤的流程示意图;
54.图10为另一个实施例中地址跳变的流程示意图;
55.图11为一个实施例中目标矩阵的流程示意图;
56.图12为一个实施例中数据读写操作的流程示意图;
57.图13为另一个实施例中地址跳变的流程示意图;
58.图14为一个实施例中矩阵转置装置的结构框图。
具体实施方式
59.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
60.本技术实施例提供的矩阵运算方法,可以应用于芯片上。该芯片可以是语音处理芯片、视频处理芯片、图像处理芯片等等人工智能芯片,其内部结构图可以如图1所示。该芯片包括处理器、存储器、输入/输出接口(input/output,简称i/o)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该芯片的处理器用于提供计算和控制能力。该芯片的存储器包括非易失性存储介质和移位存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该移位存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该芯片的数据库用于存储线程栈处理数据。该芯片的输入/输出接口用于处理器与外部设备之间交换信息。该芯片的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种矩阵处理方法。本领域技术人员可以理解,图1中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的芯片的限定,具体的芯片可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
61.随着人工智能技术的飞速发展,人工智能芯片被广泛应用于多个领域。由于人工智能芯片强大的数据计算能力,人工智能芯片执行的计算任务也越来越复杂。当人工智能芯片在运行神经网络模型时,需要把处理的数据矩阵化,然后在对矩阵进行运算,其中,矩阵运算中最基本的运算操作包括矩阵的转置。
62.在人工智能芯片中,通常采用连续模块地址的寻址方式,利用移位寄存器实现矩阵转置。相关技术中,采用阻塞式的矩阵转置方法,控制移位寄存器依据位宽大小,在当前时钟按照地址顺序执行数据读取操作,在当前时钟的下一时钟转换地址执行数据输出,循环往复上述过程,从而实现矩阵转置。
63.以移位寄存器读取数据的带宽为8位,矩阵a的大小为8
×
16为例,对阻塞式的矩阵转置方式进行说明:首先控制移位寄存器逐行读取矩阵a的8位数据;然后对矩阵a对应的转置矩阵b(16
×
8)进行地址寻址,并将读取的数据按列写入转置矩阵b中,直至将读取数据写入结束;接着控制移位寄存器读取矩阵a的下一行的8位数据,重复上述过程,直至矩阵a的数据全部被写入至转置矩阵b中,完成矩阵a的转置运算。
64.然而,上述阻塞式的矩阵转置方式中移位寄存器的读写无法同时进行,即移位寄存器的读取数据过程和输出数据过程需要在两个时钟内进行,也就无法兼容芯片内部的流水线工作模式。再者,阻塞式的矩阵转置方式在输出数据时,需要对按列输出的数据进行多次地址寻址,这样繁琐的寻址流程会导致矩阵转置时间过长。
65.基于此,本技术提供了一种非阻塞式的矩阵转置方法,通过设置各移位寄存器的长度以及数据读写方式,令芯片内各移位寄存器流水线读取数据和输出数据,快速实现矩阵转置,充分发挥芯片的计算效力,进而节省芯片的功耗。下面,通过一个实施例,对矩阵转
置方法进行说明。
66.在一个实施例中,如图2所示,提供了一种矩阵转置方法,以该方法应用于图1中的芯片为例进行说明,包括以下步骤:
67.对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵。
68.其中,本技术实施例中的芯片可以根据实际需求,应用在多个场景中,比如语音处理、视频处理、图像处理等。那么,根据应用场景的不同,本技术实施例中的芯片可以是语音处理芯片、视频处理芯片、图像处理芯片等。对应的,若芯片是语音处理芯片,则目标矩阵为基于语音信息得到的语音信息矩阵;若芯片是视频处理芯片,则目标矩阵为基于视频信息得到的语音信息矩阵;若芯片是图像处理芯片,则目标矩阵为基于图像信息得到的图像信息矩阵。本技术实施例对芯片的类型不作限制。
69.需要说明的是,本技术实施例中的芯片在进行矩阵转置时,不同于计算机随机寻址的方式,而是采用连续模块地址,直接对矩阵中的数据进行读取。通过将相邻地址单元的数据放在不同存储器,比如移位寄存器,结合各移位寄存器并行工作的模式,进行矩阵转置。
70.在获取目标矩阵的情况下,对目标矩阵执行转置操作,通过对目标矩阵中的数据同时进行读取数据、写入数据,结合芯片连续模块寻址的方式,循环对目标矩阵的数据进行读写。这样一来,目标矩阵中数据读取完毕的情况下,也就获取得到了目标矩阵的转置矩阵。
71.其中,数据读写操作包括:
72.s201,按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位。
73.本技术实施例中,将芯片中的多个移位寄存器作为一组,执行目标矩阵的转置运算,并且每个时钟下允许一个移位寄存器从目标矩阵中读取数据。按照时钟顺序,依次控制芯片中的多个移位寄存器中的一个移位寄存器从目标矩阵中读取数据,并且将读取数据存储至对应移位寄存器的最低位。
74.其中,不同的移位寄存器从目标矩阵中读取数据的数量是相同的,均为该组中多个移位寄存器的数量。比如芯片中的八个移位寄存器执行目标矩阵的矩阵转置操作,那么,每个时钟下对应的移位寄存器从目标矩阵中读取8个矩阵元素。
75.同时,在移位寄存器读取数据的过程中,在当前时钟下的移位寄存器进行数据读取的同时,若存在其他移位寄存器在当前时钟前读取过数据,即包括已存储数据,则控制其他移位寄存器中的已存储数据向高位移动一位。
76.仍以芯片中的八个移位寄存器执行目标矩阵的矩阵转置操作为例,若八个移位寄存器均未读取目标矩阵的数据,则在第一个时钟下对应的移位寄存器读取数据时,其他七个移位寄存器没有存储数据,也就不会存在数据向高位移动的情况;若八个移位寄存器均读取过目标矩阵的数据,则在当前时钟对应的移位寄存器读取数据时,其他七个移位寄存器均包括存储数据,那么在当前时钟下,各移位寄存器中的已存储数据也均向高位移动一位。
77.以八个移位寄存器为一组,对移位寄存器读取数据的过程进行说明:第一个时钟下,第一寄存器读取目标矩阵的八位数据,并将读取数据存储至第一寄存器低位;第二个时钟,第二寄存器读取并存储目标矩阵的八位数据,并将读取数据存储至第二寄存器低位,同时第一寄存器的已存储数据向高位移动一位;第三个时钟,第三移位寄存器读取目标矩阵的八位数据,并将读取数据存储至第三寄存器低位,同时第一寄存器的已存储数据继续向高位移动一位(第一寄存器向高位累计移动两位),第二寄存器的已存储数据向高位移动一位;第四个时钟,第四移位寄存器读取目标矩阵的八位数据,并将读取数据存储至第四寄存器低位,同时第一寄存器的已存储数据继续向高位移动一位(第一寄存器向高位累计移动三位),第二寄存器的已存储数据继续向高位移动一位(第二寄存器向高位累计移动三位);以此类推,第八个时钟,第八寄存器读取目标矩阵的八位数据,第一寄存器的已存储数据向高位累计移动七位,第二寄存器的已存储数据向高位累计移动六位,第三寄存器的已存储数据向高位累计移动五位,第四寄存器的已存储数据向高位累计移动四位,第五寄存器的已存储数据向高位累计移动三位,第六寄存器的已存储数据向高位累计移动两位,第七寄存器的已存储数据向高位累计移动一位。
78.s202,在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。
79.在各移位寄存器均完成一次数据读取的情况下,也就是每个移位寄存器都存储有目标矩阵的数据,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位的情况下,各移位寄存器中已存储数据均移动至最高位。此时,将各移位寄存器的最高位存储数据输出并写入转置矩阵中。
80.本技术实施例中,对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵。其中,数据读写操作包括:按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。由于本技术实施例在每个时钟下控制移位寄存器从目标矩阵中读取预设数量的数据的同时,还控制各移位寄存器中的已存储数据均向高位移动一位,并且还在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。相当于在利用移位寄存器进行矩阵转置的过程中,各移位寄存器在同时进行读取、移位和写入,这种流水线的读取和写入模式,避免各移位寄存器出现空闲状态的同时,贴合芯片流水线运行的特点,节省矩阵转置运算的时间。并且,本技术实施例提供的矩阵转置方法中,移位寄存器从目标矩阵中读取数据的数量与多个移位寄存器的数量相同,那么,在各移位寄存器均完成一次数据读取的情况下,每个时钟下对应的移位寄存器读取数据的带宽,与该时钟下各移位寄存器输出的最高位存储数据的带宽是一致的,这种输入输出带宽一致的数据读写方式,便于芯片在写入转置矩阵过程中有规律地进行地址跳变,从而提升矩阵转置的写入效率。通常情况下,以上述列举的语音处理芯片、视频处理芯片、图像处理芯片为例,任何一个场景中的芯片都是搭载于计算机设备中运行的,所以可以理解为,通过本技术实施例提供的矩阵转置方法在芯片内进行语音信息矩阵、语音信息矩阵或者图像信息矩阵中任何一个矩阵的转置处理时,提高了这些矩阵的转置效率就相当于提高了芯片运行速
度,从而也相当于提高了芯片所搭载的计算机设备的运行速度。
81.在芯片执行矩阵转置运算的过程中,需要在对目标矩阵进行数据读取的同时,进行转置矩阵的数据写入,从而提升矩阵转置运算的速度。基于此,下面通过一个实施例,对目标矩阵的数据读取步骤进行说明。
82.在一个实施例中,如图3所示,按照时钟顺序,依次控制多个移位寄存器从目标矩阵中读取数据,包括:
83.s301,获取多个移位寄存器的读取顺序。
84.对芯片中的多个移位寄存器进行组合,并按照一个时钟对应一个移位寄存器进行数据读取的规则,对多个移位寄存器进行排序,获取芯片中多个移位寄存器的读取顺序。
85.s302,按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中的读取地址。
86.其中,读取地址是各移位寄存器执行数据读取的依据,每个读取地址对应一组数据,移位寄存器根据读取地址,将该读取地址对应的数据读取并进行存储。
87.本技术实施例中,按照时钟顺序和多个移位寄存器的读取顺序,控制不同移位寄存器读取目标矩阵的不同行的数据,并且每个时钟下允许一个移位寄存器获取读取地址,以执行数据读取任务。在确定每个时钟下执行数据读取的移位寄存器的情况下,根据每个时钟下需要读取的目标矩阵的数据,确定每个时钟下移位寄存器在目标矩阵中的读取地址。
88.s303,根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据。
89.在获取各移位寄存器在目标矩阵中的读取地址之后,控制各移位寄存器按照对应的读取地址,从目标矩阵中读取数据,并以先入先出的方式,将读取数据存储至移位寄存器的低位。
90.本技术实施例中,在每个时钟下,控制移位寄存器按照读取地址,从目标矩阵中读取数据,相当于在读取数据的过程中,充分发挥了芯片连续模块地址的寻址方式的特点,令移位寄存器能够持续进行数据读取,支持芯片流水线运行的模式。
91.在进行数据读取的过程中,涉及芯片中的多个移位寄存器。本技术实施例中,每个时钟下允许一个移位寄存器执行数据读取,也就需要对多个移位寄存器进行排序,确定不同时钟下执行数据读取的移位寄存器。基于此,下面,通过一个实施例,对多个移位寄存器的读取顺序的获取步骤进行说明。
92.在一个实施例中,如图4所示,获取多个移位寄存器的读取顺序包括:
93.s401,根据芯片中存储单元的带宽确定多个移位寄存器的长度;各移位寄存器的长度均不相同。其中,多个移位寄存器的数量与带宽相同,且各移位寄存器的长度依次递减;各移位寄存器中的最小长度等于带宽加一,最大长度等于带宽的两倍。
94.根据芯片中存储单元的带宽,按照读写带宽相同的原则,设置多个移位寄存器的个数,并确定多个移位寄存器的长度。
95.将芯片中存储单元的带宽与多个移位寄存器的个数设置相同,可以保证在同一时钟下,多个移位寄存器向存储单元写入数据与存储单元的带宽一致。
96.根据芯片中存储单元的带宽确定多个不同长度的移位寄存器,且最小长度等于带
宽加一,最大长度等于带宽的两倍,可以保证多个移位寄存器均包括已存储数据的情况下,各移位寄存器在最高位的存储数据,分别对应目标数据的一列数据。
97.可选的,若存储单元的带宽为8b,则设置8个移位寄存器,移位寄存器的长度从9到16依次不同。假设每个数据为int8的数据,即1b。通过这样的设置方式,在各移位寄存器的最高位存在数据的情况下,每个时钟下,一个寄存器读取数据,即读取数据的带宽为8b,且8个移位寄存器的最高位数据同时写回,也是8b。
98.s402,将各移位寄存器的长度从大到小的顺序确定为多个移位寄存器的排序。
99.按照移位寄存器的长度从大到小的顺序,对芯片内的多个移位寄存器进行排序,获取多个移位寄存器的读取顺序。
100.可选的,若存储单元的带宽为8b,则设置8个移位寄存器,移位寄存器的长度从9到16依次不同。假设每个数据为int8的数据,即1b。则依次执行数据读取的寄存器的排序为:长度为16的移位寄存器、长度为15的移位寄存器、长度为14的移位寄存器、长度为13的移位寄存器、长度为12的移位寄存器、长度为11的移位寄存器、长度为10的移位寄存器、长度为9的移位寄存器。
101.本技术实施例中,根据存储单元的带宽,设置移位寄存器的个数的数量与带宽相同,相当于在数据写入的过程中,令多个移位寄存器向存储单元写入数据与存储单元的带宽相同。并且,将移位寄存器的最小长度设置为带宽加1,将移位寄存器的最大长度设置为带宽的两倍,相当于在数据读取的过程中,在一个移位寄存器读取目标矩阵的数据的同时,为其他移位寄存器进行移位,提供了预设的存储空间。因此,本技术实施例设置移位寄存器的个数以及移位寄存器长度的方式,保证数据读写过程中的读取数据的带宽与写入数据的带宽是相同的,能够充分发挥芯片的计算效力。
102.在获取芯片内多个移位寄存器的读取顺序之后,为每个移位寄存器分配读取地址,以进行数据读取。下面,通过一个实施例,对每个移位寄存器的读取地址的获取步骤进行说明:
103.在一个实施例中,如图5所示,按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中的读取地址,包括:
104.s501,根据时钟顺序和多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取。
105.按照每个时钟执行一个移位寄存器的数据读取的规则,将时钟顺序与多个移位寄存器的读取顺序进行匹配,获取每个时钟执行数据读取的移位寄存器。
106.仍以存储单元带宽为8b为例,设置8个长度范围为8~16区间内的不同的移位寄存器,且多个移位寄存器的读取顺序为各移位寄存器的长度从大到小的顺序为例。那么,在第一个时钟对应的移位寄存器的长度为16,第二个时钟对应的移位寄存器的长度为15,第三个时钟对应的移位寄存器的长度为14,第四个时钟对应的移位寄存器的长度为13,第五个时钟对应的移位寄存器的长度为12,第六个时钟对应的移位寄存器的长度为11,第七个时钟对应的移位寄存器的长度为10,第八个时钟对应的移位寄存器的长度为9,第九个时钟对应的移位寄存器的长度为16。
107.s502,将目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟
对应的移位寄存器的读取地址。
108.由于每个时钟对应一个移位寄存器进行数据读取,不同移位寄存器读取的数据为目标矩阵的不同行的数据,那么目标矩阵中数据的行地址就是移位寄存器的读取地址。将目标矩阵中的行顺序与时钟顺序匹配,对应的,将目标矩阵中的行地址作为对应时钟下移位寄存器的读取地址。
109.可选的,在第一个时钟,将目标矩阵中数据的第一行地址作为第一个时钟下移位寄存器的读取地址;在第二个时钟,将目标矩阵中数据的第二行地址作为第二个时钟下移位寄存器的读取地址;在第三个时钟,将目标矩阵中数据的第三行地址作为第三个时钟下移位寄存器的读取地址;以此类推,得到每个时钟对应的移位寄存器的读取地址。
110.本技术实施例中,在确定每个时钟对应的移位寄存器的基础上,根据目标矩阵的行顺序确定各时钟对应的移位寄存器的读取地址,由于行顺序是连续的,时钟顺序也是连续的,那么按照行顺序确定的各移位寄存器的读取地址也是连续。这样确定读取地址的方式,巧妙地利用了芯片连续模块地址的寻址方式,最大程度发挥了芯片的计算效力。
111.移位寄存器读取目标矩阵的一行数据,然而在移位寄存器的读取带宽小于目标矩阵中一行的元素的情况下,需要移位寄存器多次读取数据,以获取目标矩阵的一行完整的数据。基于此,下面通过一个实施例,对移位寄存器根据读取地址,读取目标矩阵中的数据的步骤进行说明。
112.在一个实施例中,如图6所示,根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据,包括:
113.s601,对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据。
114.需要说明的是,一个读取地址对应的数据带宽与移位寄存器的读取带宽是一致的,也就是说一个读取地址对应的是目标矩阵中一行的多个数据。比如读取带宽为8b,目标矩阵中一个数据为1b,那么一个读取地址对应的数据就是目标矩阵中一行连续的8个数据。
115.对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址,将读取地址对应的目标矩阵中的一组数据,确定为移位寄存器读取的目标数据。
116.s602,控制移位寄存器读取目标数据。
117.在确定移位寄存器读取的目标数据的情况下,将目标矩阵中的读取地址作为目标数据的读取地址,控制移位寄存器按照目标矩阵的读取地址从目标矩阵中读取目标数据。
118.本技术实施例中,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据,控制移位寄存器按照读取地址,从目标矩阵中读取目标数据,设计逻辑清晰,且易于实现。
119.在芯片执行矩阵转置运算的过程中,需要在对目标矩阵进行数据读取的同时,进行转置矩阵的数据写入。前述实施例对目标矩阵的数据读取步骤进行了说明,基于此,下面通过一个实施例,对转置矩阵的数据写入步骤进行说明。
120.在一个实施例中,如图7所示,控制各移位寄存器的最高位存储数据写入转置矩阵中,包括:
121.s701,获取各移位寄存器的最高位存储数据,并将各移位寄存器的最高位存储数据进行组合,获取转置向量。
122.在各所述移位寄存器均完成一次数据读取的情况下,各移位寄存器的最高位均存储有目标矩阵的数据,且各移位寄存器的最高位数据分别对应目标矩阵同一列的数据,将各移位寄存器的最高位存储数据以行的形式进行组合,并将该组合作为当前时钟各移位寄存器输出的转置向量。
123.s702,控制转置向量写入转置矩阵中。
124.由于转置向量是在目标矩阵中以列的形式进行存储的,那么对目标矩阵进行转置,需要将转置向量以行的形式写入转置矩阵中。
125.本技术实施例中,在获取各移位寄存器的最高位存储数据的基础上,将各移位寄存器的最高位存储数据组合生成转置向量,并控制转置向量以行的形式存储至转置矩阵中,实现了目标矩阵的转置运算。
126.与目标矩阵的数据读取过程,需要获取读取地址的方式类似,在转置矩阵的数据写入过程中,也需要以写入地址为依据,进行转置矩阵的数据写入。基于此,下面通过一个实施例,对转置矩阵的数据写入步骤进行说明。
127.在一个实施例中,如图8所示,控制转置向量写入转置矩阵中,包括:
128.s801,获取转置向量在转置矩阵中的写入地址。
129.其中,写入地址是各移位寄存器最高位存储数据写入转置矩阵的依据,每一个写入地址对应的是转置矩阵中一行连续的多个数据。可选的,根据转置向量在转置矩阵中的位置确定转置向量在转置矩阵中的写入地址。
130.s802,根据写入地址,控制转置向量写入转置矩阵中。
131.控制多个移位寄存器按照写入地址,将转置向量写入转置矩阵中。
132.本技术实施例中,根据转置向量在转置矩阵中的位置,获取转置向量在转置矩阵中的写入地址,并根据写入地址,将各移位寄存器中的最高位存储数据写入转置矩阵,实现对目标矩阵的转置。
133.下面,通过一个实施例,对前述实施例中“获取转置向量在转置矩阵中的写入地址”的一种可实现的方式进行说明,如图9所示,获取转置向量在转置矩阵中的写入地址,包括:
134.s901,获取在对目标矩阵循环执行数据读写操作过程中,当前各移位寄存器均完成一次数据读取的次数。
135.在对目标矩阵循环执行数据读写操作过程中,监测各移位寄存器均完成一次数据读取的次数,并根据次数确定转置向量在转置矩阵中的行位置,并将转置向量在转置矩阵中的行地址作为转置向量在转置矩阵中的写入地址。
136.s902,根据次数确定转置向量在转置矩阵中的行地址。
137.示例性地,当前移位寄存器均完成一次数据读取,转置向量是目标矩阵的第一列数据,那么转置矩阵中的第一行地址就是转置向量在转置矩阵中的行地址。
138.s903,将转置向量在转置矩阵中的行地址作为转置向量在转置矩阵中的写入地址。
139.本技术实施例中,根据移位寄存器均完成一次数据读取的次数,确定转置向量在转置矩阵中的行地址,进而确定转置向量在转置矩阵中的写入地址,由于芯片中,无论是目标矩阵还是转置矩阵,都是按行进行存储的,因此本技术提供的写入地址的确认方式,只需
要进行一次寻址,即可将转置向量写入转置矩阵中,提升了芯片的运算效力。
140.在矩阵转置过程中,数据读写操作是以读取地址和写入地址为依据,读取目标矩阵的数据,并根据转置后的写入地址,将目标矩阵的数据写入转置矩阵中。本技术实施例中,芯片获取的读取地址和写入地址,采用基地址加偏地址的方式,通过规律性地地址跳变,对目标矩阵执行转置运算。基于此,下面通过一个实施例,对矩阵转置方法中的地址生成方式进行说明。
141.在一个实施例中,如图10所示,矩阵转置方法还包括:
142.s1001,根据目标矩阵的尺寸和芯片中存储单元的带宽确定每个时钟的偏地址跳变步长。
143.在数据读取过程中,读取地址包括基地址和偏地址,获取目标矩阵的宽度和芯片中存储单元的带宽,并将目标矩阵的宽度与芯片中存储单元的带宽的比值,作为每个时钟读取地址中偏地址的跳变步长。
144.在数据写入过程中,读取地址包括基地址和偏地址,获取目标矩阵的高度和芯片中存储单元的带宽,并将目标矩阵的高度与芯片中存储单元的带宽的比值,作为每个时钟读取地址中偏地址的跳变步长。
145.示例性地,在目标矩阵的尺寸为h(高)
×
w(宽),存储单元按行存储的情况下,若存储单元的带宽为8b,即存储单元每8b为一个连续的地址单元,那么每个时钟的读取地址的偏地址跳变步长为ceil(w/8)、每个时钟的写入地址的偏地址跳变步长为ceil(h/8)。其中,ceil()表示向上取整的操作。
146.s1002,在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,对时钟的基地址跳变一个地址。
147.在数据读取操作过程中,针对任一个时钟,根据读取地址中偏地址的跳变步长,读取地址的偏地址在目标矩阵的行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,读取地址的基地址跳变一个地址。
148.在数据写入操作过程中,针对任一个时钟,根据写入地址中偏地址的跳变步长,写入地址的偏地址在转置矩阵的行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,写入地址的基地址跳变一个地址。
149.本技术实施例中,在对目标矩阵循环执行数据读写操作过程中,读取地址和写入地址均是连续的地址,便于每个时钟按照地址存储规律实现地址跳变。
150.在一个实施例中,以图11所示的目标矩阵为例,对矩阵转置方法进行说明,图11所示的目标矩阵尺寸(w
×
h)为64
×
16,目标矩阵的每一个数据大小为1b,若存储单元的带宽为8b,则设置8个移位寄存器,且8个移位寄存器的长度从16~9依次递减,如图12所示。图12为8个移位寄存器对目标矩阵进行转置运算的读写过程示意图。
151.由图12可知,在第一个时钟,由第一寄存器读取目标矩阵中的第一行的八个数据,并存储至第一寄存器的低八位;第二个时钟,由第二寄存器读取目标矩阵中的第二行的八个数据,并存储至第二寄存器的低八位,且第一寄存器的已存储数据向左移动一位;第三个时钟,由第三寄存器读取目标矩阵中的第三行的八个数据,并存储至第三寄存器的低八位,且第一寄存器的已存储数据继续向左移动一位(第一寄存器的已存储数据累计移动两位),
第二寄存器的已存储数据向左移动一位;依次类推,第八个时钟,由第八寄存器读取目标矩阵中的第八行的八个数据,并存储至第八寄存器的低八位,且第一寄存器的已存储数据累计向高位移动七位,第二寄存器的已存储数据累计向高位移动六位,第三寄存器的已存储数据累计向高位移动五位,第四寄存器的已存储数据累计向高位移动四位,第五寄存器的已存储数据累计向高位移动三位,第六寄存器的已存储数据累计向高位移动两位,第七寄存器的已存储数据累计向高位移动一位,由于第一寄存器的长度到第八寄存器的长度为16~9依次递减,那么在第九个时钟,由第一寄存器读取目标矩阵中第一行的第九列数据至第十五列数据的八个数据,且所有寄存器的已存储数据均移动至最高位,输出各移位寄存器的最高位数据,也就是目标矩阵第一列的八个数据,在第十个时钟,由第二寄存器读取目标矩阵中第二行的第九列数据至第十五列数据的八个数据,且所有寄存器的已存储数据均移动至最高位,输出各移位寄存器的最高位数据,也就是目标矩阵第二列的八个数据。也就是说,在经过八个时钟之后,目标矩阵的数据可以在读取的同时,进行数据写入,实现了流水式(非阻塞式)的数据读写操作。并且,每次读取数据的带宽与数据写入的带宽均为8b,实现了读写地址相同。
152.与图12所示的读写操作相对应,本技术还对应设计了一套地址生成系统,采用基地址+偏地址的方式,为数据的读取提供依据。如图13所示,图13为第八个时钟之后,数据写入地址的跳变方式的示意图。在第九个时钟,将各移位寄存器的最高位存储数据,以行的形式写入转置矩阵中,当写入地址的偏地址在转置矩阵的行方向跳变完毕,写入地址的基地址跳变一个地址。
153.本技术实施例中,结合图11~图13,对目标矩阵的转置运算进行说明,根据上述运算过程,本技术实施例提供的技术方案的优势包括以下三个方面:
154.(1)、在数据读取带宽不变的情况下,利用移位寄存器实现矩阵转置时,流水线读取和输出,贴合芯片流水线运行的本质,可以更快速地实现矩阵转置,充分发挥芯片的计算效率和效力,同时节省功耗。
155.(2)、在地址寻址方面,本技术实施例提供的矩阵转置方法输入输出带宽匹配,且输出数据地址相连,便于按照地址存储规律实现地址跳变。
156.(3)、本技术实施例能够快速实现矩阵的转置运算,为后续芯片实现矩阵其他运算(比如矩阵乘法)提供了基础。
157.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
158.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的矩阵转置方法的矩阵转置装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个矩阵转置装置实施例中的具体限定可以参见上文中对于矩阵转置方法的限定,在此不再赘述。
159.在一个实施例中,如图14所示,提供了一种矩阵转置装置1400,包括:获取模块1401,获取模块1401包括读取单元和写入单元,其中:
160.获取模块1401,用于对目标矩阵循环执行数据读写操作,直至所述目标矩阵中数据读取完毕,得到所述目标矩阵的转置矩阵;
161.读取单元,用于按照时钟顺序,依次控制芯片中的多个移位寄存器从所述目标矩阵中读取预设数量的数据;所述预设数量与所述多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;
162.写入单元,用于在各所述移位寄存器均完成一次数据读取的情况下,控制各所述移位寄存器的最高位存储数据写入所述转置矩阵中。
163.在一个实施例中,读取单元包括:顺序读取子单元、地址获取子单元和数据读取子单元,其中:
164.顺序读取子单元,用于获取多个移位寄存器的读取顺序;
165.地址获取子单元,用于按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中的读取地址;
166.数据读取子单元,用于根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据。
167.在一个实施例中,顺序读取子单元,还用于根据芯片中存储单元的带宽确定多个移位寄存器的长度;各移位寄存器的长度均不相同;将各移位寄存器的长度从大到小的顺序确定为多个移位寄存器的排序。
168.在一个实施例中,多个移位寄存器的数量与带宽相同,且各移位寄存器的长度依次递减。其中,各移位寄存器中的最小长度等于带宽加1,最大长度等于带宽的两倍。
169.在一个实施例中,地址获取子单元,还用于根据时钟顺序和多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取;将目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟对应的移位寄存器的读取地址。
170.在一个实施例中,数据读取子单元,还用于对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据;控制移位寄存器读取目标数据。
171.在一个实施例中,写入单元,包括:向量获取子单元和向量写入子单元,其中:
172.向量获取子单元,用于获取各移位寄存器的最高位存储数据,并将各移位寄存器的最高位存储数据进行组合,获取转置向量;
173.向量写入子单元,用于控制转置向量写入转置矩阵中。
174.在一个实施例中,向量写入子单元,还用于获取转置向量在转置矩阵中的写入地址;根据写入地址,控制转置向量写入转置矩阵中。
175.在一个实施例中,向量写入子单元,还用于获取在对目标矩阵循环执行数据读写操作过程中,当前各移位寄存器均完成一次数据读取的次数;根据次数确定转置向量在转置矩阵中的列地址;将转置向量在转置矩阵中的列地址作为转置向量在转置矩阵中的写入地址。
176.在一个实施例中,矩阵转置装置1400,还包括确定模块和跳变模块,其中:
177.确定模块,用于根据目标矩阵的尺寸和芯片中存储单元的带宽确定每个时钟的偏地址跳变步长;
178.跳变模块,用于在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,对时钟的基地址跳变一个地址。
179.上述矩阵转置装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
180.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
181.对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵;数据读写操作包括:
182.按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;
183.在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。
184.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
185.获取多个移位寄存器的读取顺序;
186.按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中的读取地址;
187.根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据。
188.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
189.根据芯片中存储单元的带宽确定多个移位寄存器的长度;各移位寄存器的长度均不相同;
190.将各移位寄存器的长度从大到小的顺序确定为多个移位寄存器的排序。
191.在一个实施例中,多个移位寄存器的数量与带宽相同,且各移位寄存器的长度依次递减;其中,各移位寄存器中的最小长度等于带宽加一,最大长度等于带宽的两倍。
192.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
193.根据时钟顺序和多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取;
194.将目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟对应的移位寄存器的读取地址。
195.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
196.对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据;
197.控制移位寄存器读取目标数据。
198.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
199.获取各移位寄存器的最高位存储数据,并将各移位寄存器的最高位存储数据进行组合,获取转置向量;
200.控制转置向量写入转置矩阵中。
201.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
202.获取转置向量在转置矩阵中的写入地址;
203.根据写入地址,控制转置向量写入转置矩阵中。
204.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
205.获取在对目标矩阵循环执行数据读写操作过程中,当前各移位寄存器均完成一次数据读取的次数;
206.根据次数确定转置向量在转置矩阵中的列地址;
207.将转置向量在转置矩阵中的列地址作为转置向量在转置矩阵中的写入地址。
208.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
209.根据目标矩阵的宽度和芯片中存储单元的尺寸确定每个时钟的偏地址跳变步长;
210.在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,对时钟的基地址跳变一个地址。
211.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
212.对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵;数据读写操作包括:
213.按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;
214.在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。
215.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
216.获取多个移位寄存器的读取顺序;
217.按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中的读取地址;
218.根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据。
219.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
220.根据芯片中存储单元的带宽确定多个移位寄存器的长度;各移位寄存器的长度均不相同;
221.将各移位寄存器的长度从大到小的顺序确定为多个移位寄存器的排序。
222.在一个实施例中,多个移位寄存器的数量与带宽相同,且各移位寄存器的长度依次递减;其中,各移位寄存器中的最小长度等于带宽加一,最大长度等于带宽的两倍。
223.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
224.根据时钟顺序和多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取;
225.将目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟对应的移位寄存器的读取地址。
226.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
227.对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据;
228.控制移位寄存器读取目标数据。
229.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
230.获取各移位寄存器的最高位存储数据,并将各移位寄存器的最高位存储数据进行组合,获取转置向量;
231.控制转置向量写入转置矩阵中。
232.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
233.获取转置向量在转置矩阵中的写入地址;
234.根据写入地址,控制转置向量写入转置矩阵中。
235.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
236.获取在对目标矩阵循环执行数据读写操作过程中,当前各移位寄存器均完成一次数据读取的次数;
237.根据次数确定转置向量在转置矩阵中的列地址;
238.将转置向量在转置矩阵中的列地址作为转置向量在转置矩阵中的写入地址。
239.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
240.根据目标矩阵的尺寸和芯片中存储单元的带宽确定每个时钟的偏地址跳变步长;
241.在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,对时钟的基地址跳变一个地址。
242.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
243.对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵;数据读写操作包括:
244.按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;
245.在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。
246.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
247.获取多个移位寄存器的读取顺序;
248.按照时钟顺序和多个移位寄存器的读取顺序,获取每个移位寄存器在目标矩阵中
的读取地址;
249.根据每个移位寄存器在目标矩阵中的读取地址,控制各移位寄存器从目标矩阵中读取数据。
250.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
251.根据芯片中存储单元的带宽确定多个移位寄存器的长度;各移位寄存器的长度均不相同;
252.将各移位寄存器的长度从大到小的顺序确定为多个移位寄存器的排序。
253.在一个实施例中,多个移位寄存器的数量与带宽相同,且各移位寄存器的长度依次递减;其中,各移位寄存器中的最小长度等于带宽加一,最大长度等于带宽的两倍。
254.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
255.根据时钟顺序和多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取;
256.将目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟对应的移位寄存器的读取地址。
257.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
258.对于任一移位寄存器,根据移位寄存器在目标矩阵中的读取地址确定移位寄存器对应的目标数据;
259.控制移位寄存器读取目标数据。
260.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
261.获取各移位寄存器的最高位存储数据,并将各移位寄存器的最高位存储数据进行组合,获取转置向量;
262.控制转置向量写入转置矩阵中。
263.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
264.获取转置向量在转置矩阵中的写入地址;
265.根据写入地址,控制转置向量写入转置矩阵中。
266.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
267.获取在对目标矩阵循环执行数据读写操作过程中,当前各移位寄存器均完成一次数据读取的次数;
268.根据次数确定转置向量在转置矩阵中的列地址;
269.将转置向量在转置矩阵中的列地址作为转置向量在转置矩阵中的写入地址。
270.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
271.根据目标矩阵的尺寸和芯片中存储单元的带宽确定每个时钟的偏地址跳变步长;
272.在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在偏地址跳变完毕的情况下,对时钟的基地址跳变一个地址。
273.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
274.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
275.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
技术特征:
1.一种矩阵转置方法,其特征在于,所述方法包括:对目标矩阵循环执行数据读写操作,直至所述目标矩阵中数据读取完毕,得到所述目标矩阵的转置矩阵;所述数据读写操作包括:按照时钟顺序,依次控制芯片中的多个移位寄存器从所述目标矩阵中读取预设数量的数据;所述预设数量与所述多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;在各所述移位寄存器均完成一次数据读取的情况下,控制各所述移位寄存器的最高位存储数据写入所述转置矩阵中。2.根据权利要求1所述的方法,其特征在于,所述按照时钟顺序,依次控制多个移位寄存器从所述目标矩阵中读取数据,包括:获取所述多个移位寄存器的读取顺序;按照所述时钟顺序和所述多个移位寄存器的读取顺序,获取每个移位寄存器在所述目标矩阵中的读取地址;根据所述每个移位寄存器在所述目标矩阵中的读取地址,控制各所述移位寄存器从所述目标矩阵中读取数据。3.根据权利要求2所述的方法,其特征在于,所述获取所述多个移位寄存器的读取顺序包括:根据所述芯片中存储单元的带宽确定所述多个移位寄存器的长度;各所述移位寄存器的长度均不相同;将各所述移位寄存器的长度从大到小的顺序确定为所述多个移位寄存器的排序。4.根据权利要求3所述的方法,其特征在于,所述多个移位寄存器的数量与所述带宽相同,且各所述移位寄存器的长度依次递减;其中,各所述移位寄存器中的最小长度等于所述带宽加一,最大长度等于所述带宽的两倍。5.根据权利要求2-4任一项所述的方法,其特征在于,所述按照所述时钟顺序和所述多个移位寄存器的读取顺序,获取每个移位寄存器在所述目标矩阵中的读取地址,包括:根据所述时钟顺序和所述多个移位寄存器的读取顺序,获取每个时钟对应的移位寄存器;每个时钟下执行一个移位寄存器的数据读取;将所述目标矩阵中数据的第一行地址作为第一个时钟对应的移位寄存器的读取地址、第二行地址作为第二个时钟对应的移位寄存器的读取地址,以此类推,得到每个时钟对应的移位寄存器的读取地址。6.根据权利要求2-4任一项所述的方法,其特征在于,所述根据所述每个移位寄存器在所述目标矩阵中的读取地址,控制各所述移位寄存器从所述目标矩阵中读取数据,包括:对于任一移位寄存器,根据所述移位寄存器在所述目标矩阵中的读取地址确定所述移位寄存器对应的目标数据;控制所述移位寄存器读取所述目标数据。7.根据权利要求1-4任一项所述的方法,其特征在于,所述控制各所述移位寄存器的最高位存储数据写入所述转置矩阵中,包括:获取各所述移位寄存器的最高位存储数据,并将各所述移位寄存器的最高位存储数据进行组合,获取转置向量;
控制所述转置向量写入所述转置矩阵中。8.根据权利要求7所述的方法,其特征在于,所述控制所述转置向量写入所述转置矩阵中,包括:获取所述转置向量在所述转置矩阵中的写入地址;根据所述写入地址,控制所述转置向量写入所述转置矩阵中。9.根据权利要求8所述的方法,其特征在于,所述获取所述转置向量在所述转置矩阵中的写入地址,包括:获取在对所述目标矩阵循环执行数据读写操作过程中,当前各所述移位寄存器均完成一次数据读取的次数;根据所述次数确定所述转置向量在所述转置矩阵中的列地址;将所述转置向量在所述转置矩阵中的列地址作为所述转置向量在所述转置矩阵中的写入地址。10.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:根据所述目标矩阵的尺寸和所述芯片中存储单元的带宽确定每个时钟的偏地址跳变步长;在对目标矩阵循环执行数据读写操作过程中,针对任一个时钟,按照所述时钟的偏地址跳变步长在行方向上进行偏地址跳变,并在所述偏地址跳变完毕的情况下,对所述时钟的基地址跳变一个地址。
技术总结
本申请涉及一种矩阵转置方法,该方法包括:对目标矩阵循环执行数据读写操作,直至目标矩阵中数据读取完毕,得到目标矩阵的转置矩阵。其中,数据读写操作包括:按照时钟顺序,依次控制芯片中的多个移位寄存器从目标矩阵中读取预设数量的数据;预设数量与多个移位寄存器的数量相同,且在读取过程中每个时钟下各移位寄存器中的已存储数据均向高位移动一位;在各移位寄存器均完成一次数据读取的情况下,控制各移位寄存器的最高位存储数据写入转置矩阵中。采用本方法能够提升芯片进行矩阵转置的计算速度,进而提高芯片所搭载的计算机设备的运行速度。运行速度。运行速度。
技术研发人员:裴京 王松 马骋 李博文 徐海峥
受保护的技术使用者:清华大学
技术研发日:2023.05.09
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/