The invention presents a high performance parallel implementation method of K_means algorithm on domestic Shenwei 26010 multicore processor. Based on the platform of domestic Shenwei 26010 processor, a computing framework for the fusion of block distance matrix calculation and protocol operation is designed for the clustering stage. The framework uses a three-layer block strategy to perform tasks. At the same time, a cooperative inter-core data sharing scheme and a cluster label protocol based on register communication mechanism are designed, and optimization techniques such as double buffering and instruction rearrangement are used. Aiming at the update center stage, the present invention designs a task division method for dynamic scheduling. By testing on real data sets, the proposed method achieves a maximum of 348.1 GFlops of floating-point computing performance. Compared with the theoretical maximum performance, 47%-84% of the floating-point computing efficiency can be obtained. Compared with the non-fusion computing method, the highest speed ratio of 1.7x and the average speed ratio of 1.3x can be obtained.
【技术实现步骤摘要】
一种国产申威26010众核处理器上K-means算法的高性能并行实现方法
本专利技术属于机器学习中的聚类算法的并行加速研究领域,具体涉及K-means算法在国产申威26010众核处理器上的高性能并行实现方法。
技术介绍
K-means是无监督学习中一种经典的基于距离计算的聚类算法,它根据样本间的相似度度量将样本数据划分成不同的簇,使同一簇中的样本间的相似度最大化。由于简单,易实现,无需标记样本等特点,K-means在图像处理、数据挖掘、文本聚类、生物学等领域有着广泛的应用,并越来越多的被用作许多更复杂算法的预处理手段。大数据时代的到来,使得样本数据的特征维度从原来的几十维上升到了数以千计,相应的,对计算速度也提出了更高的要求,因此,研究K-means的并行加速对于实际应用是非常重要且有意义的。目前,已有许多基于GPU平台的并行化K-means算法的研究。其中,单GPU上最好的实现方案是YouLi(LiY,ZhaoK,ChuX,etal.Speedingupk-MeansalgorithmbyGPUs[J].JournalofComputer&SystemSciences,2013,79(2):216-229.)的算法。YouLi的算法率先提出,对于高维度样本,K-means的聚类过程跟基础线性代数库(BLAS)中的矩阵乘矩阵(GEMM)函数的计算模式有很大的相似性,他通过采用GEMM的并行化方案来计算K-means聚类阶段的各样本间的距离,并将计算结果存储到一个距离矩阵,其后通过读取距离矩阵并进行规约操作,求出各样本的簇标签。该方案充分利用GPU的 ...
【技术保护点】
1.一种国产申威26010众核处理器上K‑means算法的高性能并行实现方法,所述方法基于国产申威26010处理器的一个核组,每个核组由一个主核与64个从核组成,所述K‑means算法包括:(a)初始化中心点步骤、(b)聚类步骤、(c)计算迭代收敛值步骤和(d)更新中心点步骤;首先,完成步骤(a)、(b),再根据(c)求出迭代收敛值并判断是否收敛,若没有收敛,再次进入步骤b‑d组成的主循环中;若收敛,则返回当前聚类结果并退出,输出每个样本对应的簇标签;其特征在于:所述方法主要对耗时比较多的(b)和(d)步骤进行并行优化;所述(b)聚类步骤实现为:计算每个样本与所有中心点的距离,为每个样本求出距离最近的中心点,并将中心点下标存储为此样本的簇标签,进而将所有所述的样本划分到距离最近的簇中;所述(d)更新中心点步骤为:将每个所述簇对应的所述中心点更新为属于所述簇的所有所述样本的加权平均。
【技术特征摘要】
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所述的一种国...
【专利技术属性】
技术研发人员:杨超,李敏,闫碧莹,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。