1.基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,包括以下步骤:第一步,计算距离矩阵;第二步,计算局部密度;第三步,计算距离δ;第四步,计算聚类中心并指派类簇;所述第一步计算距离矩阵,包括以下步骤:1.1使用CPU对数据点p进行编码,记p是d维数据,所有点的每一位数据中最大值为C,则用C位0/1编码来表示p的每一维,这样每个数据点就用C×d位0/1编码来表示;接下来在[0,C×d]中选取k个数,组成哈希函数簇,k、d均为自然数,每个哈希函数用公式(3)表示:h i (p)=p i (3)对于选取的第i个数[i],哈希函数的结果为数据点p的0/1编码的第[i]位的值;这样k个哈希函数的输出结果就组成了一个k维哈希值,再经过哈希映射对应到一个哈希桶中,i为自然数;1.2在CPU端使用多组哈希函数建立数据索引,将数据分配到每个GPU中,方法是:记一个哈希函数簇包含k个哈希函数,选取b组不同的k值,将一个数据点映射到b个k维哈希值,b≥2;对于数据点X、Y,若b个哈希值进行或运算后,有一对哈希值相同,则数据点X、Y就会被映射到同一个GPU;只有当所有哈希值都不同时,两个数据点才会被映射到不同的GPU;1.3CPU按照GPU数量启动多个线程,调用每个GPU针对局部数据计算距离矩阵,方法是:数据点X被预先读取到共享内存,线程块中的每个线程从共享内存读取一个数据,从全局内存相应的数据点,再计算距离;完成后,这些线程使用共享内存中的下一个数据点来计算距离矩阵的其他元素。
2.如权利要求1所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第二步计算局部密度,包括以下步骤:2.1多GPU计算参数d c ;2.2在每个GPU内计算局部密度。
3.如权利要求1所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第三步计算距离δ,包括以下步骤:3.1对于每个数据点,在GPU内查找与其距离最近的且具有更高密度的点,记录这个距离δ′;3.2将这个点发送到其他GPU计算距离,并比较是否有距离更近的具有更高局部密度的数据点;3.3若在其他GPU存在这样的点,则用新的距离作为δ,并记录这个最近的高密度点的索引。
4.如权利要求2所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述步骤2.1多GPU计算参数d c ,流程如下:2.1.1 CPU启动M个线程,在每个GPU中查找距离矩阵的最大和最小元素,M为自然数;2.1.2 CPU将最大、最小距离的均值发送给每个GPU;2.1.3每个GPU统计其中小于这个均值距离的元素个数,并将此元素个数发送给CPU;2.1.4 CPU通过消息传递接口MPI求和,检查这个均值距离是否符合d c 条件,若不符合则继续将此均值距离作为最大值,转2.1.1;否则,进入步骤2.2。
5.如权利要求3所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第四步计算聚类中心并指派类簇,包括以下步骤:4.1根据第三步的索引,建立数据点之间的从属关系,低密度点从属于与其距离最近的高密度点;4.2根据局部密度ρ和δ归一化之后的乘积,选择二者均明显高于其他数据点的数据作为聚类中心;4.3根据数据点的从属关系和类簇中心对数据集的每个数据点指派类簇,这个类簇指派即为每个数据点的类别;4.3输出每个数据点的类别,结束。