CN114546329B - 用于实现数据奇偶重排的方法、设备和介质 - Google Patents

用于实现数据奇偶重排的方法、设备和介质 Download PDF

Info

Publication number
CN114546329B
CN114546329B CN202210195213.9A CN202210195213A CN114546329B CN 114546329 B CN114546329 B CN 114546329B CN 202210195213 A CN202210195213 A CN 202210195213A CN 114546329 B CN114546329 B CN 114546329B
Authority
CN
China
Prior art keywords
register
data
mapping
portions
odd
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.)
Active
Application number
CN202210195213.9A
Other languages
English (en)
Other versions
CN114546329A (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 Bi Ren Technology Co ltd
Original Assignee
Shanghai Biren Intelligent 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 Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202210195213.9A priority Critical patent/CN114546329B/zh
Publication of CN114546329A publication Critical patent/CN114546329A/zh
Application granted granted Critical
Publication of CN114546329B publication Critical patent/CN114546329B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4013Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
    • 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

Abstract

本公开的实施例涉及一种用于实现数据奇偶重排的方法、设备和介质,方法包括:基于线程组的线程数,确定第一映射参数;基于所述第一映射参数,将所述第一寄存器的数据映射到所述第三寄存器并且将所述第二寄存器的数据映射到第四寄存器;将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器的数据移位到中转寄存器;基于中转寄存器的地址,对所述中转寄存器中的数据执行抽取,以便获得第一数据、第二数据、第三数据以及第四数据;以及将第一数据和第二数据分别写入到所述第一寄存器和所述第二寄存器,从而实现寄存器数据奇偶重排。由此,能够在不计算共享存储器地址的情况下更为快速地在两个寄存器间实现数据的奇偶重排。

Description

用于实现数据奇偶重排的方法、设备和介质
技术领域
本公开的实施例总体涉及处理器领域,并且更具体地涉及一种用于实现数据奇偶重排的方法、计算设备和计算机可读存储介质。
背景技术
一般而言,在通用计算图形处理单元(General-purpose computing on graphicsprocessing units,GPGPU)中,通常涉及输入为实数而输出为复数(R2C)的快速傅里叶(FFT)运算。运算需要对原始输入的实数序列进行奇偶重排,从而重新组合成新的复数序列。这涉及到了在不同寄存器之间对线程组(wrap)间数据进行奇偶重排。奇偶重排运算需要依靠线程组间数据交互。
现有线程组间数据交互的方式主要是通过共享存储器。系统将不同线程数据先根据索引计算出相应的共享存储器地址,再将寄存器上的数据通过存储指令(store)写入到共享存储器。最后再通过载入指令(load)写回到寄存器上。由于线程之间调度的不确定性,需要等待所有线程完成写入操作后才能执行读取操作,这需要增加额外的同步操作,同时如果存在对同一位置的写入也只能串行处理。这种方式使得指令的读取延迟增长,浪费了指令存储器的数据带宽。另外,共享存储器的索引计算较为复杂且还需要转化为相应的地址的额外计算。
综上,传统的用于实现数据奇偶重排的方案所存在的不足之处在于:额外增加复杂的共享存储器索引地址转换的计算操作,同时在共享存储器的读写操作延时较长,影响程序性能。
发明内容
针对上述问题,本公开提供了一种用于实现数据奇偶重排的方法、计算设备和计算机可读存储介质,能够在不计算共享存储器地址的情况下更为快速地在两个寄存器间实现数据的奇偶重排。
根据本公开的第一方面,提供了一种用于实现寄存器中的数据奇偶重排的方法,包括:基于线程组的线程数,确定第一映射参数;基于所述第一映射参数,将所述第一寄存器的数据映射到第三寄存器并且将所述第二寄存器的数据映射到第四寄存器;将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器的数据移位到中转寄存器;基于中转寄存器的地址,对所述中转寄存器中的数据执行抽取,以便获得第一数据、第二数据、第三数据以及第四数据;以及将第一数据和第二数据分别写入到所述第一寄存器和所述第二寄存器,从而实现寄存器数据奇偶重排。
根据本公开的第二方面,提供了一种计算设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开的第一方面的方法。
在本公开的第三方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中计算机指令用于使计算机执行本公开的第一方面的方法。
在一个实施例中,实现寄存器数据奇偶重排包括:基于所述第一映射参数,确定第二映射参数;将第三数据写入到所述第三寄存器并且将第四数据写入到所述第四寄存器;基于所述第二映射参数,将所述第三寄存器的数据映射到第五寄存器并且将所述第四寄存器的数据映射到第六寄存器;以及将所述第五寄存器以及所述第六寄存器的数据分别写入到所述第三寄存器以及所述第四寄存器,从而实现寄存器数据奇偶重排。
在一个实施例中,基于线程组的线程数确定第一映射参数包括:将所述第一映射参数确定为所述线程组的线程数的四分之一。
在一个实施例中,基于所述第一映射参数确定第二映射参数包括:将第二映射参数确定为所述第一映射参数的二分之一。
在一个实施例中,将所述第一寄存器的数据映射到第三寄存器并且将所述第二寄存器的数据映射到第四寄存器包括:根据所述第一映射参数,将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器分别均分为第一部分、第二部分、第三部分和第四部分;将所述第一寄存器的第一部分、第二部分的数据交叉映射到所述第三寄存器的第二部分、第一部分,将所述第一寄存器的第三部分、第四部分的数据交叉映射到所述第三寄存器的第四部分、第三部分;将所述第二寄存器的第一部分、第二部分的数据交叉映射到所述第四寄存器的第二部分、第一部分,将所述第二寄存器的第三部分、第四部分的数据交叉映射到所述第四寄存器的第四部分、第三部分。
在一个实施例中,将所述第三寄存器的数据映射到第五寄存器并且将第四寄存器的数据映射到第六寄存器包括:根据所述第二映射参数,将所述第三寄存器、第四寄存器、第五寄存器和第六寄存器分别均分为第一部分、第二部分、第三部分、第四部分、第五部分、第六部分、第七部分和第八部分;将所述第三寄存器的第一部分、第二部分的数据交叉映射到所述第五寄存器的第二部分、第一部分,将所述第三寄存器的第三部分、第四部分的数据交叉映射到所述第五寄存器的第四部分、第三部分,将所述第三寄存器的第五部分、第六部分的数据交叉映射到所述第五寄存器的第六部分、第五部分,将所述第三寄存器的第七部分、第八部分的数据交叉映射到所述第五寄存器的第八部分、第七部分;将所述第四寄存器的第一部分、第二部分的数据交叉映射到所述第六寄存器的第二部分、第一部分,将所述第四寄存器的第三部分、第四部分的数据交叉映射到所述第六寄存器的第四部分、第三部分,将所述第四寄存器的第五部分、第六部分的数据交叉映射到所述第六寄存器的第六部分、第五部分,将所述第四寄存器的第七部分、第八部分的数据交叉映射到所述第六寄存器的第八部分、第七部分。
在一个实施例中,对所述中转寄存器中的数据执行抽取包括:构建关于第一映射参数的数据列,其中所构建的数据列中的每个元素对应于基于第一映射参数所映射的数据;将中转寄存器的数据组合为多个所述数据列的集合;以及对所组合的由多个所述数据列组成的集合执行抽取。
在一个实施例中,对所组合的由多个所述数据列组成的集合执行抽取包括:确定由多个所述数据列组成的集合的元素的坐标值,其中所述坐标值包括所述元素对应的横坐标以及纵坐标;基于所确定的坐标值,按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个所述数据列的集合执行抽取。
在一个实施例中,对所组合的多个所述数据列的集合执行抽取包括:确定中转寄存器的数据的坐标值,其中所述坐标值包括所述数据对应的横坐标以及纵坐标;基于所确定的坐标值,按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个所述数据列的集合执行抽取。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示出了用于实现根据本发明的实施例的用于实现数据奇偶重排的方法的系统100的示意图。
图2示出了根据本公开的实施例的用于实现寄存器中的数据奇偶重排的方法200的流程图。
图3示出了根据本公开的实施例的将第一寄存器的数据映射到第三寄存器并将第二寄存器的数据映射到第四寄存器的示意图。
图4示出了根据本公开的实施例的将第一寄存器和第二寄存器和第三寄存器和第四寄存器的数据移位到中转寄存器的示意图。
图5示出了根据本公开的实施例的将第一数据写入到第一寄存器并且将第二数据写入到第二寄存器的示意图。
图6示出了根据本公开的实施例的由多个数据列组成的集合构成的中转寄存器中的数据的示意图。
图7示出了根据本公开的实施例的用于实现寄存器中的数据奇偶重排的方法700的流程图。
图8示出了可以用来实施本公开内容的实施例的示例电子设备800的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文所描述,现有线程组间数据交互的方式主要是通过共享存储器。系统将不同线程数据先根据索引计算出相应的共享存储器地址,再将寄存器上的数据通过存储指令(store)写入到共享存储器。最后再通过载入指令(load)写回到寄存器上。由于线程之间调度的不确定性,需要等待所有线程完成写入操作后才能执行读取操作,这需要增加额外的同步操作,同时如果存在对同一位置的写入也只能串行处理。这种方式使得指令的读取延迟增长,浪费了指令存储器的数据带宽。另外,共享存储器的索引计算较为复杂且还需要转化为相应的地址的额外计算。因此,额外计算共享存储器的索引以及地址计算消耗量大且延时严重,同时在共享存储器的读写操作延时较长,影响程序性能。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于实现数据奇偶重排的方案,在本公开方案中,通过利用线程组里额外的两个寄存器以及一个中转寄存器,可以实现将保存在一个线程组(warp)内32个线程的两个寄存器内的例如连续1-64的数据进行奇偶重排。奇偶重排指的是将连续的多个数据,例如存储在两个32位寄存器的连续数据1-64重新排序为奇数列1、3、5…、63以及偶数列2、4、6…、64。最终两个寄存器将相应存储有对应的奇数列以及偶数列。
图1示出了用于实现根据本发明的实施例的用于实现数据奇偶重排的方法的系统100的示意图。如图1中所示,系统100包括计算设备110和数据存储设备130和网络140。计算设备110、数据存储设备130可以通过网络140(例如,因特网)进行数据交互。
数据存储设备130,其例如可以存储有多类不同的数据存储,例如,存储有待重排的连续数字等。数据存储设备130还可以将所存储的数据存储发送给计算设备110。数据存储设备可以是运行在一个或多个计算机节点上用于实现高并发、高吞吐量的查询服务的一站式存储计算结构,其可以包括诸如GPU、FPGA和ASIC等的专用处理单元以及诸如CPU的通用处理单元。
关于计算设备110,其例如用于获取来自数据存储设备130的数据存储;从而针对所接收的数据执行奇偶重排。所重排的奇偶数列的可以被存储在处于同一个warp内的两个寄存器中。计算设备110可以具有一个或多个处理单元,包括诸如GPU、FPGA和ASIC等的专用处理单元以及诸如CPU的通用处理单元。另外,在每个计算设备110上也可以运行着一个或多个虚拟机。在一些实施例中,计算设备110与数据存储设备130可以集成在一起,也可以是彼此分立设置。在一些实施例中,计算设备110例如包括确定模块112、映射模块114、移位模块116、抽取模块118以及写入模块120。
确定模块112,所述确定模块112配置成基于线程组的线程数,确定第一映射参数。
映射模块114,所述映射模块114配置成基于所述第一映射参数,将所述第一寄存器的数据映射到第三寄存器并且将所述第二寄存器的数据映射到第四寄存器。
移位模块116,所述移位模块116配置成将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器的数据移位到中转寄存器。
抽取模块118,所述抽取模块118配置成基于中转寄存器的地址,对所述中转寄存器中的数据执行抽取,以便获得第一数据、第二数据、第三数据以及第四数据。
写入模块120,所述写入模块120配置成将第一数据和第二数据分别写入到所述第一寄存器和所述第二寄存器,从而实现寄存器数据奇偶重排。
图2示出了根据本公开的实施例的用于实现寄存器中的数据奇偶重排的方法200的流程图。方法200可由如图1所示的计算设备110执行,也可以在图8所示的电子设备800处执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在本申请的上下文中,寄存器可以指寄存器组,例如包括第一寄存器以及第二寄存器的寄存器组。
在步骤202,计算设备110可以基于线程组的线程数,确定第一映射参数。
在一个实施例中,例如,线程组(warp)可以包括8、16、32、64个线程。出于简洁起见,本公开将以32个线程来介绍。注意的是,其他线程数的线程组也同样适用于本公开所介绍的技术方案。
基于线程组的线程数为32,可以确定第一映射参数k为8。具体来说,第一映射参数可以被确定为所述线程组的线程数的四分之一。第一映射参数k可以是用于后续步骤的映射或交叉映射中,其对应于在一个线程组的32个线程的两个寄存器之间两两交换数据。
在步骤204,计算设备110可以基于所述第一映射参数,将所述第一寄存器的数据映射到第三寄存器R6并且将所述第二寄存器的数据映射到第四寄存器R7。
在一个实施例中,计算设备110可以基于所述第一映射参数k(例如,8)将在线程组的32个线程之间将所述第一寄存器数据交叉映射到另一线程的所述第三寄存器上,所述第二寄存器数据交叉映射到另一线程的所述第四寄存器上。
在一个实施例中,针对线程组的线程数为32的情况,计算设备110将寄存器分成4个部分,每个部分对应于8个线程。例如,根据所述第一映射参数k=8,将所述第一寄存器R4和第二寄存器R5和第三寄存器R6和第四寄存器R7分别均分为第一部分、第二部分、第三部分和第四部分。
图3示出了根据本公开的实施例的将第一寄存器的数据映射到第三寄存器并将第二寄存器的数据映射到第四寄存器的示意图。如图3所示,计算设备110可以将线程组的线程T0-T7对应于第一寄存器R4的数据、线程组的线程T8-T15对应于第一寄存器R4的数据交叉映射到线程组的线程T8-T15对应的第三寄存器R6的第二部分、线程组的线程T0-T7对应的第三寄存器R6的第一部分,同时线程组的线程T16-T23对应于第一寄存器R4的数据、线程组的线程T24-T31对应于第一寄存器R4的数据交叉映射到线程组的线程T24-T31对应的第三寄存器R6的第四部分、线程组的线程T16-T23对应的第三寄存器R6的第三部分。
基于同样的映射方式,计算设备110可以线程组的线程T0-T7对应于第二寄存器R5的数据、线程组的线程T8-T15对应于第二寄存器R5的数据交叉映射到线程组的线程T8-T15对应的第四寄存器R7的第二部分、线程组的线程T0-T7对应的第四寄存器R7的第一部分,同时线程组的线程T16-T23对应于第二寄存器R5的数据、线程组的线程T24-T31对应于第二寄存器R5的数据交叉映射到线程组的线程T24-T31对应的第四寄存器R7的第四部分、线程组的线程T16-T23对应的第四寄存器R7的第三部分。
映射可以以数据发射的方式执行,例如可以通过shuff指令,将数据从一个线程的一个寄存器发射到另一线程的另一个寄存器。
在步骤206,计算设备110可以将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器的数据移位到中转寄存器。图4示出了根据本公开的实施例的将第一寄存器和第二寄存器和第三寄存器和第四寄存器的数据移位到中转寄存器的示意图。如图4所示,计算设备110将将第一寄存器R4和第二寄存器R5和第三寄存器R6和第四寄存器R7的数据移位发射到另一个中转寄存器X0。中转寄存器可以是具有先前存储数据的寄存器(R4-R7)4倍大小的寄存器。例如,在第一寄存器、第二寄存器为32位的情况下,中转寄存器X0可以为128位,其可以如图4所示存储来自第一寄存器R4、第二寄存器R5、第三寄存器R6、第四寄存器R7的数据。
在步骤208,计算设备110可以基于中转寄存器X0的地址,对所述中转寄存器X0中的数据执行抽取,以便获得第一数据、第二数据、第三数据以及第四数据。
在一个实施例,计算设备110可以将中转寄存器X0的数据组合为多个所述数据列(4个4×8的数据列)的集合。集合可以为表示为8×16的数据集合。计算设备110可以对所组合的由多个所述数据列组成的集合执行抽取,例如对由4个4×8的数据列组成的8×16的数据集合执行抽取。
抽取是基于数据集合的坐标。计算设备110可以为数据集合中的数据建立坐标系,并且坐标系的原点(0,0)为中转寄存器地址的左上方点,向右为y轴且向下为x轴。基于所建立的坐标系,首先确定所述多个数据列中的元素的坐标值,其中所述坐标值包括所述元素对应的横坐标以及纵坐标,其次基于所确定的坐标值,按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个所述数据列的集合执行抽取。确定移位到中转寄存器的地址的数据的坐标值,其中所述坐标值包括所述数据对应的横坐标以及纵坐标。
从原点开始,在第一个2×2的数据列内,第一个数据1对应的坐标值即为(0,0),数据2对应的坐标值即为(0,1),数据9对应的坐标值即为(1,0),数据10对应的坐标值即为(1,1),余下的数据以此类推。
基于所确定的坐标值,计算设备110可以按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个所述数据列的集合执行抽取。所抽取的数据可以为四类数据,分别为横坐标为偶数且纵坐标为偶数的第一数据、横坐标为偶数且纵坐标为奇数的第二数据、横坐标为奇数且纵坐标为偶数的第三数据以及横坐标为奇数且纵坐标为奇数的第四数据。
在步骤210,计算设备110可以将第一数据和第二数据分别写入到所述第一寄存器R4和所述第二寄存器R5,从而实现寄存器数据奇偶重排。
在一个实施例中,计算设备110可以将所抽取的横坐标为偶数且纵坐标为偶数的第一数据写入到第一寄存器R4并且将所抽取的横坐标为偶数且纵坐标为奇数的第二数据写入到第二寄存器R4。
图5示出了根据本公开的实施例的将第一数据写入到第一寄存器并且将第二数据写入到第二寄存器的示意图。可以在图5中看出,通过写入相应数据,第一寄存器R4存储有数据1、3、5、7、9…并且第二寄存器R5存储有数据2、4、6、8、10…,从而实现了数据奇偶重排。
在一个实施例中,计算设备110对中转寄存器X0中的数据执行抽取可以包括构建关于第一映射参数(例如,k=8)的数据列,其中所构建的数据列中的每个元素对应于基于第一映射参数所映射的数据。例如,可以构建多个4×8的数据列,其中所构建的数据列中的每个元素对应于中转寄存器X0中所映射的数据或者数据的地址。例如,对于中转寄存器X0中第一行的数据,可以构建为1、2、3、…、8以及9、10、11、…、16以及17、18、19、…、24以及25、26、27、…、32这4个8位的数据列,即4×8的数据列。对于中转寄存器X0中第二行的数据,可以构建为9、10、11、…、16以及1、2、3、…、8以及24、25、26、…、32以及18、19、20、…、24这4个8位的数据列,以此类推。基于所构建的数据列,可以将中转寄存器的地址组合为例如4个4×8的数据列的集合,其中由第一行的数据构成的4×8的数据列可以位于集合左上方,由第二行的数据构成的4×8的数据列可以位于集合右上方,由第三行的数据构成的4×8的数据列可以位于集合左下方,由第四行的数据构成的4×8的数据列可以位于集合右下方。
图6示出了根据本公开的实施例的由多个数据列组成的集合构成的中转寄存器中的数据的示意图。如图6所示,将中转寄存器的数据组合为多个所述数据列的集合,其可以为表示为8×16的数据集合。计算设备可以对所组合的由多个所述数据列组成的集合执行抽取,例如对由4个4×8的数据列组成的8×16的数据集合执行抽取。抽取的原理与上文相同。首先确定所述多个数据列中的元素的坐标值,其中所述坐标值包括所述元素对应的横坐标以及纵坐标,其次基于所确定的坐标值,按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个所述数据列的集合执行抽取。通过写入相应数据,第一寄存器R4存储有数据1、3、5、7、9…并且第二寄存器R5存储有数据2、4、6、8、10…,从而实现了数据奇偶重排。
利用以上技术手段,能够快速地在两个寄存器间实现数据的奇偶重排而只需要利用到两个额外寄存器以及一个中转寄存器。同时不需要计算共享存储器的地址,从而降低奇偶重排的功率消耗。
图7示出了根据本公开的实施例的用于实现寄存器中的数据奇偶重排的方法700的流程图。方法700可由如图1所示的计算设备110执行,也可以在图8所示的电子设备800处执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在本申请的上下文中,寄存器可以指寄存器组,例如包括第一寄存器以及第二寄存器的寄存器组。
在步骤702,计算设备110可以基于第一映射参数,确定第二映射参数。第二映射参数可以被确定为所述第一映射参数的二分之一。例如,在第一映射参数k等于8的情况下,第二映射参数p可以等于4。第二映射参数用于后续步骤的交叉映射。
在步骤704,计算设备110可以将第三数据写入到第三寄存器R6并且将第四数据写入到所述第四寄存器R7。
在一个实施例中,根据所述第二映射参数p,将32位的第三寄存器R6和第四寄存器R7和第五寄存器R8和第六寄存器R9分别均分为第一部分、第二部分、第三部分、第四部分、第五部分、第六部分、第七部分和第八部分。
如图5中所示,第三寄存器R6、第四寄存器R7也存储有相应的奇数列、偶数列,然而其中的数列是每4位为一部分交叉保存的。因此,将第三寄存器R6、第四寄存器R7的数据交叉映射到第五寄存器R8、第六寄存器R9,再写回到第三寄存器R6、第四寄存器R7也可以实现对数据的奇偶重排。
在步骤706,计算设备110可以基于所述第二映射参数,将所述第三寄存器的数据映射到第五寄存器并且将所述第四寄存器的数据映射到第六寄存器。
在一个实施例中,计算设备110可以将线程组的线程T0-T3对应的第三寄存器R6的数据、线程T4-T7对应的第三寄存器R6的数据交叉映射到线程组的线程T4-T7对应的第五寄存器R8、线程组的线程T0-T3对应的第五寄存器R8,将线程组的线程T8-T11对应的第三寄存器R6的数据、线程组的线程T12-T15对应的第三寄存器R6的数据交叉映射到线程组的线程T12-T15对应的第五寄存器R8、线程组的线程T8-T11对应的第五寄存器R8,将线程组的线程T16-T19对应的第三寄存器R6的数据、线程T20-T23对应的第三寄存器R6的数据交叉映射到线程组的线程T20-T23对应的第五寄存器R8、线程组的线程T16-T19对应的第五寄存器R8,将线程组的线程T24-T27对应的第三寄存器R6的数据、线程T28-T31对应的第三寄存器R6的数据交叉映射到线程组的线程T28-T31对应的第五寄存器R8、线程组的线程T24-T27对应的第五寄存器R8。
同时,如上所述,还可以将第四寄存器R7的第一部分,即线程组的线程T0-T3对应的数据、第二部分线程T4-T7对应的数据交叉映射到线程组的线程T4-T7对应的第六寄存器R9的第二部分、线程T0-T3对应的第一部分,将线程组的线程T8-T11对应的第四寄存器R7的第三部分的数据、第四部分线程T12-T15对应的数据交叉映射到线程T12-T15对应的第六寄存器R9的第四部分、线程T2-T11对应的第三部分,将第四寄存器R7的第五部分线程T16-T19对应的数据、第六部分线程T20-T23对应的数据交叉映射到线程T20-T23对应的第六寄存器R9的第六部分、线程T16-T19对应的第五部分,将第四寄存器R7的第七部分线程T24-T27对应的数据、第八部分线程T28-T31对应的数据交叉映射到线程T28-T31对应的第六寄存器R9的第八部分、线程T24-T27对应的第七部分。
在步骤708,计算设备110可以将所述第五寄存器以及所述第六寄存器的数据分别写入到所述第三寄存器以及所述第四寄存器,从而实现寄存器数据奇偶重排。
在一个实施例中,计算设备110可以将第五寄存器R8以及第六寄存器R9的数据写入到第三寄存器R6以及第四寄存器R7,从而实现寄存器数据奇偶重排。
通过采用上述手段,计算设备110能够快速地利用额外的两个寄存器实现数据的奇偶重排。同样这不需要计算共享存储器的地址,并且可以利用之前方法中所计算的数据,从而降低奇偶重排的功率消耗。
图8示出了可以用来实施本公开内容的实施例的示例电子设备800的示意性框图。例如,如图1所示的计算设备110可以由电子设备800来实施。如图所示,电子设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机存取存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在随机存取存储器803中,还可存储电子设备800操作所需的各种程序和数据。中央处理单元801、只读存储器802以及随机存取存储器803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至输入/输出接口805,包括:输入单元806,例如键盘、鼠标、麦克风等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200和700,可由中央处理单元801执行。例如,在一些实施例中,方法200和700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由只读存储器802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到随机存取存储器803并由中央处理单元801执行时,可以执行上文描述的方法200和700的一个或多个动作。
本公开涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘计算设备。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种用于实现寄存器中的数据奇偶重排的方法,包括:
基于线程组的线程数,确定第一映射参数;
基于所述第一映射参数,将第一寄存器的数据映射到第三寄存器并且将第二寄存器的数据映射到第四寄存器,包括将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器分别均分为第一、第二、第三和第四部分,将第一寄存器的第一、第二、第三和第四部分的数据交叉映射到第三寄存器的第二、第一、第四和第三部分并将第二寄存器的第一、第二、第三和第四部分的数据交叉映射到第四寄存器的第二、第一、第四和第三部分;
将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器的数据移位到中转寄存器;
基于中转寄存器的地址,对所述中转寄存器中的数据执行抽取,以便获得第一数据、第二数据、第三数据以及第四数据,其中抽取包括构建关于第一映射参数的数据列,其中所构建的数据列中的每个元素对应于基于第一映射参数所映射的数据,将中转寄存器的数据组合为多个所述数据列的集合,以及对所组合的由多个所述数据列组成的集合执行抽取;以及
将第一数据和第二数据分别写入到所述第一寄存器和所述第二寄存器,从而实现寄存器数据奇偶重排。
2.根据权利要求1所述的方法,其中实现寄存器数据奇偶重排包括:
基于所述第一映射参数,确定第二映射参数;
将第三数据写入到所述第三寄存器并且将第四数据写入到所述第四寄存器;
基于所述第二映射参数,将所述第三寄存器的数据映射到第五寄存器并且将所述第四寄存器的数据映射到第六寄存器;以及
将所述第五寄存器以及所述第六寄存器的数据分别写入到所述第三寄存器以及所述第四寄存器,从而实现寄存器数据奇偶重排。
3.根据权利要求1所述的方法,其中基于线程组的线程数确定第一映射参数包括:
将所述第一映射参数确定为所述线程组的线程数的四分之一。
4.根据权利要求2所述的方法,其中基于所述第一映射参数确定第二映射参数包括:
将第二映射参数确定为所述第一映射参数的二分之一。
5.根据权利要求1或3所述的方法,其中将所述第一寄存器的数据映射到第三寄存器并且将所述第二寄存器的数据映射到第四寄存器包括:
根据所述第一映射参数,将所述第一寄存器、第二寄存器、第三寄存器和第四寄存器分别均分为第一部分、第二部分、第三部分和第四部分;
将所述第一寄存器的第一部分、第二部分的数据交叉映射到所述第三寄存器的第二部分、第一部分,将所述第一寄存器的第三部分、第四部分的数据交叉映射到所述第三寄存器的第四部分、第三部分;以及
将所述第二寄存器的第一部分、第二部分的数据交叉映射到所述第四寄存器的第二部分、第一部分,将所述第二寄存器的第三部分、第四部分的数据交叉映射到所述第四寄存器的第四部分、第三部分。
6.根据权利要求2或4所述的方法,其中将所述第三寄存器的数据映射到第五寄存器并且将第四寄存器的数据映射到第六寄存器包括:
根据所述第二映射参数,将所述第三寄存器、第四寄存器、第五寄存器和第六寄存器分别均分为第一部分、第二部分、第三部分、第四部分、第五部分、第六部分、第七部分和第八部分;
将所述第三寄存器的第一部分、第二部分的数据交叉映射到所述第五寄存器的第二部分、第一部分,将所述第三寄存器的第三部分、第四部分的数据交叉映射到所述第五寄存器的第四部分、第三部分,将所述第三寄存器的第五部分、第六部分的数据交叉映射到所述第五寄存器的第六部分、第五部分,将所述第三寄存器的第七部分、第八部分的数据交叉映射到所述第五寄存器的第八部分、第七部分;以及
将所述第四寄存器的第一部分、第二部分的数据交叉映射到所述第六寄存器的第二部分、第一部分,将所述第四寄存器的第三部分、第四部分的数据交叉映射到所述第六寄存器的第四部分、第三部分,将所述第四寄存器的第五部分、第六部分的数据交叉映射到所述第六寄存器的第六部分、第五部分,将所述第四寄存器的第七部分、第八部分的数据交叉映射到所述第六寄存器的第八部分、第七部分。
7.根据权利要求1所述的方法,其中对所组合的由多个所述数据列组成的集合执行抽取包括:
确定由多个所述数据列组成的集合的元素的坐标值,其中所述坐标值包括所述元素对应的横坐标以及纵坐标;以及基于所确定的坐标值,按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个所述数据列的集合执行抽取。
8.根据权利要求1所述的方法,其中对所组合的多个所述数据列的集合执行抽取包括:
确定中转寄存器的数据的坐标值,其中所述坐标值包括所述数据对应的横坐标以及纵坐标;
基于所确定的坐标值,按照横坐标为偶数且纵坐标为偶数、横坐标为偶数且纵坐标为奇数、横坐标为奇数且纵坐标为偶数、横坐标为奇数且纵坐标为奇数的顺序对所组合的多个数据列的集合执行抽取。
9.一种计算设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中所述计算机指令用于使所述计算机执行权利要求1-8中任一项所述的方法。
CN202210195213.9A 2022-03-01 2022-03-01 用于实现数据奇偶重排的方法、设备和介质 Active CN114546329B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210195213.9A CN114546329B (zh) 2022-03-01 2022-03-01 用于实现数据奇偶重排的方法、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210195213.9A CN114546329B (zh) 2022-03-01 2022-03-01 用于实现数据奇偶重排的方法、设备和介质

Publications (2)

Publication Number Publication Date
CN114546329A CN114546329A (zh) 2022-05-27
CN114546329B true CN114546329B (zh) 2023-07-18

Family

ID=81662566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210195213.9A Active CN114546329B (zh) 2022-03-01 2022-03-01 用于实现数据奇偶重排的方法、设备和介质

Country Status (1)

Country Link
CN (1) CN114546329B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218208A (zh) * 2011-12-06 2013-07-24 辉达公司 用于实施成形的存储器访问操作的系统和方法
CN103513959A (zh) * 2012-06-15 2014-01-15 国际商业机器公司 无需执行的特殊情况寄存器更新
CN112445616A (zh) * 2020-11-25 2021-03-05 海光信息技术股份有限公司 资源分配方法以及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798543B2 (en) * 2009-09-24 2017-10-24 Nvidia Corporation Fast mapping table register file allocation algorithm for SIMT processors
EP3757754B1 (en) * 2016-11-14 2023-01-04 Google LLC Sorting for data-parallel computing devices
US11163578B2 (en) * 2018-02-23 2021-11-02 Intel Corporation Systems and methods for reducing register bank conflicts based on a software hint bit causing a hardware thread switch
CN111459543B (zh) * 2019-01-21 2022-09-13 上海登临科技有限公司 一种管理寄存器文件单元的方法
US11119820B2 (en) * 2019-03-15 2021-09-14 Intel Corporation Local memory sharing between kernels
US11294670B2 (en) * 2019-03-27 2022-04-05 Intel Corporation Method and apparatus for performing reduction operations on a plurality of associated data element values
CN113284038B (zh) * 2021-03-05 2022-10-18 上海壁仞智能科技有限公司 用于执行计算的方法、计算设备、计算系统和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218208A (zh) * 2011-12-06 2013-07-24 辉达公司 用于实施成形的存储器访问操作的系统和方法
CN103513959A (zh) * 2012-06-15 2014-01-15 国际商业机器公司 无需执行的特殊情况寄存器更新
CN112445616A (zh) * 2020-11-25 2021-03-05 海光信息技术股份有限公司 资源分配方法以及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
二维离散小波变换的可重配置VLSI架构;张钒炯;来金梅;童家榕;;计算机工程(16);全文 *

Also Published As

Publication number Publication date
CN114546329A (zh) 2022-05-27

Similar Documents

Publication Publication Date Title
US11704548B2 (en) Multicast network and memory transfer optimizations for neural network hardware acceleration
US20190272292A1 (en) Building and querying hash tables on processors
US10877757B2 (en) Binding constants at runtime for improved resource utilization
US10984073B2 (en) Dual phase matrix-vector multiplication system
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
CN111124270B (zh) 缓存管理的方法、设备和计算机程序产品
CN110825436B (zh) 应用于人工智能芯片的计算方法和人工智能芯片
CN112130969A (zh) 有效执行经由任务图指定的工作负载
CN112241290A (zh) 用于在并行处理单元中有效执行数据规约的技术
US10754818B2 (en) Multiprocessor device for executing vector processing commands
US20190278574A1 (en) Techniques for transforming serial program code into kernels for execution on a parallel processor
CN117435855B (zh) 用于进行卷积运算的方法、电子设备和存储介质
US10691456B2 (en) Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing
US10922134B2 (en) Method, device and computer program product for processing data
EP3940531A1 (en) Apparatus and method for writing back instruction execution result and processing apparatus
CN114546329B (zh) 用于实现数据奇偶重排的方法、设备和介质
KR102471553B1 (ko) 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체
CN114546328A (zh) 用于实现数据排列的方法、设备和介质
JP4391464B2 (ja) 2分木構造の情報を記憶する装置及びヒープ構造の情報を記憶する装置
CN117707791B (zh) 用于进行注意力运算的方法、设备和存储介质
CN111258650A (zh) 用于加速延迟敏感算法的恒定标量寄存器架构
CN111124312B (zh) 数据去重的方法及其装置
CN116804915B (zh) 基于存储器的数据交互方法、处理器、设备以及介质
CN116089786A (zh) 用于三角矩阵求逆的方法、设备和介质
CN116360858B (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
CP03 Change of name, title or address

Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Country or region after: China

Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address