一种国产申威26010众核处理器上K-means算法的高性能并行实现方法技术

技术编号:18894232 阅读:24 留言:0更新日期:2018-09-08 10:50
本发明专利技术提出了一种国产申威26010众核处理器上K‑means算法的高性能并行实现方法,基于国产处理器申威26010平台,针对聚类阶段,本发明专利技术设计了一种块距离矩阵计算与规约操作融合的计算框架,该框架使用三层分块策略进行任务划分,同时设计协作式的核间数据共享方案和基于寄存器通信机制的簇标签规约方法,及使用双缓冲技术,指令重排等优化技术。针对更新中心点阶段,本发明专利技术设计了动态调度的任务划分方式。通过在真实数据集上测试,本发明专利技术可以达到最大348.1GFlops的浮点计算性能,相比理论上最大性能,可以获得47%~84%的浮点计算效率,相比不融合的计算方式,可以获得最高1.7x,平均1.3x的加速比。

A high performance parallel implementation method of K-means algorithm on domestic Shen Wei 26010 core processor

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的强大计算能力。但是K-means算法真正需要得到的结果是每个样本的簇标签,距离矩阵只是求解簇标签数组的一个中间数据,在YouLi的算法中,距离矩阵计算完成后,被写入了内存,接下来又被从内存读入,增加了额外的访存操作,提高了系统的通信压力,尤其突出了现代大多数的高性能硬件平台(CPU,GPU,SW26010等)普遍存在的访存墙问题。此外,由于缺乏精细调优,其并行实现只能达到机器峰值浮点性能的15.9%。国产申威26010众核处理器是我国自主研发的一款主从核异构的高性能平台,它由4个核组组成,核组间通过Noc(NetworkonChip)相连,并共享一个32GB的主存空间。每个核组由1个主核和一个8×8的从核阵列组成。主核和从核都支持256位向量浮点指令。从核阵列可以提供742.4GFlops的浮点计算能力。每个从核拥有一个独立(私有)的用户可控的64KB的LDM(LocalDeviceMemory,局部存储器)空间。从核可以直接访问主存,也可以采用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步进行数据交换,每进行一步本文档来自技高网
...

【技术保护点】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1