CN115729521A - 一种在处理系统中处理超越函数的方法和相关产品 - Google Patents
一种在处理系统中处理超越函数的方法和相关产品 Download PDFInfo
- Publication number
- CN115729521A CN115729521A CN202110991009.3A CN202110991009A CN115729521A CN 115729521 A CN115729521 A CN 115729521A CN 202110991009 A CN202110991009 A CN 202110991009A CN 115729521 A CN115729521 A CN 115729521A
- Authority
- CN
- China
- Prior art keywords
- data
- transcendental function
- processing
- units
- transcendental
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本公开记载了一种在处理系统中处理超越函数的方法,其中该方法可以实现在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述编译装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与编译装置和其他处理装置连接,用于编译装置和其他处理装置的数据。
Description
技术领域
本公开涉及计算机领域,更具体地,涉及对数据进行超越函数运算。
背景技术
硬件的计算阵列由很多以锁步方式执行指令的处理单元Processing Unit,PE)组成,这些PE在任意时刻都执行相同的指令,并由谓词控制某个PE是否需要提交这些指令的执行结果。由于多个PE是以锁步的方式执行同样的指令,因此适合GU硬件的编程模型是类似于CUDA的单指令多线程(Single Instruciton Multiple Threads,SIMT)编程模型。
SIMT编程模型的基本特点是:程序员只需要面向一个线程进行编程,每个线程可以看成是一个独立的程序分别处理各自的数据。处理数据的操作是多种多样的,既可以是加、减、乘、除等简单运算,也可能是 sin/cos/sqrt/exp/log等复杂的超越函数计算。对于实现简单而且高频使用的数据处理功能,硬件会在每个PE上设置专门的运算器,而对于硬件实现开销较高而且不常用的超越函数功能,则往往不会为每个PE设置专门的运算器,而是一组PE共享有限数量的超越函数运算器。如果在硬件上实现SIMT编程模型,则需要支持的超越函数功能。
发明内容
本公开的一个目的在于解决超越函数功能在SIMT编程模型下的调度问题。
根据本公开的第一方面,提供一种在处理系统中处理超越函数的方法,其中,所述处理系统包括N个处理单元和M个超越函数运算单元,其中N和M为整数,所述方法包括:将所述N个处理单元中的数据发送到存储空间中;将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据;将所述结果数据传送到所述存储空间;以及将所述存储空间中的结果数据传送到所述N个处理单元。
根据本公开的第二方面,提供一种处理系统,包括:一个或多个处理单元;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理单元运行时,使得所述处理系统执行如上所述的方法。
根据本公开的第三方面,一种计算机可读存储介质,包括计算机可执行程序,当所述计算机可执行程序由一个或多个处理器运行时,执行如上所述的方法。
通过本公开所示的实施方式,用户可以在SIMT编程模式下使用复杂的越超函数功能。该方法完全基于编译器自动完成整个转换过程,程序员并不需要感知底层实现细节。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1a和图1b示出了多线程执行访存操作的示意图;
图2示出根据本披露实施例的处理单元阵列PEs的示意图;
图3a,3b,3c和3d是示出根据本披露实施例的多个处理单元的多种连接关系的示意图;
图4a示出了根据本公开一个实施方式的在处理系统中处理超越函数的方法,图4b示出了本公开的方法所应用的处理系统的示意图;
图5a示出了根据本公开一个实施方式的将有效数据和无效数据从处理单元传送到存储空间的示意图;
图5b示出了根据本公开一个实施方式的将有效数据和无效数据的替代数据从处理单元传送到存储空间的示意图;
图5c示出了根据本公开一个实施方式的仅将有效数据从处理单元传送到存储空间的示意图;
图6a和图6b示出了根据本公开一个实施方式的将数据分两次从存储空间发送到M个超越函数运算单元的示意图;
图7示出了根据本公开一个实施方式的同时利用硬件超越函数运算单元和虚拟超越函数运算单元对不同数据进行运算的实现方式的示意图;
图8a和图8b示出了根据本公开实施方式的串行设置的硬件超越函数运算单元和虚拟超越函数运算单元的示意图;
图9示出了一种组合处理装置;以及
图10示出了一种示例性板卡。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
图1a和图1b示出了多线程执行访存操作的示意图。
如图1a所示,在SIMT编程模型下,8个处理单元PE0-PE7所运行的 8个线程T0-T7对不同的存储空间S0-S7进行访问,这种访问可以是不规则的或者是乱序的;也可以是顺序的访问,即如图1b所示,8个线程T0-T8 分别顺次地对相应的存储空间S0-S7进行访问。
图2示出根据本披露实施例的处理单元阵列PEs的示意图。如图2所示,该处理单元阵列PEs可以包括多个处理单元,并且进一步示出了多个处理单元可以连接并排列为二维阵列的示意图。具体而言,图2示出了一个B*A规模的处理单元矩阵,其中该处理单元矩阵PEs的第0行包括处理单元PE00~PE0(A-1),第1行包括处理单元PE10~PE1(A-1),第B-1行包括处理单元PE(B-1)0~PE(B-1)(A-1),其中B和A均为大于0的正整数。
尽管在图2中未示出,但处理单元矩阵PEs中的每个处理单元PE可以与其他处理单元相连接。处理单元矩阵PEs中所有处理单元PE可以是同一个类型,也可以是不同类型。例如,所述多个处理单元可以被划分成第一类型处理单元和第二类型处理单元。在应用场景中,所述第一类型处理单元可以适用于执行算术运算和逻辑运算中的至少一项,而所述第二类型处理单元可以适用于执行比较运算和查表运算中的至少一项。可以将多个第一类型处理单元排布在阵列的左右两侧,而将多个第二类型处理单元排布在阵列的中间区域。又例如,多个第一类型处理单元可以布置在阵列的中间区域,而多个第二类型处理单元可以排布于阵列的四周区域。再例如,还可以将多个第一类型处理单元和第二类型处理单元间隔穿插地排布于阵列中。根据计算场景的不同,本披露的处理单元的类型也可以不限于图中所示的两种,而是可以具有更多类型的处理单元,以实现不同类型的运算操作。
图3a,3b,3c和3d是示出根据本披露实施例的多个处理单元的多种连接关系的示意图。本披露的多个处理单元之间可以一维或多维阵列的拓扑结构进行连接。当多个处理单元之间以多维阵列进行连接时,所述多维阵列可以是二维阵列,并且位于所述二维阵列中的所述处理单元可以在其行方向、列方向或对角线方向的至少一个方向上,以预定的二维间隔模式与同行、同列或同对角线上的其余一个或多个所述处理单元连接。其中所述预定的二维间隔模式可以与所述连接中间隔的处理单元的数目相关联。图3a至图3c示例性示出多个处理单元之间的多种形式的二维阵列的拓扑结构。
如图3a所示,五个处理单元(每个以方框表示)连接形成一个简单的二维阵列。具体来说,以一个处理单元作为二维阵列的中心,向相对于该处理单元的水平和垂直的四个方向上各连接一个处理单元,从而形成一个具有三行和三列大小的二维阵列。进一步,由于位于二维阵列中心的处理单元分别与同行的前一列和后一列相邻的处理单元、与同列的上一行和下一行相邻的处理单元直接连接,从而间隔的处理单元的数目(简称“间隔数目”)为0。
如图3b所示,四行四列的处理单元可以连接形成一个二维Torus阵列,其中每个处理单元分别与其相邻的前一行和后一行、前一列和后一列的处理单元进行连接,即相邻处理单元连接的间隔数目均为0。进一步,位于该二维Torus阵列中每行或每列的第一个处理单元还与该行或该列的最后一个处理单元相连,每行或每列首尾相连的处理单元之间的间隔数目均为 2。
如图3c所示,四行四列的处理单元还可以连接形成一个相邻处理单元之间的间隔数目为0、不相邻处理单元之间的间隔数目为1的二维阵列。具体地,该二维阵列中同行或同列相邻的处理单元直接连接,即间隔数目为0,而同行或同列不相邻的处理单元与间隔数目为1的处理单元进行连接。可以看出,当多个处理单元连接形成二维阵列时,图3b和图3c示出的同行或同列的处理单元之间可以有不同的间隔数目。类似地,在一些场景中,也可以不同的间隔数目与对角线方向上的处理单元进行连接。
如图3d所示,利用四个如图3b示出的二维Torus阵列,可以按照预定的间隔排列成四层二维Torus阵列进行连接,以形成一个三维Torus阵列。该三维Torus阵列在二维Torus阵列的基础上,利用与行间、列间类似的间隔模式进行层间连接。例如,首先将相邻层同行同列的处理单元直接相连,即间隔数目为0。接着,将第一层和最后一层同行同列的处理单元进行连接,即间隔数目为2。最终可以形成四层四行四列的三维Torus 阵列。
通过上面这些示例,本领域技术人员可以理解处理单元的其他多维阵列的连接关系可以在二维阵列的基础上,通过增加新的维度和增加处理单元的数目来形成。在一些应用场景中,本披露的方案也可以通过使用配置指令来对处理单元配置逻辑连接。换句话说,尽管处理单元之间可能存在硬线连接,但本披露的方案也可以通过配置指令来选择性地令一些处理单元连接,或者选择性地旁路一些处理单元,以形成一个或多个逻辑连接。在一些实施例中,还可以根据实际运算的需求(例如数据类型的转换)来调整前述的逻辑连接。进一步,针对于不同的计算场景,本披露的方案可以对处理单元的连接进行配置,包括例如配置成矩阵或者配置成一个或多个闭合的计算环路。
上面简要描述了可应用于本公开的技术方案的处理单元矩阵的一些示例,以方便本领域技术人员对本公开的技术方案进行更好的理解。
图4a示出了根据本公开一个实施方式的在处理系统中处理超越函数的方法,图4b示出了本公开的方法所应用的处理系统的示意图。
所述处理系统包括N个处理单元和M个超越函数运算单元,其中N 和M为整数。如图4a所示,所述方法包括:在操作S410,将所述N个处理单元中的数据发送到存储空间中;在操作S420,将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据;在操作S430,将所述结果数据传送到所述存储空间;以及在操作S440,将所述存储空间中的结果数据传送到所述N个处理单元。M和N均为整数,并且M可以等于或小于N。
如图4b所示,假设本公开包括八个线程T0-T7,可以一次性将八个处理单元PE0-PE7中的数据发送到一存储空间,该存储空间可以包括八个存储空间S0-S7中,这里所述的存储空间S0-S7可以是指八个存储地址。在其他可选实施例中,该存储空间S0-S7还可以是八个单独的存储器。本公开实施例中,该存储空间的大小可以根据数据的类型和处理单元的数量N 确定。例如,可以根据数据的类型确定PE中数据所需的字节数,并为每个处理单元预留相应字节数的存储单元。例如,本公开需要在片上的存储空间(例如NRAM)中预留一块大小为P*numOfPEs字节的存储空间和一块大小为numOfPEs比特的存储空间用于存储掩码(mask),其中, numOfPEs表示处理单元PE个数,P表示参与越超函数运算的输入数据的类型。当数据类型为half/short时,P=2;当数据类型为int/float时,P=4;当数据类型为int64/double时,P=8。而本公开的处理系统例如可以采用四个超越函数处理单元SE0-SE3。需要理解的是,图4b所示的情况仅仅是一个示例,而不是对本公开的限制。
首先,处理单元PE0-PE7在执行相应的线程T0-T7的过程中,可以将该处理单元PE上的数据搬移到存储空间S0-S7中。需要理解的是,这种数据的搬移可以是选择性的,例如可以根据有效性标识的指示来确定有效数据和无效数据。该有效性标识可以指示允许哪些数据被存储到存储空间中,以及不允许哪些数据存储到存储空间中,或者可以指示哪些数据需要参与超越函数运算,哪些数据不需要或被禁止参与超越函数运算。有效性标识可以是1,0等控制标识(谓词掩码),例如,当该有效性标识为1时,则相应的数据可以被认为是有效数据,而当该有效性标识为0时,则相应的数据则可以被认为函数无效数据。可选地,每个处理单元中设置有缓存 cache或片上存储(如RAM等),该有效性标识可以存储在每个处理单元的片上缓存或片上存储中。在另一种实施例中,这种数据的搬移也可以是不加选择的,例如可以通过插入3D DMA命令将处理单元PE0-PE7中的数据均从处理单元写入到存储空间中。同时,在将数据从PE存储至存储空间时,可以同时将有效性标识存储至存储空间,然后根据有效性标识来确定超越函数运算单元是否需要执行相应的超越函数运算。此种实施方式中,在将数据从PE搬移到存储空间的过程中,无需进行数据的选择,可以提高数据搬移的效率。
本公开可以通过访存指令(例如3D DMA指令)将数据从处理单元搬移至存储空间,而这可以包括多种实施方式。
根据本公开的一个实施方式,将所述N个处理单元中的数据发送到存储空间中包括:确定所述N个处理单元中参与超越函数运算的有效数据以及不参与超越函数运算的无效数据;将有效数据和无效数据从处理单元中发送到存储空间中。
图5a示出了根据本公开一个实施方式的将有效数据和无效数据从处理单元传送到存储空间的示意图。
如图5a所示,图中共有8个PE0-PE7(分别执行T0-T7线程)和四个超越函数单元,需要执行超越函数运算的线程为T0,T3,T7,其分别对应于处理单元PE0,PE3和PE7,该需要执行超越函数的处理单元PE0, PE3和PE7中的数据为有效数据,而其他运算单元PE1,PE2,PE4,PE5, PE6中的数据为无效数据,以阴影表示。编译器可以插入一条3D DMA指令将三个有效数据和五个无效数据写入存储空间S0-S7。
在该实施方式中,无论处理单元PE0-PE7中的数据是有效数据还是无效数据,都可以从处理单元PE0-PE7写入到相应的存储空间中,而后续则可以控制仅对有效数据进行超越函数运算,而不对无效数据进行超越函数运算。在本实施方式中,可以简化数据从处理单元写入到存储空间时的控制。
根据本公开的另一个实施方式,将所述N个处理单元中的数据发送到存储空间中包括:确定所述N个处理单元中参与超越函数运算的有效数据以及不参与超越函数运算的无效数据;将有效数据和无效数据的替代数据从所述N个处理单元中发送到存储空间中,其中,所述替代数据为符合超越函数运算规则的任意数据。
图5b示出了根据本公开一个实施方式的将有效数据和无效数据的替代数据从处理单元传送到存储空间的示意图。
如图5b所示,图中共有8个PE0-PE7(分别执行T0-T7线程)和四个超越函数单元,需要执行超越函数运算的线程为T0,T3,T7,其对应的处理单元PE0,PE3和PE7中的数据为有效数据,而其他运算单元PE1, PE2,PE4,PE5,PE6中的数据为无效数据。编译器插入一条3DDMA指令将三个有效数据写入存储空间S0,S3和S7(如实线所示),并将无效数据的替代数据写入到存储空间S1,S2,S4,S5和S6(如虚线所示)。
在本实施方式中,可以首先确定有效数据与无效数据,但与上一个实施方式不同的是,对无效数据的处理有所不同,上一个实施方式是仍然将无效数据从处理单元发送到相应的存储空间,而在本实施方式中,可以是将无效数据的替代数据发送到存储空间中。例如,无效数据为89,而替代数据可以统一地为1或者其他数据。优选地,替代数据应当满足超越函数运算规则。例如对于超越函数1/x而言,x则不能为0,否则容易产生计算错误。在本实施方式中,仅是简单地将无效数据更换为替代数据并发送到存储空间中。这样的有益效果在于无需考虑无效数据的具体数值,而只是简单地生成或搬运一个约定的数据即可,这在无效数据的量较大时能够节省搬运无效数据所花费的时间,提升数据吞吐效率。
根据本公开的又一个实施方式,将所述N个处理单元中的数据发送到存储空间中包括:确定所述N个处理单元中参与超越函数运算的有效数据以及不参与超越函数运算的无效数据;仅将有效数据发送到相应的存储空间中。
图5c示出了根据本公开一个实施方式的仅将有效数据从处理单元传送到存储空间的示意图。
如图5c所示,图中共有8个PE0-PE7(分别执行T0-T7线程)和四个超越函数单元,需要执行超越函数运算的线程为T0,T3,T7,其对应的处理单元PE0,PE3和PE7中的数据为有效数据,而其他运算单元PE1, PE2,PE4,PE5,PE6中的数据为无效数据。编译器插入一条离散数据访存指令仅将三个有效数据写入存储空间S0,S3和S7(如实线所示),而其他处理单元中的无效数据则不发生搬移,换言之,存储空间S1,S2, S4,S5和S6中与PE1,PE2,PE4,PE5,PE6所对应的数据并不发生变化。
在该实施方式中,可以首先确定有效数据与无效数据,但与之前实施方式不同的是,对无效数据的处理有所不同。在前实施方式是仍然需要将无效数据或者无效数据的替代数据从处理单元发送到相应的存储空间,而在本实施方式中,仅需要将有效数据发送到相应的存储空间中,而无需发送任何与无效数据相关的其他数据。这在无效数据较大时能够节省搬运无效数据所花费的时间,提升数据吞吐效率。
在将数据从处理单元发送到存储空间之后,可以将数据从存储空间进一步发送到超越函数运算单元。进一步地,在将数据从处理单元发送到存储空间之后,可以根据数据的有效性标识确定哪些是有效数据,并将有效数据发送到超越函数运算单元。
在实际的配置中,超越函数运算单元的数量一般会少于处理单元PE 的数量,这使得无法一次性将存储空间中的数据进行超越函数运算。
由此,根据本公开的一个实施方式,将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据包括:循环地将所述数据从存储空间中发送到M个超越函数运算单元,以便于得到结果数据,其中,可以循环Ceil(N/M)次,以将所述数据从存储空间中发送到M个超越函数运算单元,Ceil函数表示向上取整运算;并且其中,所述超越函数运算单元为硬件超越函数运算单元或者虚拟超越函数运算单元。需要理解的是,循环Ceil(N/M)次是一种优选实施方式,也是循环次数最少的一种实施方式,但也可以循环更多次数,本公开的技术方案并不局限于具体的循环次数。
图6a和图6b示出了根据本公开一个实施方式的将数据分两次从存储空间发送到M个超越函数运算单元的示意图。其中,图6中N示例地为8,其中存储空间S0,S3和S7中存储有有效数据,而其他存储空间S1,S2, S4,S5和S6中存储有无效数据,M示例地为4。需要理解的是,这里所述的存储空间S0-S7,是指不同给的存储地址,而不是指独立的存储器。
根据该实施方式,可以首先将存储空间S0,S1,S2和S3中的数据传送到这四个超越函数运算单元,当超越函数运算单元将这四个数据运算完毕之后,将运算结果传送回相应的存储空间S0,S1,S2和S3(如图6a 所示);接下来,可以将存储空间S4,S5,S6和S7中的数据传送到这四个超越函数运算单元,当超越函数运算单元将这四个数据运算完毕之后,将运算结果传送回相应的存储空间S4,S5,S6和S7(如图6b所示)。
需要理解的是,在第一次数据传送过程中,存储空间S0和S3中存储的数据为有效数据,而存储空间S1和S2中存储的数据为无效数据,根据本公开的实施方式,可以将有效数据和无效数据一并传送给四个超越函数运算单元SE0-SE3,超越函数运算单元SE0和SE3对有效数据进行正常的超越函数运算,而超越函数运算单元SE1和SE2也对这些无效数据进行一次超越函数的运算;在另一个实施方式中,可以仅将有效数据传送给超越函数运算单元SE0和SE3,而无需将无效数据传送给超越函数运算单元 SE1和SE2,由此超越函数运算单元SE1和SE2无需对无效数据进行运算操作。
在第二次数据传送过程中,存储空间S7中存储的数据为有效数据,而存储空间S4,S5和S6中存储的数据为无效数据,根据本公开的实施方式,可以将有效数据和无效数据一并传送给四个超越函数运算单元 SE0-SE3,超越函数运算单元SE3对有效数据进行正常的超越函数运算,而超越函数运算单元SE0,SE1和SE2也对这些无效数据进行一次超越函数的运算;在另一个实施方式中,可以仅将有效数据传送给超越函数运算单元SE3,而无需将无效数据传送给超越函数运算单元SE0,SE1和SE2,由此超越函数运算单元SE0,SE1和SE2无需对无效数据进行运算操作。
在上文中,存储空间的数量刚好是超越函数运算单元的整数倍,而在其他实施方式中,存储空间的数量也可以不是超越函数运算单元的整数倍。例如存储空间的数量仍然为8,即存储空间S0-S7,而超越函数运算单元的数量为5,即超越函数运算单元SE0-SE4,那么在此情况下,可以存在多种方式将数据从存储空间发送到超越函数运算单元。
根据本公开的一个实施方式,仍然可以分两次将存储空间中的数据发送到超越函数运算单元,第一次将存储空间S0-S3中的数据发送到超越函数运算单元,第二次将存储空间S4-S7中的数据发送到超越函数运算单元。
根据本公开的另一个实施方式,可以首先将存储空间S0-S4中的数据传送到超越函数运算单元SE0-SE4,在进行了第一次的超越函数运算之后,可以将剩余的三个存储空间S5-S7中的数据传送到超越函数运算单元 SE0-SE4中的任意三个。
在上文中,超越函数运算单元可以是硬件超越函数运算单元。在此情况下,超越函数运算单元的数量不容易发生变化,但硬件超越函数运算单元的运算速度更快。超越函数运算单元也可以是由软件形成的虚拟超越函数运算单元。虚拟超越函数运算单元的数量可以是可变的,但相较于硬件超越函数运算单元的于运算速度相对较慢。本公开实施例中,由于硬件超越函数运算单元的数量有限,硬件超越函数运算单元能够支持的超越函数运算的类别亦有限,每个硬件超越函数运算单元能够实现的运算精度也是确定,因此,在硬件超越函数运算单元不支持相应的超越函数运算,和/ 或硬件超越函数运算单元的运算精度不能满足要求时,可以调用相应的虚拟超越函数运算单元来实现。
根据本公开的一个实施方式,其中,所述超越函数运算单元为硬件超越函数运算单元,并且其中,将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据包括:响应于M不大于N,调用N-M个虚拟超越函数运算单元;将所述数据从所述存储空间中发送到所述M个硬件超越函数运算单元以及N-M个虚拟超越函数运算单元,以便于得到结果数据。
在该实施方式中,可以利用虚拟超越函数运算单元数量可变的特点来补充硬件超越函数运算单元数量不可变的缺陷,从而减少数据在存储空间与超越函数运算单元之间的存取次数。
例如存储空间的数量仍然为8,即存储空间S0-S7,而超越函数运算单元的数量为5(未示出),即超越函数运算单元SE0-SE4,那么在此情况下,可以用软件来形成虚拟超越函数运算单元SE5-SE7,从而可以一次性地将存储空间中的数据发送到超越函数运算单元,即SE0-SE7。
根据本公开的又一个实施方式,当所述硬件超越函数运算单元满足所需运算能力时,首先将有效数据发送到硬件超越函数运算单元。当硬件和软件超越函数运算单元均存在时,鉴于硬件超越函数运算单元的运算速度较快,可以优先采用硬件超越函数运算单元。
根据本公开的一个实施方式,这种满足所需运算能力可以包括:满足超越函数的运算类型;和/或满足超越函数的精度要求。
具体也然,当M个硬件超越函数运算单元能够支持相应的超越函数运算操作,和/或M个硬件超越运算函数单元的运算精度能够满足预设的超越函数运算需求时,可以首先将有效数据发送到硬件超越函数运算单元。然后,调用N-M个虚拟超越函数运算单元实现其他运算。若M个超越函数运算单元中存在M1个运算单元不能支持相应的超越函数运算操作,或 M个硬件超越运算函数单元中存在M2个运算单元的运算精度不能够满足预设的超越函数运算需求时,此时可以调用N-(M-M1)或N-(M-M2) 个虚拟超越函数运算单元来实现其他运算。其中,M1小于或等于M,M2 小于或等于M,M、M1及M2均为正整数。
需要理解的是,上述的两种情形仅仅是一种示例,根据本公开的交到,用户可以根据实际的需求将数据发送到适当的超越函数运算单元。
在该实施方式中,既利用了虚拟超越函数运算单元可扩展性强的优点,又利用了硬件超越函数运算单元运算速度快的优点。
图7示出了根据本公开一个实施方式的同时利用硬件超越函数运算单元和虚拟超越函数运算单元对不同数据进行运算的实现方式的示意图。
如图7所示,在存储空间S0-S7中,存储空间S0,S3和S7中存储有有效数据,而其他存储空间S1,S2,S4,S5和S6中存储有无效数据,硬件超越函数运算单元为5个,在图7中表示为HSE0-HSE4。根据本公开的实施方式,可以将存储空间S0,S3和S7中存储的有效数据优先发送到硬件超越函数运算单元HSE0-HSE4中的三个(例如HSE0-HSE2),当将全部有效数据发送到硬件超越函数运算单元之后,可以将其他无效数据发送到剩余的硬件超越函数运算单元以及附加地调用的虚拟超越函数运算单元VSE5-VSE7。
根据该实施方式,能够充分地利用硬件超越函数运算单元运算能力强的特点对有效数据进行运算,而对于无效数据,可以利用虚拟超越函数运算单元来进行运算,或者可以省略对无效数据的运算。
根据本公开的一个实施方式,其中,优先将需要特定运算的数据发送到硬件超越函数运算单元。
在该实施方式中,可以将参与某些需要较复杂超越函数运算的数据发送给硬件超越函数运算单元,而将需要较简单超越函数运算的数据发送给虚拟超越函数运算单元,其中,该较复杂的超越函数运算可以是硬件超越函数运算单元支持的运算。例如,对于sinx,cosx等需要较复杂运算的数据,优先发送给硬件超越函数运算单元,而将例如1/x等较简单运算的数据发送给虚拟超越函数运算单元。根据该实施方式,可以充分利用硬件超越函数运算单元较快的计算能力来处理需要较大运算量的超越函数。
在上文中,描述了硬件超越函数运算单元和虚拟超越函数运算单元可以并行地处理,根据本公开的其他实施方式,硬件超越函数运算单元和虚拟超越函数运算单元也可以串行地运行。
图8a至图8b示出了根据本公开实施方式的串行设置的硬件超越函数运算单元和虚拟超越函数运算单元的示意图。
根据本公开的一个实施方式,所述超越函数运算单元为硬件超越函数运算单元,并且其中,将至少一个所述数据从所述存储空间中发送到所述 M个超越函数运算单元,以便于得到结果数据包括:循环地分Ceil(N/M) 次执行如下操作,其中Ceil函数表示向上取整运算:将所述数据从存储空间中发送到M个硬件超越函数运算单元,以便于得到中间结果数据;将所述中间结果数据从M个硬件超越函数运算单元发送到M个虚拟超越函数运算单元进行进一步处理,以便于得到所述结果数据。
如图8a和图8b所示,图中N示例地为8,其中存储空间S0,S3和 S7中存储有有效数据,而其他存储空间S1,S2,S4,S5和S6中存储有无效数据,M示例地为4,例如包括四个硬件超越函数运算单元HSE0-HSE3 和四个虚拟超越函数运算单元VSE0-VSE3。如上文所述,这里所述的存储空间S0-S7,是指不同给的存储地址,而不是指独立的存储器。
如图8a所示,根据该实施方式,可以首先将存储空间S0,S1,S2和 S3中的数据传送到这四个硬件超越函数运算单元HSE0-HSE3,当硬件超越函数运算单元HSE0-HSE3将这四个数据运算完毕之后,生成第一中间运算结果,并将第一中间运算结果进一步传送到四个虚拟超越函数运算单元VSE0-VSE3,从而得到最终的运算结果。接下来,四个最终的运算结果被传送回相应的存储空间S0,S1,S2和S3。
接下来,如图8b所示,可以将存储空间S4,S5,S6和S7中的数据传送到这四个硬件超越函数运算单元HSE0-HSE3,当硬件超越函数运算单元HSE0-HSE3将这四个数据运算完毕之后,生成第二中间运算结果,并将第二中间运算结果进一步传送到四个虚拟超越函数运算单元 VSE0-VSE3,从而得到最终的运算结果。接下来,四个最终的运算结果被传送回相应的存储空间S4,S5,S6和S7。
如图8a和图8b所示的实施方式,可以利用软件超越函数运算对硬件超越函数运算单元得到的结果进行进一步的运算,以弥补硬件超越函数运算单元无法实现的功能,例如当运算结果需要达到特定精度而硬件超越函数运算单元无法实现时,可以利用虚拟超越函数运算单元对中间结果进行进一步的运算,从而得到期望的精度。
需要理解的是,在图8a至图8b所示的实施方式中,可以将最终的结果数据直接传送回相应的存储空间。
通过本公开所示的实施方式,用户可以在SIMT编程模式下使用 sin/cos/sqrt/log等复杂的越超函数功能。该方法完全基于编译器自动完成整个转换过程,程序员并不需要感知底层实现细节。
本公开还提供一种处理系统,包括:一个或多个处理单元;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理单元运行时,使得所述处理系统执行如上所述的方法。
本公开还提供一种计算机可读存储介质,包括计算机可执行程序,当所述计算机可执行程序由一个或多个处理器运行时,执行如上所述的方法。本实施例中,该处理器可以是通用处理器,如CPU。该处理器上可以运行有编译器程序,该编译器程序包含上述的计算机可执行程序。具体地,编译器可以根据上述实施例中的方法生成用于在上述处理系统的一个或多个处理单元上运行的指令。
图9是示出根据本披露实施例的一种组合处理装置9的结构图。如图 9中所示,该组合处理装置900包括计算处理装置902、接口装置904、其他处理装置906和存储装置908。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置910,该计算装置可以配置用于执行本文结合图1-图8b所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit, CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和 /或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图10中示出的芯片1002)。在一种实现中,该芯片是一种系统级芯片(System on Chip, SoC),并且集成有一个或多个如图10中所示的组合处理装置。该芯片可以通过对外接口装置(如图10中示出的对外接口装置1006)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图10对该板卡进行详细地描述。
图10是示出根据本披露实施例的一种板卡1000的结构示意图。如图 10中所示,该板卡包括用于存储数据的存储器件1004,其包括一个或多个存储单元1010。该存储器件可以通过例如总线等方式与控制器件1008 和上文所述的芯片1002进行连接和数据传输。进一步,该板卡还包括对外接口装置1006,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1012(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图9和图10的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备 (例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和 /或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory, RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、 GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory, RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory, DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory, EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
Claims (14)
1.一种在处理系统中处理超越函数的方法,其中,所述处理系统包括N个处理单元和M个超越函数运算单元,其中N和M为整数,所述方法包括:
将所述N个处理单元中的数据发送到存储空间中;
将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据;
将所述结果数据传送到所述存储空间;以及
将所述存储空间中的结果数据传送到所述N个处理单元。
2.根据权利要求1所述的方法,其中,将所述N个处理单元中的数据发送到存储空间中包括:
确定所述N个处理单元中参与超越函数运算的有效数据以及不参与超越函数运算的无效数据;
将有效数据和无效数据从处理单元中发送到存储空间中。
3.根据权利要求1所述的方法,其中,将所述N个处理单元中的数据发送到存储空间中包括:
确定所述N个处理单元中参与超越函数运算的有效数据以及不参与超越函数运算的无效数据;
将有效数据和无效数据的替代数据从所述N个处理单元中发送到存储空间中,其中,所述替代数据为符合超越函数运算规则的任意数据。
4.根据权利要求1所述的方法,其中,将所述N个处理单元中的数据发送到存储空间中包括:
确定所述N个处理单元中参与超越函数运算的有效数据以及不参与超越函数运算的无效数据;
仅将有效数据发送到相应的存储空间中。
5.根据权利要求2-4中任意一项所述的方法,其中,将所述存储空间中的结果数据传送到所述N个处理单元包括:仅将有效数据对应的有效结果数据传送到处理单元,而丢弃无效数据对应的无效结果数据。
6.根据权利要求2-5中任意一项所述的方法,其中,根据有效性标识的指示来确定有效数据和无效数据。
7.根据权利要求1-6中任意一项所述的方法,其中,将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据包括:
循环地将所述数据从存储空间中发送到M个超越函数运算单元,以便于得到结果数据;并且其中,所述超越函数运算单元为硬件超越函数运算单元或者虚拟超越函数运算单元。
8.根据权利要求1-6中任意一项所述的方法,其中,所述超越函数运算单元为硬件超越函数运算单元,并且其中,将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据包括:
响应于M不大于N,调用N-M个虚拟超越函数运算单元;
将所述数据从所述存储空间中发送到所述M个硬件超越函数运算单元以及N-M个虚拟超越函数运算单元,以便于得到结果数据。
9.根据权利要求8所述的方法,其中,当所述硬件超越函数运算单元满足所需运算能力时,首先将有效数据发送到硬件超越函数运算单元。
10.根据权利要求9所述的方法,其中,满足所需运算能力包括:
满足超越函数的运算类型;和/或
满足超越函数的精度要求。
11.根据权利要求8所述的方法,其中,优先将需要特定运算的数据发送到硬件超越函数运算单元。
12.根据权利要求1-6中任意一项所述的方法,其中,所述超越函数运算单元为硬件超越函数运算单元,并且其中,将至少一个所述数据从所述存储空间中发送到所述M个超越函数运算单元,以便于得到结果数据包括:
循环地执行如下操作:
将所述数据从存储空间中发送到M个硬件超越函数运算单元,以便于得到中间结果数据;
将所述中间结果数据从M个硬件超越函数运算单元发送到M个虚拟超越函数运算单元进行进一步处理,以便于得到所述结果数据。
13.一种处理系统,包括:
一个或多个处理单元;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理单元运行时,使得所述处理系统执行如权利要求1-12中任意一项所述的方法。
14.一种计算机可读存储介质,包括计算机可执行程序,当所述计算机可执行程序由一个或多个处理器运行时,执行如权利要求1-12中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110991009.3A CN115729521A (zh) | 2021-08-26 | 2021-08-26 | 一种在处理系统中处理超越函数的方法和相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110991009.3A CN115729521A (zh) | 2021-08-26 | 2021-08-26 | 一种在处理系统中处理超越函数的方法和相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729521A true CN115729521A (zh) | 2023-03-03 |
Family
ID=85289761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110991009.3A Pending CN115729521A (zh) | 2021-08-26 | 2021-08-26 | 一种在处理系统中处理超越函数的方法和相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729521A (zh) |
-
2021
- 2021-08-26 CN CN202110991009.3A patent/CN115729521A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112465133B (zh) | 控制流多核并行方法、计算机设备和存储介质 | |
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
US11775808B2 (en) | Neural network computation device and method | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN115729521A (zh) | 一种在处理系统中处理超越函数的方法和相关产品 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
WO2022111013A1 (zh) | 支援多种访问模式的设备、方法及可读存储介质 | |
CN115373583A (zh) | 数据存取方法和相关产品 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2022001457A1 (zh) | 一种计算装置、芯片、板卡、电子设备和计算方法 | |
CN112395002B (zh) | 运算方法、装置、计算机设备和存储介质 | |
WO2022001454A1 (zh) | 集成计算装置、集成电路芯片、板卡和计算方法 | |
WO2022001499A1 (zh) | 一种计算装置、芯片、板卡、电子设备和计算方法 | |
US11392667B2 (en) | Systems and methods for an intelligent mapping of neural network weights and input data to an array of processing cores of an integrated circuit | |
CN114281560A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
WO2022001438A1 (zh) | 一种计算装置、集成电路芯片、板卡、设备和计算方法 | |
CN114489803A (zh) | 处理装置、处理方法及相关产品 | |
CN114625370A (zh) | 在主机和设备之间进行数据布局的方法、设备和异构系统 | |
CN114489804A (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 |