CN108509270A - 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 - Google Patents
一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 Download PDFInfo
- Publication number
- CN108509270A CN108509270A CN201810188779.2A CN201810188779A CN108509270A CN 108509270 A CN108509270 A CN 108509270A CN 201810188779 A CN201810188779 A CN 201810188779A CN 108509270 A CN108509270 A CN 108509270A
- Authority
- CN
- China
- Prior art keywords
- core
- matrix
- row
- sample
- tile
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明提出了一种国产申威26010众核处理器上K‑means算法的高性能并行实现方法,基于国产处理器申威26010平台,针对聚类阶段,本发明设计了一种块距离矩阵计算与规约操作融合的计算框架,该框架使用三层分块策略进行任务划分,同时设计协作式的核间数据共享方案和基于寄存器通信机制的簇标签规约方法,及使用双缓冲技术,指令重排等优化技术。针对更新中心点阶段,本发明设计了动态调度的任务划分方式。通过在真实数据集上测试,本发明可以达到最大348.1GFlops的浮点计算性能,相比理论上最大性能,可以获得47%~84%的浮点计算效率,相比不融合的计算方式,可以获得最高1.7x,平均1.3x的加速比。
Description
技术领域
本发明属于机器学习中的聚类算法的并行加速研究领域,具体涉及K-means算法在国产申威26010众核处理器上的高性能并行实现方法。
背景技术
K-means是无监督学习中一种经典的基于距离计算的聚类算法,它根据样本间的相似度度量将样本数据划分成不同的簇,使同一簇中的样本间的相似度最大化。由于简单,易实现,无需标记样本等特点,K-means在图像处理、数据挖掘、文本聚类、生物学等领域有着广泛的应用,并越来越多的被用作许多更复杂算法的预处理手段。大数据时代的到来,使得样本数据的特征维度从原来的几十维上升到了数以千计,相应的,对计算速度也提出了更高的要求,因此,研究K-means的并行加速对于实际应用是非常重要且有意义的。
目前,已有许多基于GPU平台的并行化K-means算法的研究。其中,单GPU上最好的实现方案是You Li(Li Y,Zhao K,Chu X,et al.Speeding up k-Means algorithm byGPUs[J].Journal of Computer&System Sciences,2013,79(2):216-229.)的算法。You Li的算法率先提出,对于高维度样本,K-means的聚类过程跟基础线性代数库(BLAS)中的矩阵乘矩阵(GEMM)函数的计算模式有很大的相似性,他通过采用GEMM的并行化方案来计算K-means聚类阶段的各样本间的距离,并将计算结果存储到一个距离矩阵,其后通过读取距离矩阵并进行规约操作,求出各样本的簇标签。该方案充分利用GPU的强大计算能力。但是K-means算法真正需要得到的结果是每个样本的簇标签,距离矩阵只是求解簇标签数组的一个中间数据,在You Li的算法中,距离矩阵计算完成后,被写入了内存,接下来又被从内存读入,增加了额外的访存操作,提高了***的通信压力,尤其突出了现代大多数的高性能硬件平台(CPU,GPU,SW26010等)普遍存在的访存墙问题。此外,由于缺乏精细调优,其并行实现只能达到机器峰值浮点性能的15.9%。
国产申威26010众核处理器是我国自主研发的一款主从核异构的高性能平台,它由4个核组组成,核组间通过Noc(Network on Chip)相连,并共享一个32GB的主存空间。每个核组由1个主核和一个8×8的从核阵列组成。主核和从核都支持256位向量浮点指令。从核阵列可以提供742.4GFlops的浮点计算能力。每个从核拥有一个独立(私有)的用户可控的64KB的LDM(Local DeviceMemory,局部存储器)空间。从核可以直接访问主存,也可以采用DMA接口进行主存与本地LDM间的数据传输,且后者具有更小的延迟,提供了实际22GB/s的访存带宽。从核间通过行/列数据总线相连,这使得同行及同列的不同从核间可以通过寄存器通信达到高效的数据共享。从核有2条流水线,P0和P1。其中标量整数指令可以在P0或者P1上执行;浮点运算指令只能在P0上执行;访存,寄存器通信,控制转移指令只能在P1上执行。因此,对于浮点计算占优的算法来说,充分利用P0流水线来进行浮点运算,可以获得更高的浮点计算性能。申威26010众核处理器各项软硬件参数如表1所示:
表1:申威26010众核处理器软硬件参数
同时,目前国产申威平台上,还没有高性能的K-means算法实现,不利用机器学***台上的应用与普及。
基于申威26010平台对于高性能聚类算法的需求,及已有并行化方法的不足,在申威26010平台上开发一套高效的K-means并行实现方法是必需的。
发明内容
本发明的解决的问题是:克服现有申威26010平台上没有高性能的聚类算法的问题,提供了一种将块距离矩阵计算与簇标签规约融合的K-means并行实现框架,通过三层分块,协作式的核间数据共享,双缓冲,指令重排和动态调度等优化方法,充分利用硬件平台的计算资源,提高K-means的计算性能。
K-means算法包括(a)初始化中心点步骤、(b)聚类步骤、(c)计算迭代收敛值步骤和(d)更新中心点步骤;首先,完成步骤(a)、(b),再根据(c)求出迭代收敛值并判断是否收敛,若没有收敛,再次进入步骤b-d组成的主循环中;若收敛,则返回当前聚类结果并退出,输出每个样本对应的簇标签;本发明主要对耗时比较多的(b)和(d)步骤进行并行优化。本发明基于国产申威26010处理器的一个核组,每个核组由一个主核与64个从核组成。在聚类步骤,传统方法主要采用先计算整个距离矩阵,在对距离矩阵进行规约求取簇标签的方法,本发明提供了一种块距离矩阵计算与规约操作融合的计算框架。该框架减少了对整个距离矩阵的存储,同时减少了2次对距离矩阵的读写操作,提供了更有的访存路径。该框架使用三层分块策略,同时设计协作式的核间数据共享方案,和基于寄存器通信机制的簇标签规约方法,并使用双缓冲和指令重排技术进一步提升性能。在更新中心点步骤,本发明设计了动态调度的任务划分方式。
本发明的一种SW26010众核处理器上高效并行的K-means算法具体实现如下:
(1)聚类阶段。本阶段为每个样本求出距离最近的中心点,并将此中心点下标存储为此样本的簇标签。所述方法提供了一种将块距离矩阵计算与簇标签规约融合的并行实现框架,所述框架以接口层、驱动层和核心层的三层代码设计结构进行聚类的并行实现。其中,接口层为主核端操作,驱动层和核心层为从核端操作;所述框架采用逻辑分块、物理分块和寄存器分块的三层分块算法。其中,驱动层进行逻辑分块和物理分块操作,核心层进行寄存器分块操作。首先,接口层读取输入数据,将输入数据存成一个n×d维的样本矩阵,n为样本的个数,d为样本的维度,将中心点存成d×k维的中心点矩阵,其中k为簇数(即中心点的个数),接着,接口层对输入参数n,d,k进行检查,若n,d,k为正整数,则检查合格,调用驱动层函数。然后,驱动层进行逻辑分块和物理分块。首先,将样本矩阵和中心点矩阵分别在n、d和k维进行逻辑分块划分,得到样本矩阵块和中心点矩阵块。以n,k,d的for循环组织顺序对各个块进行遍历;在n循环内部进行k循环,在k循环内部先进行d循环,再调用基于寄存器通信的两步的簇标签规约函数。在d循环内部首先发起DMA传输,将样本矩阵块与中心点矩阵块从主存传到从核上的LDM中,然后调用核心层函数进行所述样本矩阵块与中心点矩阵块的距离计算,得到一个距离矩阵块。然后,驱动层将逻辑分块得到的样本矩阵块,中心点矩阵块和距离矩阵块进一步进行物理块划分,将其分别划分为64个更小的块,称为tile,每个样本矩阵tile和中心点矩阵tile被传输到64个从核中的对应从核上的高效缓存LDM中,如样本块的第i个tile和中心点块的第i个tile被传输到第i个从核上。同时每个从核在其LDM中为距离矩阵tile开辟内存空间,并负责计算所述距离矩阵tile的值,驱动层调用核心层函数进行所负责的距离矩阵tile的计算。在核心层,每个从核在计算所负责的距离矩阵tile时,需要从别的从核获得计算所述距离矩阵tile所需要的样本矩阵tile和中心点矩阵tile。所述方法设计协作式的核间数据共享方案。所述方案分8步进行数据交换,每进行一步交换,每个从核会获得计算所需要的数据,然后调用一次基于寄存器分块方法的计算函数。在计算函数中,每个从核通过汇编代码的方式,进行所负责的距离矩阵tile的计算。紧接着,每个从核完成其上的距离矩阵tile的计算后,采用基于寄存器通信的簇标签规约方案,求取所述距离矩阵tile每一行的最小值,所述最小值所对应的全局列标即为相应全局行标所对应的样本的簇标签,最后将所述样本的簇标签存储到主存中,完成聚类操作;
(2)更新中心点阶段。本阶段将每个簇的中心点更新为属于本簇的所有样本的加权平均。所述聚类步骤为每个样本找到了所属的簇,接下来是按照设定的聚类的中心点的个数将所述中心点更新为属于所述簇的所有所述样本的加权平均。所述方法采用对中心点进行任务划分的并行方式,设计了一种基于工作共享的任务调度策略,每个从核负责所分配到的一部分中心点的更新计算;每个从核在处理自己要负责的簇的更新时,首先,开辟一个长度为d的数组new_centroid,并将其置为零,所述new_centroid用于存储新的所述簇的中心点,然后读取每一个样本的簇标签,并判断是否属于当前处理的簇,若属于,则将对应的样本读入到该从核的LDM空间中,将该样本累加到new_centroid中。遍历完簇标签数组后,new_centroid中存储了属于所述簇的所有样本的对应维度的累加值,然后将new_centroid的各个维度的值除以所述簇中的样本的个数,即得到所述簇的中心点的新值。
步骤(1)中,驱动层在d循环内部首先发起DMA传输,将样本矩阵块与中心点矩阵块从主存传到从核上的LDM中,然后调用核心层函数进行所述样本矩阵块与中心点矩阵块的距离计算,得到一个距离矩阵块。在该步骤中,受益于DMA传输的异步性,本发明设计了采用基于访存-计算重叠的双缓冲机制,在计算当前循环中距离矩阵块的同时,发起下一次循环中的样本矩阵块与中心点矩阵块的DMA读取操作,将访存与计算时间掩盖,提高计算性能。
步骤(1)中,每个从核在计算所负责的距离矩阵tile时,所述设计协作式的核间数据共享方案具体如下:所述方法分8步进行64个从核(从核以8×8的拓扑排列)之间的数据共享:第i步(0≤i≤7)时,第i行第i列的从核行广播其本地的样本矩阵tile到同一行的所有从核中,列广播其本地的中心点矩阵tile到同一列的所有从核中,被广播到的从核接收相应的数据到自己的数据缓冲中;同时,第i列所有的从核(除第i行第i列从核外)行广播本地的样本矩阵tile,第i行所有从核列广播(除第i行第i列从核外)本地的中心点矩阵tile,被广播到的从核接收相应的数据到自己的数据缓冲中;每一步数据传输完成后,每个从核使用数据缓冲中的数据,调用基于寄存器分块方法的计算函数进行所述距离矩阵的计算。
步骤(1)中,核心层中所述的基于寄存器分块方法的计算函数具体如下:将样本矩阵tile、中心点矩阵tile和距离矩阵tile,进一步划分为16×1的样本矩阵pannel,1×2的中心点矩阵pannel,及其相应的16×2的距离矩阵pannel。核心层通过编写汇编代码的方式进行;所述寄存器分块,在代码级别多产生了3个for循环,所述方法采用n,k,d的循环顺序进行代码结构组织,并在最内层循环内部,调用样本矩阵pannel与中心点矩阵pannel进行距离计算得到距离矩阵pannel的最内层汇编函数。
步骤(1)中,每个从核采用寄存器分块方法后,在最内层循环内部调用样本矩阵pannel与中心点矩阵pannel进行距离计算得到距离矩阵pannel的最内层汇编函数。所述最内层汇编函数采用如下方式进行;样本矩阵pannel的元素使用4个浮点向量寄存器存储,每4个元素放进一个向量寄存器中;中心点矩阵pannel的元素使用2个浮点向量寄存器存储,每个中心点矩阵pannel的元素拓展成4份放进一个向量寄存器中;计算两个元素之间欧拉距离时,两个元素先要做减法,再将减法的结果做乘法的平方操作。故,使用8个寄存器存储所述样本矩阵pannel中的元素与所述中心点矩阵pannel对应的矩阵元素差的计算结果,使用8个寄存器存储最终求得的欧拉距离,即所述距离矩阵元素。所述计算中共使用了22个浮点向量寄存器;所述申威26010处理器共有32个寄存器,除上述使用的22个寄存器外,剩下的10个寄存器用于存储程序中的中间变量或用作循环变量,寄存器资源使用合理且高效。同时,对汇编代码进行指令重排,进一步提升程序性能。
步骤(1)中,所述采用寄存器分块方法后,对最内层汇编函数进行指令重排,实现如下:一方面,基于申威26010的双流水线,双发射特点,尽可能的使计算指令和访存指令挨着,使其能够同时发射;另一方面,将有依赖的指令尽可能的排的远一些,减少指令停拍。
步骤(1)中,所述基于寄存器通信的两步的簇标签规约函数实现如下:第一步,每个从核对本从核上的距离矩阵tile进行规约,求所述距离矩阵tile每一行的最小值,及最小值所对应的列标。第二步,同一行上的8个从核,分三次进行两两规约,最终将同一行从核上的所有距离矩阵tile的每一行的最小值及其下标求出。第一次,第1、3、5、7列的将自己第一步得到的结果封装成向量,通过寄存器通信函数put_r分别发送到第0、2、4、6列的从核,第0、2、4、6列从核通过使用get_r接收到数据后,将其与本地的最小值进行比较,将较小的值及其下标保存下来;第二次,第2列和第6列的从核将上一次所得结果分别发送给第0列和第4列从核,第0列和第4列从核接收到数据后,将其与本地的最小值进行比较,将最小值及其下标保存下来;第三次,第4列的从核将上一次所得结果发送给第0列的从核,第0列从核接收到数据后,将接收到的数据与本地的最小值进行比较,所得最小值所对应的下标即为当前行的样本的簇标签。
步骤(2)中,所述更新中心点步骤中,所述方法采用对中心点进行任务划分的并行方式,所述的动态调度策略如下:首先,建立一个全局的共享任务池,每个从核都可以访问所述任务池。所述任务池中的每个任务代表一个中心点的更新操作,k个任务被依次标号为0,1,…(k-1)。然后,每个从核通过使用原子指令fetch-and-add互斥的从共享任务池中取任务标号,所述原子指令保证了同一时刻只有一个从核读取并修改了全局任务池中的任务标号,保证了一致性。每个从核完成当前任务后,就会从共享任务池取下一个任务,直到任务池的任务被取完。
本发明与现有技术相比的有益效果在于:
(1)提供了一种块距离矩阵计算与规约操作融合的计算框架。该框架减少了对整个距离矩阵的存储,以块为单位对距离矩阵进行计算,在计算出一块距离矩阵的同时,规约出相应块对应的样本所属的簇,减少了对距离矩阵的存储及两次对距离矩阵的内存访问(一次读,一次写)操作,提供了更优的访存路径。
(2)此外,通过使用三层分块策略,同时设计协作式的核间数据共享方案,和基于寄存器通信机制的簇标签规约方法,双缓冲,指令重排和动态调度等优化方法,K-means的性能被进一步大幅提升。
(3)通过采用UCI Machine Learning Repository中的5个数据集进行测试,本发明获得了最高46.9%的浮点运算性能;相比该平台理论上可获得的K-means最大性能,获得了47%~84%的浮点计算效率;相比传统的不融合方法的实现,获得了最高1.7x,平均1.3x的加速比。
附图说明
图1为本发明并行K-means方法计算过程基本流程图;
图2为对输入矩阵进行分块映射的示意图;
图3为从核间数据共享的图;
图4为簇标签规约的算法实现图;
图5为在申威众核平台上,本发明的方法与不融合方法的实现的性能对比图;
图6为在申威众核平台上,本发明采用的不同优化方法的性能效果图;
图7为在申威众核平台上,本发明取得的浮点性能与理论值的对比图。
具体实施方式
下面结合附图和示例图对本发明进行详细说明。
如图1所示,本发明是基于国产申威26010众核处理器的K-means算法的高性能并行实现方法。K-means的计算过程是一个迭代求解的过程,整个流程分成四个主要步骤:初始化中心点、聚类,计算迭代收敛值,更新中心点。首先,采取一定的初始化中心点的方法,把中心点矩阵赋初值;然后初始聚类,求出迭代收敛值,判断一下,是否收敛,若没有收敛,进入主循环中。若收敛,则返回当前聚类结果。主循环中,主要执行了两个操作:聚类和更新中心点。当主循环中的聚类效果达到收敛标准时退出主循环。算法最后的输出是样本的类标签。
本发明采用随机化的初始化中心点的方式,没有涉及到其他更优化初始化算法如K-means++等的并行化研究。采用所有样本到其对应的中心点的均方误差作为迭代收敛条件。且均方误差的计算被整合到聚类操作中。并行算法的正确性采用与串行算法对比的方式保证。
由于涉及到的四个步骤中,聚类和更新中心点操作位于主循环中,被反复的执行,它们属于K-means算法的热点函数。故本发明的研究重点是聚类操作和更新中心点操作的并行化加速方案,使用申威提供的Athread线程库将聚类和更新中心点操作进行多线程并行。
聚类步骤主要是为每个样本找到距离最近的中心点。它是通过融合块距离矩阵的计算和类标签规约来实现的。如图2所示,对样本矩阵T(n×d)与中心点矩阵C(d×k)进行分块,得到规模为bn×bd的样本矩阵块δT(i,j)和bd×bk的中心点矩阵块δC(i,j),其中,i和j分别代表行/列方向上的块号。同时在LDM中为距离矩阵块δD(i,j)开辟bn×bk的临时存储空间。每一个距离矩阵块δD(i,j)由如下公式计算:
符号的含义如下:若X,Y和Z分别为n×d,d×k和n×k的矩阵,则公式中的代表两个矩阵之间的距离计算,即Z矩阵的每一个元素z(i,j),0≤i<n,0≤j<d,通过如下公式得到:
其中x(i,k)和y(k,j)分别为矩阵X中第i行第k列和矩阵Y中第k行第j列的元素。
接着,对每一个样本矩阵块和中心点矩阵块进一步分块,每个块划分成更小的8×8的tile,得到规模为tn×td的样本矩阵tile∈T(p,q),td×tk的中心点矩阵tile∈C(p,q)和tn×tk的距离矩阵tile∈D(p,q),并依次映射到8×8的从核阵列上。例如CPE(p,q)(0≤p<8,0≤q<8)上存储的是∈T(p,q),∈C(p,q)和∈D(p,q)。每个从核负责其上的∈D(p,q)的更新,即:
由上面的公式可知,每个从核在计算本地的∈D(p,q)时,所需要的数据并不都在本地。本发明采用协作式的数据共享方案,实现从核之间的数据交换。申威上的从核采取8×的拓扑结果,为了叙述简单,我们以3×3的从核阵列为例,叙述数据共享的过程。如图3所示,初始状态,每个从核CPE(p,q)(0≤p<3,0≤q<3)上存储的是本地的样本矩阵tile∈T(p,q)和中心点矩阵tile∈C(p,q),样本矩阵tile,中心点矩阵tile和距离矩阵tile在图中分别以深灰小矩形,浅灰小矩形和黑色小矩形表示,其中实线矩形代表本地的矩阵,虚线矩形代表接收到的矩阵。每个CPE负责计算本地的距离矩阵tile∈D(p,q),即3个tile pair之间的累加计算结果,公式如下:
分3步完成此操作。第l步获取想要的第l个tile pair的数据,然后累加此tilepair的计算结果,即实现的计算。具体的,第0步的时候每个从核计算Pair0,即每个从核实现如下计算:此时需要,CPE(0,0)行广播本地的样本矩阵tile∈T,列广播本地的中心点矩阵tile∈C。CPE(0,-)(第0行的除CPE(0,0)以外的全部从核)列广播本地的中心点矩阵tile∈C,CPE(-,0)(第0列的除CPE(0,0)以外的全部从核)行广播本地的样本矩阵tile∈T。广播完成后,所有的从核得到了计算需要的tile,然后进行计算。第1步的时候每个从核计算Pair 1,即每个从核实现如下计算:此时需要,CPE(1,1)行广播本地的样本矩阵tile∈T,列广播本地的中心点矩阵tile∈C。CPE(1,-)(第1行的除CPE(1,1)以外的全部从核)列广播本地的中心点矩阵tile∈C,CPE(-,1)(第1列的除CPE(1,1)以外的全部从核)行广播本地的样本矩阵tile∈T。广播完成后,所有的从核得到了计算需要的tile,然后进行计算。接下来以同样的方式进行第2步,计算Pair2,至此,每个从核完成本地的距离矩阵tile∈D(p,q)的更新。
每个从核在计算本地的∈D(p,q)时,使用寄存器分块,将∈T,∈C和∈D划分为规模为16×1的样本矩阵pannel,1×2的中心点矩阵pannel,及其相应的16×2的距离矩阵pannel,并分别记为γT,γC和γD。采用手写汇编的方式,进行的距离计算。首先,γT的元素使用4个浮点向量寄存器存储,每4个元素放进一个向量寄存器中;γC的元素使用2个浮点向量寄存器存储,γC的每个元素拓展成4份放进一个向量寄存器中;因为计算两个元素之间欧拉距离时,两个元素先要做减法,再将减法的结果做乘法的平方操作。故,需要使用8个寄存器存储所述γT中的元素与所述γC对应的矩阵元素差的计算结果,使用8个寄存器存储最终求得的欧拉距离,即所述γD中的元素。同时,基于申威26010的双流水线,双发射特点,对汇编代码进行指令重排,一方面,尽可能的使得计算指令和访存指令能够同时发射,另一方面,调整指令顺序,将有依赖的指令尽可能的排的远一些,减少指令停拍。
每个从核在完成本地的∈D(p,q)计算后,即所有64个从核合作完成了δD(i,j)块的其中一个block pair的计算:接着进行下一块 的累加计算,直到所有的block pair累加完成,δD(i,j)才完成计算(如公式(1)所示)。为了掩盖访存开销,本发明使用了双缓冲技术,使访存与计算相重叠:在计算的同时,使用异步DMA方式预取δT(i,l+1)和δC(l+1,j)的数据。
一个距离矩阵块δD(i,j)完成计算后,接下来需要求得δD(i,j)中包含的每个样本的距离最近的中心点的下标,作为其簇标签。由分块策略可知,距离矩阵块δD(i,j)被均匀的分布在8×8的从核阵列上,如,CPE(p,q)上的LDM中拥有距离矩阵块∈D(p,q),∈D(p,q)中存储的是样本到一部分中心点的距离。如图4所示,本发明设计了一种基于寄存器通信的两步的簇标签规约函数实现如下:第一步,本地规约。每个从核对本从核上的距离矩阵tile进行规约,求所述距离矩阵tile每一行的最小值(均方误差),及最小值所对应的列标(簇标签)。第二步,从核间规约。同一行上的8个从核,分三次进行两两规约,最终将同一行从核上的所有距离矩阵tile的每一行的最小值及其下标求出。图中是以第p行的从核为例进行说明的。第一次,从核CPE(p,1),CPE(p,3),CPE(p,5),CPE(p,7)将自己第一步得到的结果封装成向量,通过寄存器通信函数put_r分别发送到从核CPE(p,0),CPE(p,2),CPE(p,4),CPE(p,6),接收方从核通过使用get_r接收到数据后,将其与本地的最小值进行比较,将较小的值及其下标保存下来;第二次,CPE(p,2),CPE(p,6)从核将上一次所得结果分别发送给PE(p,0),CPE(p,4)从核,接收方从核接收到数据后,将其与本地的最小值进行比较,将数值较小的值及其下标保存下来;第三次,CPE(p,4)从核将上一次所得结果发送给CPE(p,0)从核,CPE(p,0)从核进行最小值比较后,所得数值较小的值所对应的下标即为当前行的样本的簇标签。最终CPE(p,0)将得到的全部的簇标签结果和均方误差结果(全局簇标签和全局均方误差)传回主存中,进行结果写回,完成聚类步骤。
更新中心点步骤,由于属于每个簇的样本的数目可能会分布的不均匀,静态的分配任务会导致从核间存在着严重的负载不均衡问题,本发明设计了一种基于工作共享的动态任务调度方式。首先,建立一个全局的共享任务池,每个从核都可以访问所述任务池。所述任务池中的每个任务代表一个中心点的更新操作,k个任务被依次标号为0,1,…(k-1)。然后,每个从核通过使用原子指令fetch-and-add互斥的从共享任务池中取任务标号,所述原子指令保证了同一时刻只有一个从核读取并修改了全局任务池中的任务标号,保证了一致性。每个从核完成当前任务后,就会从共享任务池取下一个任务,直到任务池的任务被取完。
本发明的测试平台为申威26010众核平台的一个核组,包含1个主核和64个从核。如图5所示,使用UCI Machine Learning Repository测试数据集进行测试时,本发明提出的算法相比传统的不融合的方法所获得的性能提升,其中两个算法采用相同的优化方法,如双缓冲,指令重排等。从图5统计的性能数据可以看出,相比不融合的实现,本发明获得了最高1.7x,平均1.3x的加速比。
如图6所示,使用4组随机生成的数据进行测试,本发明所使用的各种优化方法所带来的性能提升。从图6中统计的数据中,可以看出只使用分块技术的算法只能获得103.4~112.8GFlops的性能。通过使用指令重排方法,算法获得了最高2.3x的加速提升。通过使用双缓冲技术,本发明又获得了30%的性能提升。通过使用动态调度技术,K-means算法总体获得的加速效果并不明显,但是对于更新中心点步骤来说,它带来了40%的性能收益。
如图7所示,表示在UCI测试数据集下,本发明所获得的浮点运算性能与该平台上理论上K-means可以获得的最大性能的对比情况。从图7统计的性能数据可以看出,本发明可以达到348.1GFlops的计算性能,相比理论浮点最大性能,获得了47%~84%的浮点计算效率。
总之,本发明提供了一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,提供了一种块距离矩阵计算与规约操作融合的计算框架。该框架减少了对整个距离矩阵的存储,以块为单位对距离矩阵进行计算,在计算出一块距离矩阵的同时,规约出相应块对应的样本所属的簇,减少了对距离矩阵的存储及两次对距离矩阵的内存访问(一次读,一次写)操作。针对国产申威26010平台,该框架使用三层分块策略进行任务划分,并设计协作式的核间数据共享方案以提高数据的重用率,使用寄存器通信机制实现簇标签规约,并使用双缓冲,指令重排和动态调度等优化方法,大幅提升函数性能。
同时,基于国产处理器申威26010平台,针对聚类阶段,本发明设计了一种块距离矩阵计算与规约操作融合的计算框架,该框架使用三层分块策略进行任务划分,同时设计协作式的核间数据共享方案和基于寄存器通信机制的簇标签规约方法,及使用双缓冲技术,指令重排等优化技术。针对更新中心点阶段,本发明设计了动态调度的任务划分方式。通过在真实数据集上测试,本发明可以达到最大348.1GFlops的浮点计算性能,相比理论上最大性能,可以获得47%~84%的浮点计算效率,相比不融合的计算方式,可以获得最高1.7x,平均1.3x的加速比。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (10)
1.一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,所述方法基于国产申威26010处理器的一个核组,每个核组由一个主核与64个从核组成,所述K-means算法包括:(a)初始化中心点步骤、(b)聚类步骤、(c)计算迭代收敛值步骤和(d)更新中心点步骤;首先,完成步骤(a)、(b),再根据(c)求出迭代收敛值并判断是否收敛,若没有收敛,再次进入步骤b-d组成的主循环中;若收敛,则返回当前聚类结果并退出,输出每个样本对应的簇标签;其特征在于:所述方法主要对耗时比较多的(b)和(d)步骤进行并行优化;
所述(b)聚类步骤实现为:计算每个样本与所有中心点的距离,为每个样本求出距离最近的中心点,并将中心点下标存储为此样本的簇标签,进而将所有所述的样本划分到距离最近的簇中;
所述(d)更新中心点步骤为:将每个所述簇对应的所述中心点更新为属于所述簇的所有所述样本的加权平均。
2.根据权利要求1所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述(b)聚类步骤实现如下:建立一种将块距离矩阵计算与簇标签规约融合的并行实现框架,所述框架以接口层、驱动层和核心层的三层代码设计结构进行聚类的并行实现,其中接口层为主核端操作,驱动层和核心层为从核端操作;所述框架采用逻辑分块、物理分块和寄存器分块的三层分块算法,其中驱动层进行逻辑分块和物理分块操作,核心层进行寄存器分块操作,具体实现如下:
(1)首先,接口层读取输入数据,将输入数据存成一个n×d维的样本矩阵,n为样本的个数,d为样本的维度,将中心点存成d×k维的中心点矩阵,其中k为簇数,即中心点的个数,接着接口层对输入参数n,d,k进行检查,若n,d,k为正整数,则检查合格,调用驱动层函数;
(2)然后驱动层进行逻辑分块和物理分块,即将样本矩阵和中心点矩阵分别在n、d和k维进行逻辑分块划分,得到样本矩阵块和中心点矩阵块,以n,k,d的for循环组织顺序对各个块进行遍历;在n循环内部进行k循环,在k循环内部先进行d循环,调用基于寄存器通信的两步的簇标签规约函数;在d循环内部首先发起DMA传输,将样本矩阵块与中心点矩阵块从主存传到从核上的LDM中,再调用核心层函数进行所述样本矩阵块与中心点矩阵块的距离计算,得到一个距离矩阵块;
(3)接着驱动层将逻辑分块得到的样本矩阵块,中心点矩阵块和距离矩阵块进一步进行物理块划分,分别划分为64个更小的距离矩阵块,称为tile,分别为样本矩阵tile和中心点矩阵tile和距离矩阵tile;每个样本矩阵tile和中心点矩阵tile被DMA传输到64个从核中的对应从核上的高效缓存LDM中,如果样本矩阵块的第i个tile和中心点矩阵块的第i个tile被传输到第i个从核上;同时每个从核在其LDM中为距离矩阵tile开辟内存空间,并负责计算所述距离矩阵tile的值,驱动层调用核心层函数进行所负责的距离矩阵tile的计算;
(4)在核心层,每个从核在计算所负责的距离矩阵tile时,需要从别的从核获得计算所述距离矩阵tile所需要的样本矩阵tile和中心点矩阵tile;调用一次基于寄存器分块方法的计算函数;在计算函数中,每个从核通过汇编代码的方式,进行所负责的距离矩阵tile的计算;
(5)接着每个从核完成其上的距离矩阵tile的计算后,采用基于寄存器通信的簇标签规约方法,求取所述距离矩阵tile每一行的最小值,所述最小值所对应的全局列标即为相应全局行标所对应的样本的簇标签;
(6)最后将所述样本的簇标签存储到主存中,完成聚类操作。
3.根据权利要求1所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述(d)更新中心点步骤实现如下:
(1)所述聚类步骤为每个样本找到了所属的簇,按照设定的聚类的中心点的个数将所述中心点更新为属于所述簇的所有所述样本的加权平均;
(2)采用对中心点进行任务划分的并行方式设计,采用一种基于工作共享的任务调度策略,每个从核负责所分配到的一部分中心点的更新计算;每个从核在处理自己要负责的簇的更新时,首先,开辟一个长度为d的数组new_centroid,并将其置为零,所述new_centroid用于存储新的所述簇的中心点;然后读取每一个样本的簇标签,并判断是否属于当前处理的簇,若属于当前处理的簇,则将对应的样本读入到该从核的LDM空间中,将该样本累加到new_centroid中;
(3)遍历完簇标签数组后,new_centroid中存储了属于所述簇的所有样本的对应维度的累加值,再将new_centroid的各个维度的值除以所述簇中的样本的个数,即得到所述簇的中心点的新值。
4.根据权利要求2所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述驱动层在d循环内部首先发起DMA传输,得到一个距离矩阵块时,基于DMA传输的异步性,采用基于访存-计算重叠的双缓冲机制,在计算当前循环中距离矩阵块的同时,发起下一次循环中的样本矩阵块与中心点矩阵块的DMA读取操作,将访存与计算时间掩盖,提高计算性能。
5.根据权利要求2所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述聚类步骤的(4)中,每个从核在计算所负责的距离矩阵tile时,需要从别的从核获得计算所述距离矩阵tile所需要的样本矩阵tile和中心点矩阵tile时,通过设计协作式的核间数据共享方法实现;所述核间数据共享方法分8步进行64个从核,即从核以8×8的拓扑排列之间的数据共享,第i步时,0≤i≤7,第i行第i列的从核行广播其本地的样本矩阵到同一行的所有从核中,列广播其本地的中心点矩阵到同一列的所有从核中,被广播到的从核接收相应的数据到自己的数据缓冲中;同时,第i列所有的从核行广播本地的样本矩阵tile,除第i行第i列从核外,第i行所有从核列广播,除第i行第i列从核外本地的中心点矩阵tile,被广播到的从核接收相应的数据到自己的数据缓冲中;每一步数据传输完成后,每个从核使用数据缓冲中的数据,调用基于寄存器分块方法的计算函数进行所述距离矩阵的计算。
6.根据权利要求5所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述基于寄存器分块方法的计算函数具体如下:将样本矩阵tile、中心点矩阵tile和距离矩阵tile,进一步划分为16×1的样本矩阵pannel,1×2的中心点矩阵pannel,及其相应的16×2的距离矩阵pannel;核心层通过编写汇编代码的方式进行;所述寄存器分块,在代码级别多产生了3个for循环,采用n,k,d的循环顺序进行代码结构组织,并在最内层循环内部,调用样本矩阵pannel与中心点矩阵pannel进行距离计算得到距离矩阵pannel的最内层汇编函数。
7.根据权利要求6所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述每个从核采用寄存器分块方法后,在最内层循环内部调用样本矩阵pannel与中心点矩阵pannel进行距离计算得到距离矩阵pannel的最内层汇编函数;所述最内层汇编函数采用如下方式进行;样本矩阵pannel的元素使用4个浮点向量寄存器存储,每4个元素放进一个向量寄存器中;中心点矩阵pannel的元素使用2个浮点向量寄存器存储,每个中心点矩阵pannel的元素拓展成4份放进一个向量寄存器中;计算两个元素之间欧拉距离时,两个元素先要做减法,再将减法的结果做乘法的平方操作,使用8个寄存器存储所述样本矩阵pannel中的元素与所述中心点矩阵pannel对应的矩阵元素差的计算结果,使用8个寄存器存储最终求得的欧拉距离,即所述距离矩阵元素;所述计算中共使用了22个浮点向量寄存器;所述申威26010处理器共有32个寄存器,除上述使用的22个寄存器外,剩下的10个寄存器用于存储程序中的中间变量或用作循环变量,寄存器资源使用合理且高效;同时,对汇编代码进行指令重排,进一步提升程序性能。
8.根据权利要求6所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述采用寄存器分块方法后,对最内层汇编函数进行指令重排,实现如下:基于申威26010的双流水线,双发射特点,尽可能的使计算指令和访存指令挨着,使其能够同时发射;同时将有依赖的指令尽可能的排的远一些,减少指令停拍。
9.根据权利要求2所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述聚类步骤的(5)中,所述基于寄存器通信的两步的簇标签规约函数实现如下:第一步,每个从核对本从核上的距离矩阵tile进行规约,求所述距离矩阵tile每一行的最小值,及最小值所对应的列标;第二步,同一行上的8个从核,分三次进行两两规约,最终将同一行从核上的所有距离矩阵tile的每一行的最小值及其下标求出,第一次,第1、3、5、7列的将自己第一步得到的结果封装成向量,通过寄存器通信函数put_r分别发送到第0、2、4、6列的从核,第0、2、4、6列从核通过使用get_r接收到数据后,将其与本地的最小值进行比较,将较小的值及其下标保存下来;第二次,第2列和第6列的从核将上一次所得结果分别发送给第0列和第4列从核,第0列和第4列从核接收到数据后,将接收到的数据与本地的最小值进行比较,将最小值及其下标保存下来;第三次,第4列的从核将上一次所得结果发送给第0列的从核,第0列从核接收到数据后,将接收到的数据与本地的最小值进行比较,所得最小值所对应的下标即为当前行的样本的簇标签。
10.根据权利要求3所述的一种国产申威26010众核处理器上K-means算法的高性能并行实现方法,其特征在于:所述采用对中心点进行任务划分的并行方式为动态任务调度策略:首先,建立一个全局的共享任务池,每个从核都可以访问所述任务池;所述任务池中的每个任务代表一个中心点的更新操作,k个任务被依次标号为0,1,…(k-1);然后,每个从核通过使用原子指令fetch-and-add互斥的从共享任务池中取任务标号,所述原子指令保证了同一时刻只有一个从核读取并修改了全局任务池中的任务标号,保证了一致性;每个从核完成当前任务后,就会从共享任务池取下一个任务,直到任务池的任务被取完。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810188779.2A CN108509270B (zh) | 2018-03-08 | 2018-03-08 | 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810188779.2A CN108509270B (zh) | 2018-03-08 | 2018-03-08 | 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509270A true CN108509270A (zh) | 2018-09-07 |
CN108509270B CN108509270B (zh) | 2020-09-29 |
Family
ID=63376287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810188779.2A Active CN108509270B (zh) | 2018-03-08 | 2018-03-08 | 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509270B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445850A (zh) * | 2018-09-19 | 2019-03-08 | 成都申威科技有限责任公司 | 一种基于申威26010处理器的矩阵转置方法及*** |
CN109490895A (zh) * | 2018-10-25 | 2019-03-19 | 中国人民解放军海军工程大学 | 一种基于刀片服务器的干涉合成孔径声纳信号处理*** |
CN109491791A (zh) * | 2018-11-09 | 2019-03-19 | 华东师范大学 | 基于申威众核处理器的nsga-ii的主从增强式运行方法及装置 |
CN109828790A (zh) * | 2019-01-31 | 2019-05-31 | 上海赜睿信息科技有限公司 | 一种基于申威异构众核处理器的数据处理方法和*** |
CN110362780A (zh) * | 2019-07-17 | 2019-10-22 | 北京航空航天大学 | 一种基于申威众核处理器的大数据张量典范分解计算方法 |
CN112181894A (zh) * | 2019-07-04 | 2021-01-05 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的核组内分组自适应调整运行方法 |
CN114880272A (zh) * | 2022-03-31 | 2022-08-09 | 深圳清华大学研究院 | 全局高度数顶点集合通信的优化方法及应用 |
WO2023097424A1 (en) * | 2021-11-30 | 2023-06-08 | Intel Corporation | Method and apparatus for fusing layers of different models |
CN116881618A (zh) * | 2023-08-25 | 2023-10-13 | 之江实验室 | 通用矩阵乘计算优化方法、装置及处理器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870136B1 (en) * | 2007-05-24 | 2011-01-11 | Hewlett-Packard Development Company, L.P. | Clustering data with constraints |
CN104360985A (zh) * | 2014-10-20 | 2015-02-18 | 浪潮电子信息产业股份有限公司 | 一种基于mic实现聚类算法的方法及装置 |
-
2018
- 2018-03-08 CN CN201810188779.2A patent/CN108509270B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870136B1 (en) * | 2007-05-24 | 2011-01-11 | Hewlett-Packard Development Company, L.P. | Clustering data with constraints |
CN104360985A (zh) * | 2014-10-20 | 2015-02-18 | 浪潮电子信息产业股份有限公司 | 一种基于mic实现聚类算法的方法及装置 |
Non-Patent Citations (3)
Title |
---|
ILIAS K. SAVVAS 等: ""Combining Distributed and Multi-core Programming Techniques to Increase the Performance of K-Means Algorithm"", 《2017 IEEE 26TH INTERNATIONAL CONFERENCE ON ENABLING TECHNOLOGIES: INFRASTRUCTURE FOR COLLABORATIVE ENTERPRISES (WETICE)》 * |
申彦等: ""CMP上基于数据集划分的K-means多核优化算法"", 《智能***学报》 * |
谭郁松 等: ""面向CPU/MIC异构架构的K-Means向量化算法"", 《计算机科学与探索》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445850A (zh) * | 2018-09-19 | 2019-03-08 | 成都申威科技有限责任公司 | 一种基于申威26010处理器的矩阵转置方法及*** |
CN109490895A (zh) * | 2018-10-25 | 2019-03-19 | 中国人民解放军海军工程大学 | 一种基于刀片服务器的干涉合成孔径声纳信号处理*** |
CN109491791A (zh) * | 2018-11-09 | 2019-03-19 | 华东师范大学 | 基于申威众核处理器的nsga-ii的主从增强式运行方法及装置 |
CN109828790B (zh) * | 2019-01-31 | 2020-10-20 | 上海赜睿信息科技有限公司 | 一种基于申威异构众核处理器的数据处理方法和*** |
CN109828790A (zh) * | 2019-01-31 | 2019-05-31 | 上海赜睿信息科技有限公司 | 一种基于申威异构众核处理器的数据处理方法和*** |
CN112181894A (zh) * | 2019-07-04 | 2021-01-05 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的核组内分组自适应调整运行方法 |
CN112181894B (zh) * | 2019-07-04 | 2022-05-31 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的核组内分组自适应调整运行方法 |
CN110362780A (zh) * | 2019-07-17 | 2019-10-22 | 北京航空航天大学 | 一种基于申威众核处理器的大数据张量典范分解计算方法 |
WO2023097424A1 (en) * | 2021-11-30 | 2023-06-08 | Intel Corporation | Method and apparatus for fusing layers of different models |
CN114880272A (zh) * | 2022-03-31 | 2022-08-09 | 深圳清华大学研究院 | 全局高度数顶点集合通信的优化方法及应用 |
CN114880272B (zh) * | 2022-03-31 | 2024-06-07 | 深圳清华大学研究院 | 全局高度数顶点集合通信的优化方法及应用 |
CN116881618A (zh) * | 2023-08-25 | 2023-10-13 | 之江实验室 | 通用矩阵乘计算优化方法、装置及处理器 |
CN116881618B (zh) * | 2023-08-25 | 2024-06-04 | 之江实验室 | 通用矩阵乘计算优化方法、装置及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN108509270B (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509270A (zh) | 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 | |
US11270197B2 (en) | Efficient neural network accelerator dataflows | |
Mittal et al. | A survey of techniques for optimizing deep learning on GPUs | |
Chen et al. | A bi-layered parallel training architecture for large-scale convolutional neural networks | |
EP3757901A1 (en) | Schedule-aware tensor distribution module | |
CN104035751B (zh) | 基于多图形处理器的数据并行处理方法及装置 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的***和方法 | |
Dong et al. | Dnnmark: A deep neural network benchmark suite for gpus | |
CN107657581A (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
JP2021508125A (ja) | 行列乗算器 | |
CN105808309B (zh) | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 | |
CN101717817B (zh) | 对基于随机上下文无关文法的rna二级结构预测进行加速的方法 | |
US11934826B2 (en) | Vector reductions using shared scratchpad memory | |
Zhang et al. | Frequency improvement of systolic array-based CNNs on FPGAs | |
CN105893319A (zh) | 一种多车道/多核***和方法 | |
CN105190541A (zh) | 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法 | |
CN107657599A (zh) | 基于混合粒度划分和动态负载分配的遥感图像融合***并行实现方法 | |
CN112783554A (zh) | 用于程序间数据交换的持久便签内存 | |
Liu | Parallel and scalable sparse basic linear algebra subprograms | |
CN104375807A (zh) | 基于众核协处理器的三级流水序列比对方法 | |
CN116775518A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
US11347916B1 (en) | Increasing positive clock skew for systolic array critical path | |
Bandyopadhyay et al. | GRS—GPU radix sort for multifield records | |
Paulin et al. | RNN-based radio resource management on multicore RISC-V accelerator architectures |
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 |