CN104102476A - 非规则流中高维数据流典型相关性并行计算方法及装置 - Google Patents
非规则流中高维数据流典型相关性并行计算方法及装置 Download PDFInfo
- Publication number
- CN104102476A CN104102476A CN201410379986.8A CN201410379986A CN104102476A CN 104102476 A CN104102476 A CN 104102476A CN 201410379986 A CN201410379986 A CN 201410379986A CN 104102476 A CN104102476 A CN 104102476A
- Authority
- CN
- China
- Prior art keywords
- dimensional data
- high dimensional
- stream
- data streams
- gpu
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明基于图形处理器GPU的非规则流中高维数据流的处理模型和CUDA架构,提出了一种非规则流中高维数据流典型相关性并行计算方法,即在高维数据流处理模型上,采用所述GPU的CUDA编程模型和滑动窗口数据流模式,以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后生成概要数据结构,对高维的乘积矩阵进行列向和行向上的采样实现维数约简,根据采样得到的矩阵并行计算典型特征值和典型特征向量,降低生成典型相关系数的代价,显著地提高了高维数据流相关性分析的实时性。
Description
技术领域
本发明涉及高级数据流的处理方法及装置,尤其涉及非规则流中高维数据流典型相关性并行计算方法及装置。
背景技术
多维数据流相关性分析在股票趋势预测,高速网络故障诊断,天气预报等许多需要在线趋势分析的领域具有广泛的应用。例如在传感器网络中这相当于分析场与场之间的相关或耦合关系。例如股票投资分析中,分析选择标准普尔500指数和纳斯达克综合指数两种股票指数的相关性,用于指导股票的组合投资。如何利用两种指数的相关属性来判断两种股票是否相关。哪些属性信息占有重要作用。
由于高维数据流的维数通常很高,对其进行高性能运算频繁计算矩阵的乘、转置等式避免不了的。这无疑是非常耗时的。由于在实际应用中数据流量是连续庞大的,所以物化所有的流数据是不实际的,所以对于用户实时地对高维数据流进行统计性的连续查询提出了更高的要求和挑战。
发明内容
为了解决上述问题,本发明基于图形处理器GPU的非规则流中高维数据流的处理模型和CUDA架构的编程模型,提出了一种非规则流中高维数据流典型相关性并行计算方法,该并行计算方法相对于纯CPU方法具有显著的速度优势,很好地满足了高维数据流的实时性需求,可以作为通用的分析方法广泛应用于高维数据流挖掘领域。
为了达到上述目的,本发明提出了一种非规则流中高维数据流典型相关性并行计算方法,所述方法基于图形处理器GPU的非规则流中高维数据流的处理模型和计算统一设备架构CUDA编程模型,其中,
所述高维数据流的处理模型:是在滑动窗口模型的基础之上,基于所述GPU的高维数据流并行处理的六层架构模型。
所述图形处理器GPU:与中央处理器CPU形成异构模式,负责计算密集型的大规模数据并行计算。
所述CUDA架构是指:将所述CPU作为主机Host,所述GPU作为协处理器或设备与所述CUDA架构协同工作。
所述方法包括:
在所述高维数据流处理模型上,采用所述GPU的CUDA编程模型和滑动窗口数据流模式,以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后生成概要数据结构,对高维的乘积矩阵进行列向和行向上的采样实现维数约简,根据采样得到的矩阵并行计算典型特征值和典型特征向量。
优选地,所述在滑动窗口模型的基础之上,基于GPU的高维数据流并行处理的六层架构模型是指:一种高可预知的结构化模型;所述高维数据流的处理模型核心是将应用分解成一连串对流进行操作的Kernel,流在Kernel之间传递,在Kernel内部完成对流中元素的处理。
优选地,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12的步骤包括:
数据流矩阵以循环队列的方式实现,更新矩阵时,即时间窗前滚,用新元组替换掉最旧的元组,使偏移索引指向下一个相邻的窗口;在滑动窗口数据流模式下,并行增量生成X,Y各自的方差阵及X与Y协差阵;以及
根据滑动窗口数据流模式,同步流的当前输入到达时,时间窗前滚一个时刻,接收一个新的元组。
优选地,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12,还包括,对于所述滑动窗口数据流模式,当同步流的当前输入T=(t,△x,△y)到达时,X(t-n+1)=X(t-n+2),…,X(t-1)=X(t),X(t)=X(new),时间窗前滚一个时刻,接收新的元组X(new)。n步的上述赋值操作归结为X=X+△x,同理有Y=Y+△y,一般情况下可认为△x=X(new)-X(t-n+1),△y=Y(new)-Y(t-n+1)。
优选地,所述对高维的乘积矩阵进行列向和行向上的采样是指:采用在欧几里得空间中不等概行采样兼列采样的近似约简技术对滑动窗口内的数据进行不等概采样。
本发明还提出了一种非规则流中高维数据流典型相关性并行计算装置,所述装置包括:中央处理器CPU、图形处理器GPU、计算统一设备架构CUDA编程模型和高维数据流的处理模型。
所述中央处理器CPU:连接存储控制器,进行所有数据和算法的计算处理;并负责执行复杂逻辑处理和事务管理等不适合数据并行的计算。
所述图形处理器GPU:与所述CPU形成异构模式,负责计算密集型的大规模数据并行计算。
所述计算统一设备架构CUDA编程模型:将所述CPU作为主机Host,所述GPU作为协处理器或设备与所述CUDA编程模型协同工作。
所述高维数据流的处理模型:是在滑动窗口模型的基础之上,基于所述GPU的高维数据流并行处理的六层架构模型。
优选地,基于所述GPU的非规则流中的所述高维数据流的处理模型和所述CUDA编程模型的可行架构,执行所述非规则流中高维数据流典型相关性并行计算。
优选地,所述执行所述非规则流中高维数据流典型相关性并行计算包括:
在所述高维数据流处理模型上,采用所述GPU的所述CUDA编程模型和滑动窗口数据流模式,以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后生成概要数据结构,对高维的乘积矩阵进行列向和行向上的采样实现维数约简,根据采样得到的矩阵并行计算典型特征值和典型特征向量。
优选地,所述在滑动窗口模型的基础之上,基于GPU的高维数据流并行处理的六层架构模型是指:
一种高可预知的结构化模型;在流程序级,计算核心Kernel和流Stream之间可以看作生产者和消费者的关系,将任务级并行显示地暴露出来,同时流的数据成批的特性和Kernel内部的密集计算分别揭示了丰富的数据级并行和指令级并行;所述高维数据流的处理模型核心是将应用分解成一连串对流进行操作的Kernel,流在Kernel之间传递,在Kernel内部完成对流中元素的处理。
优选地,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12是指:
数据流矩阵以循环队列的方式实现,更新矩阵时,即时间窗前滚,用新元组替换掉最旧的元组,只需简单的使偏移索引指向下一个相邻的窗口;在滑动窗口数据流模式下,并行增量生成X,Y各自的方差阵及X与Y协差阵;以及
根据滑动窗口数据流模式,同步流的当前输入到达时,时间窗前滚一个时刻,接收一个新的元组。
优选地,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12,还包括,对于所述滑动窗口数据流模式,当同步流的当前输入T=(t,△x,△y)到达时,X(t-n+1)=X(t-n+2),…,X(t-1)=X(t),X(t)=X(new),时间窗前滚一个时刻,接收新的元组X(new)。n步的上述赋值操作归结为X=X+△x,同理有Y=Y+△y,一般情况下可认为△x=X(new)-X(t-n+1),△y=Y(new)-Y(t-n+1)。
优选地,所述对高维的乘积矩阵进行列向和行向上的采样是指:采用在欧几里得空间中不等概行采样兼列采样的近似约简技术对滑动窗口内的数据进行不等概采样。
与现有技术相比,本发明基于图形处理器GPU的非规则流中高维数据流的处理模型和CUDA架构编程模型,提出了一种非规则流中高维数据流典型相关性并行计算方法,即以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后对高维的乘积矩阵进行列向和行向上的采样实现维数约简,降低生成典型相关系数的代价,显著地提高了高维数据流相关性分析的实时性。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1非规则流中高维数据流典型相关性分析并行计算方法流程图
图2基于GPU的高维数据流并行处理的六层架构模型
图3并行增量子算法思想
图4非规则流中高维数据流典型相关性分析并行计算装置框图
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
由于高维数据流的维数通常很高,对其进行高性能运算频繁计算矩阵的乘、转置等式避免不了的。在统计类的查询中,由于计算能力的受限,在精度保证的情况下通常近似解决。所以牺牲部分准确性来换取速度的解决方案是对于用户实时地对高维数据流进行统计性的连续查询的关键,结合GPU的高性能运算能力是一个很好的办法。
针对高维数据流,本发明结合GPU协处理高维数据流模型提出一个具体可行的实施框架,实现了一种基于近似技术的在GPU上进行的快速高维数据流相关性并行分析算法GMSCCA。
具体地,本发明提出了一种非规则流中高维数据流典型相关性分析并行计算方法,使用数据立方模型以及降维约简技术并行分析了多条高维数据流的典型相关性,该解决方案是基于GPU(Graphic Processing Unit),中文翻译为“图形处理器”的非规则流中高维数据流的处理模型和具体的可行架构上的。经理论分析和实验证明,该并行处理方法能够在线精确地识别同步滑动窗口模式下高维数据流之间的相关性。本发明的方法流程图如图1所示。在对本发明的方法介绍中需要分别介绍:高维数据流的处理模型、高维数据流处理的方法、GPU CUDA编程方法。
为了使本发明的方法更清楚,首先介绍高维数据流的处理模型。
目前已有的数据流快速处理模型只是给出了使用图形处理器对数据流进行并行处理的一个最基本的模型,由于在非规则流中,数据的突变或者数据属性多维化,基本的数据流处理模型不能够完全符合,这就需要更进一步的将模型扩展并且细化。
本发明中的方法所基于的高维数据流的处理模型是一种高可预知的结构化模型。在流程序级,Kernel和Stream之间可以看作生产者和消费者的关系,将任务级并行显示地暴露出来,同时流的数据成批的特性和Kernel内部的密集计算分别揭示了丰富的数据级并行和指令级并行。流处理模型核心是将应用分解成一连串对流进行操作的计算核心(Kernel),流在Kernel之间传递,在Kernel内部完成对流中元素的处理。
具体地,该模型是在滑动窗口模型的基础之上基于GPU的高维数据流并行处理的六层架构模型,如图2所示,其六个层次分别为:
(1)时序数据处理层:时序数据层中的数据是符合非规则流的一些约束的含高维属性的元组,该层的任务是由CPU进行处理的:数据I/O和数据过滤。在这一层中,对原数据流分三次处理:流速率调节,属性包装和数据过滤。
流速率调节负责负载平衡和决定何时启动GPU内核。当数据流的流量达到一定规模时,可以启动GPU内核对数据流进行处理,作为一种提高数据流处理性能的手段。如果启动GPU内核协处理数据流,CPU每次可以以较大的分块将数据交换到GPU设备,然后利用图形处理器密集的数据计算能力和高内存带宽的特性对数据流进行高速处理。
属性包装和数据过滤负责对数据流进行加工以改善数据流的质量,为流数据的连续查询和复杂分析打下基础,包括对流数据进行去噪、压缩编码、修正以减少存储空间和传输时间。在整个层中元组按时间t有序,如果任一高维数据流在时刻t未接收到元组,则以全0的元组代替,即允许稀疏数据流矩阵存在。
(2)数据映射层:GPU在传统上是用来处理图形渲染计算任务的,所以本身具有其优点,本模型将其保留了下来。对于图像相关的数据流,将CPU数组结构映射为GPU纹理结构,事先建立对应表达式C(x)=G(y),通过数据C(x)属性和纹理数据属性G(y)建立映射关系,找出CPU和GPU两类数据的一一对象关系,利用通用计算数据结构对应纹理在GPU存放纹理各个属性的方式。
(3)数据缓冲层:包含两级数据缓冲池,主要维护几类缓冲,包括注册的查询计划缓冲、同步数据查询操作工作区、数据流历史概要缓冲、数据流缓冲等四种性质的存储。数据缓存借助两种类型的队列实现推式(传感器数据)和拖式(传统关系数据)操作,减少主机和设备间的数据交换频率,提高高维数据流并行计算的密集程度。数据缓冲层是图形处理器对高维数据流并行处理的基本单位。经过数据清理以及映射处理的缓冲窗口作为普通的子窗口更新到滑动窗口中。
(4)滑动窗口层:流矩阵以队列的方式实现,队列中存放流数据的高维属性,进入滑动窗口。更新矩阵时(即时间窗前滚),用新元组替换掉最旧的元组,实现同步高维数据流概要数据结构增量归一化。
(5)概要矩阵抽取层:生成高维数据流的概要结构矩阵,存放概要数据矩阵的层次。实际上,高维数据流最便于用二维矩阵表示,每行或每列表示一条数据流,每个元素表示各个维度的属性。对于高维数据流此层分三个区域,根据高维数据流的特点分别采用不等概行向兼列向采样技术、小波技术、数据立方技术进行。
(6)查询分析处理层:完成各种基本查询和复杂分析。基本查询处理操作完成一般的选择、连接、投影和聚集等连续查询请求。复杂分析处理操作则是在信息提取层生成的概要信息基础上,进一步研究数据流中各种因素的性质和相互之间的关系,基本查询操作既可以直接在预处理过的数据流上执行,也可以在概要上执行。
该基于GPU的高维数据流并行处理的六层架构模型,从时序数据处理层:对原数据流分三次处理:流速率调节,属性包装和数据过滤之后进入数据映射层,对于图像相关的数据流,将CPU数组结构映射为GPU纹理结构,事先建立对应表达式C(x)=G(y),通过数据C(x)属性和纹理数据属性G(y)建立映射关系,找出CPU和GPU两类数据的一一对象关系,利用通用计算数据结构对应纹理在GPU存放纹理各个属性的方式,之后进入数据缓冲层,包含两级数据缓冲池,经过数据清理以及映射处理的缓冲窗口作为普通的子窗口更新到滑动窗口中,再进入很关键的滑动窗口层,实现同步高维数据流概要数据结构增量归一化,在概要矩阵抽取层中生成高维数据流的概要结构矩阵,存放概要数据矩阵的层次,最后在查询分析处理层:完成各种基本查询和复杂分析。
下面介绍高维数据流处理的方法及相关方法中GPU CUDA编程方法。
高维数据流X与Y之间典型相关性分析的基本思路为:根据矩阵论,以最大限度地提取X与Y之间相关关系的主要特征为准则,从X中提取组合变量U,从Y中提取组合变量V,如下式所示:
Un+1Xp+nAn+1,Vn+1Yq+nAn+1 (1)
(1)式中,A、B为线性变换,又称为空间特征向量。按式(1)把具有较多个变量的数据流矩阵X与Y之间的相关化为较少组合变量U与V间的相关。
在实际的数据流应用中,一般使用样本进行估计。使用长度为n的滑动时间窗口中的样本进行典型相关性分析的过程如下:
设为来自总体的一个样本,其中Xi(X1i,X2i,...,Xpi)T,Yi(Y1i,Y2i,...,Yqi)T(i=1,2,...n),计算X(i)的方差阵S11,Y(i)的方差阵S22,协方差阵S21,则X,Y的第k对典型变量为其典型相关系数为:
其中
为p阶矩阵的特征值,e1,e2,…,ep为相应的正交单位化特征向量,f1,f2,…,fp为q阶矩阵的对应于前p个最大特征值(按由大到小的次序排序)的正交单位化特征向量。
基于前面的高维数据流的处理模型,本发明给出基于CUDA架构的高维数据流相关性分析的并行算法GMSCCA(GPU Multi-Dimensional StreamCanonical Correlation Analysis)。
本发明中的高维数据流的相关性分析采用一种基于近似技术的在GPU上进行的快速高维数据流相关性并行分析算法GMSCCA,即以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后对高维的乘积矩阵M进行列向和行向上的采样实现维数约简,降低生成典型相关系数的代价。算法流程如图1:
其中W是采样后的矩阵。
Step1:启动CUDA,使用多卡时加上设备号,使用cudaSetDevice()函数设置GPU设备。
Step2:为输入数据分配主机内存空间以及缓冲区。
Step3:从流数据源获取输入数据进行初始化。
Step4:为GPU分配显存以及缓冲区,用于存放输入数据。
Step5:将内存中的输入数据交换到显存。
Step6:为GPU分配显存以及缓冲区,用于存放输出结果。
Step7:根据滑动窗口数据流模式,同步流的当前输入到达时,时间窗前滚一个时刻,接收一个新的元组。
Step8:启动设备内核,执行高维数据流相关性分析的并行算法子算法
GPU_Producing_Matrix_of_Variance_and_Covariance_Matrix()。
Step9:计算相邻时刻的元组更新△(j)的累加和G是否大于跳跃因子δ(精度系数),若大于则重新计算CCA,否则不需要重新计算。
Step10:生成概要数据结构,实施不等概行采样兼列采样对矩阵进行维数约简。执行子算
GPU_unequal_probability_sampling_in_Row_And_Column_kernel()。
Step11:并行计算典型特征值和典型特征向量。
Step12:为CPU分配内存,用于存放GPU传回来的输出数据。
Step13:将显存中的结果回读到内存。
Step14:使用CPU对数据进行其他处理。
Step15:释放内存和显存空间。
Step16:退出CUDA。
对于滑动窗口数据流模式,当同步流的当前输入T=(t,△x,△y)到达时,X(t-n+1)=X(t-n+2),…,X(t-1)=X(t),X(t)=X(new),时间窗前滚一个时刻,接收新的元组X(new)。n步的上述赋值操作归结为X=X+△x,同理有Y=Y+△y,一般情况下可认为△x=X(new)-X(t-n+1),△y=Y(new)-Y(t-n+1)。
总结以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12的方法,即同步高维数据流增量归一化算法如下:
数据流矩阵以循环队列的方式实现,更新矩阵时(即时间窗前滚),用新元组替换掉最旧的元组,只需简单的使偏移索引指向下一个相邻的窗口。
在滑动窗口数据流模式下,并行增量生成X,Y各自的方差阵及X与Y协差阵。
算法:GPU_Producing_Matrix_of_Variance_and_Covariance_Matrix(X,Y,△x,△y,n).
输入:X∈Rp*n,Y∈Rq*n,X,Y的更新值△x,△y,滑动窗口n的长度。
输出:S11∈Rp*p,S12∈Rp*q,S21∈Rq*p,S22∈Rq*q
Step1:设备内存上的滑动窗口更新、删除
Step2:for all non-zero items in column t of A,B{j|A(j,t)≠0,B(j,t)≠0}do beginif(j≠i)begin
并行地增量生成X,Y各自的方差阵及X与Y协差阵
S11(i,j)+=△aA(t);S22(i,j)+=△bB(t);S12(i,j)+=△aB(t)+△bA(t);
end if
if(j=i)begin
并行地增量生成X,Y各自的方差阵及X与Y协差阵
S11(i,j)+=2△aA(t)+(△a)2;S22(i,j)+=2△bB(t)+(△b)2;S12(i,j)+=△aB(t)+
△bA(t)+△ab;
end if
A(t)+=△a;B(t)+=△b;
Step3:end do.
图3为子算法并行增量的思想及详细过程,如图所示增量算法,对每个表示数据流的大数组进行划分,让每个block对一个子块进行scan,scan就是对一个数组求all-prefix-sums(前缀和)的过程,在每个block的计算完成后,要将该子块的总和写入辅助数组(auxiliary array);接下来对这个辅助数组进行scan,得到一个块增量数组block sums,其中的每个元素代表一个block相对于上一个块的增量。
假设输入数组INPUT[]中有N个元素,由每个block负责处理B个元素,这样就需要N/B个block,每个block有B/2个线程(每个线程处理2个元素)。首先,由各block独立计算block中的scan,并将数组输出到OUTPUT[]中。但此时得到的还不是最终结果,还需要另外一个kernel将上一步中每块中的最后一个元素写入SUMS[],再对SUMS[]进行scan操作,求出每一块相对上一块的增量,并写入INCR[]。最后,由第三个kernel函数为OUTPUT[]中的每个block加上对应的偏移量(uniform add)INCR[j],求出最终结果。
对于数组元素个数不是2的幂次方的情况,将数组分为两部分来处理:第一部分拥有floor(1.0*n/B)*B个元素,而其余元素(记为rest,rest<B)存放在第二部分。对第一部分的处理按照如图所示处理,对第二部分则需要另行处理(用一个block进行处理),这时分配的共享存储器空间的大小应该是大于rest的最小的2的幂次方。
scan算法的伪码
Step1:动态分配共享存储器空间extern__shared__float temp[];
Step2:全局存储器向共享存储器的拷贝,拷贝时右移一个位置,最左边填0
Step3:for(int offset=1;offset<n;offset*=2)
Step4:__syncthreads();
Step5:g_odata[thid]=temp[pout*n+thid];//数据拷回
对于高维数据流X,Y的方差阵,X与Y之间的协方差阵也是非常耗时的计算。以X的方差阵为例对并行计算方差阵和协方差阵进行算法说明
(1)利用GPU归约求和计算
算法:
输入:T*g_idata,T*g_odata
输出:
//加载共享存储器
Step1:SharedMemory<T>smem;
Step2:T*sdata=smem.getPointer();
//设置线程索引
Step3:unsigned int tid=threadIdx.x;
unsigned int i=blockIdx.x*blockDim.x+threadIdx.x;
Step4:sdata[tid]=g_idata[i];
__syncthreads();
//在共享存储器里进行归约
Step5:for(unsigned int s=1;s<blockDim.x;s*=2)
//将block的计算结果写回全局存储器
Step6:if(tid==0)g_odata[blockIdx.x]=sdata[0];
Step7:end;
(2)按照实时性的要求将分成如图3所示的线程层次。一共有N*P个线程分配时:
dim3 dimBlock(512);
dim3 dimGrid(N+dimBlock.x–1)/dimBlock.x,(N+dimBlock.y–1)/dimBlock.y),
每个线程负责处理数据流矩阵中的一个元素
if(threadIdx.x=0)该索引下对应的元素减去列向量中第1个元素;
if(threadIdx.x=1)该索引下对应的元素减去列向量中第2个元素;
……
从而得到的左右元素组成的矩阵,然后对该矩阵进行转置处理。在本算法中,通过引入shared memory实现线程间通信,就可以让一个half-warp中的线程按照合并访问方式输入一行数据后,再以合并访问方式输出数据。
采用CUDA的两层并行,用合并访问方式将数据从显存读入共享存储器中,经过同步后,每个线程与和它按对角线对称的线程交换操作的数据,再按照合并访问方式将结果写到显存中。在同一个block中实现需要进行数据交换和通信的细粒度并行,而在各个block间实现不需要进行数据交换的粗粒度并行。对全局内存器的所有读写均是合并读写,共享存储器大小是(BLOCK_DIM+1)*BLOCK_DIM,保证half-warp按列访问数组的时候不发生bank conflict。
高维数据流处理的关键在于设计一个远小于数据集规模的结构,从而可以在内存中高效处理数据,需要保存长时间跨度的滑动窗口或者数据流到来的高速,解决这个问题的一种方法是对滑动窗口内的数据进行不等概采样。
真实数据流通常具有大量属性维(即p、q的值很大),计算复杂度很高,而且流矩阵中存在稀疏矩阵以及在每个流矩阵中只是少数几个属性维起决定作用,为了实现实时的相关性分析,需要使用少量属性维形成的简单矩阵代替原来的数据流矩阵,因此本文采用在欧几里得空间中不等概行采样兼列采样的近似约简技术来提高效率。这样得到的采样阵,我们称作高维数据流的概要矩阵。
根据高维数据流Froenius范数和2-范数的定义,作为矩阵中行和列的重要程度的测度以及高维矩阵进行维数约简的有效技术。概要数据结构生成的理论依据如下:
先对C实施行采样兼列采样,根据JL引理确定采样行(或列)的数目,并结合随机高斯概率和每一行(或列)的测度选取行(或列)。基于以上分析给出并行算法如下:
GPU_unequal_probability_sampling_in_Row_And_Column_kernel(C,p,α,ε,W)
//p为矩阵的维度
Step1:int k=0,r=o;//确定采样的行数与列数
Step2:for(int i=0;i<p;i++)
CUDA_SAFE_CALL(生成介于0~1之间的随机数Gi的内核函数)
申请p个线程,在每个线程中并行计算并且进行以下运算
then D(k)C(i);并行增量生成的初值为0
if(k<s)then退出for循环;
end for
Step3:for(j=0;j<p;j++)begin
CUDA_SAFE_CALL(生成介于0~1之间的随机数Gi的内核函数)
申请p个线程,在每个线程中并行计算并且进行以下运算
then W(r)D(j)
if(k<s)then退出for循环;
end for
Step4:将结果W交换到global memory.
由于篇幅所限,在GPU上生成满足N(0,1)分布的随机数算法略。同时矩阵C的列采样兼列采样矩阵W与矩阵C在Froenius范数的意义上是好的近似,证明略。
在计算CCA时采用跳跃式地计算。因为若相邻两个元组(或元组的更新)到达的时间间隔较长,在每次流更新时重新计算CCA。但是在一般情况下,在某个特定时刻,计算CCA之后并没有明显的变化,那么就没有必要频繁地重新计算CCA。思想如下:
若在时刻为t1,计算CCA,此时设Δ(i)表示记G为从时刻t1到时刻t之间Δ(i)的累加和,设定阈值M。
如果G>=M,则当前流矩阵仍然是合理的,在t1和t之间不必重新计算CCA。
如果G<=M,则重新计算CCA。
那么阀值G的确定由下面的方法进行确定:
设的最大典型特征值为λ1,由于‖Z-Z1‖F可以作为λ1的估计,衡量G变化的阈值可以由λ1来确定。如果要求保留多个典型特征值,则G应当与δ(λ1+λ2+□+λk)相比较。
本发明还提出了一种非规则流中高维数据流典型相关性分析并行计算装置(01),所述装置包括:中央处理器CPU(02)、图形处理器GPU(03)、计算统一设备架构CUDA编程模型(04)和高维数据流的处理模型(05);其框图参考图4所示。
所述中央处理器CPU(02):连接存储控制器,进行所有数据和算法的计算处理;并负责执行复杂逻辑处理和事务管理等不适合数据并行的计算;
所述图形处理器GPU(03):与所述CPU形成异构模式,负责计算密集型的大规模数据并行计算;
所述计算统一设备架构CUDA编程模型(04):将所述CPU作为主机Host,所述GPU作为协处理器或设备与所述CUDA编程模型协同工作;
所述高维数据流的处理模型(05):是在滑动窗口模型的基础之上,基于所述GPU的高维数据流并行处理的六层架构模型。
优选地,基于所述GPU的非规则流中的所述高维数据流的处理模型(05)和所述CUDA编程模型(04)的可行架构,执行所述非规则流中高维数据流典型相关性并行计算。
优选地,所述执行所述非规则流中高维数据流典型相关性并行计算包括:
在所述高维数据流处理模型上,采用所述GPU的所述CUDA编程模型和滑动窗口数据流模式,以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后生成概要数据结构,对高维的乘积矩阵进行列向和行向上的采样实现维数约简,根据采样得到的矩阵并行计算典型特征值和典型特征向量。
优选地,所述在滑动窗口模型的基础之上,基于GPU的高维数据流并行处理的六层架构模型是指:
一种高可预知的结构化模型,在流程序级,计算核心Kernel和流Stream之间可以看作生产者和消费者的关系,将任务级并行显示地暴露出来,同时流的数据成批的特性和Kernel内部的密集计算分别揭示了丰富的数据级并行和指令级并行;所述高维数据流的处理模型核心是将应用分解成一连串对流进行操作的Kernel,流在Kernel之间传递,在Kernel内部完成对流中元素的处理。
优选地,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12是指:
数据流矩阵以循环队列的方式实现,更新矩阵时,即时间窗前滚,用新元组替换掉最旧的元组,只需简单的使偏移索引指向下一个相邻的窗口;在滑动窗口数据流模式下,并行增量生成X,Y各自的方差阵及X与Y协差阵;
根据滑动窗口数据流模式,同步流的当前输入到达时,时间窗前滚一个时刻,接收一个新的元组;
优选地,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12,还包括,对于所述滑动窗口数据流模式,当同步流的当前输入T=(t,△x,△y)到达时,X(t-n+1)=X(t-n+2),…,X(t-1)=X(t),X(t)=X(new),时间窗前滚一个时刻,接收新的元组X(new)。n步的上述赋值操作归结为X=X+△x,同理有Y=Y+△y,一般情况下可认为△x=X(new)-X(t-n+1),△y=Y(new)-Y(t-n+1)。
优选地,所述对高维的乘积矩阵进行列向和行向上的采样是指:采用在欧几里得空间中不等概行采样兼列采样的近似约简技术对滑动窗口内的数据进行不等概采样。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。
Claims (10)
1.一种非规则流中高维数据流典型相关性并行计算方法,所述方法基于图形处理器GPU的非规则流中高维数据流的处理模型和计算统一设备架构CUDA编程模型,其特征在于,
所述高维数据流的处理模型:是在滑动窗口模型的基础之上,基于所述GPU的高维数据流并行处理的六层架构模型;
所述图形处理器GPU:与中央处理器CPU形成异构模式,负责计算密集型的大规模数据并行计算;
所述CUDA编程模型是指:将所述CPU作为主机Host,所述GPU作为协处理器或设备与所述CUDA架构协同工作的编程模型;
所述方法包括:
在所述高维数据流处理模型上,采用所述GPU的所述CUDA编程模型和滑动窗口数据流模式,以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后生成概要数据结构,对高维的乘积矩阵进行列向和行向上的采样实现维数约简,根据采样得到的矩阵并行计算典型特征值和典型特征向量。
2.如权利要求1所述的方法,其特征在于,所述在滑动窗口模型的基础之上,基于GPU的高维数据流并行处理的六层架构模型是指:一种高可预知的结构化模型;所述高维数据流的处理模型核心是将应用分解成一连串对流进行操作的Kernel,流在Kernel之间传递,在Kernel内部完成对流中元素的处理。
3.如权利要求1至2所述的方法,其特征在于,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12的步骤包括:
数据流矩阵以循环队列的方式实现,更新矩阵时,即时间窗前滚,用新元组替换掉最旧的元组,使偏移索引指向下一个相邻的窗口;在滑动窗口数据流模式下,并行增量生成X,Y各自的方差阵及X与Y协差阵;
根据滑动窗口数据流模式,同步流的当前输入到达时,时间窗前滚一个时刻,接收一个新的元组。
4.如权利要求3所述的方法,其特征在于,还包括,对于所述滑动窗口数据流模式,当同步流的当前输入T=(t,△x,△y)到达时,X(t-n+1)=X(t-n+2),…,X(t-1)=X(t),X(t)=X(new),时间窗前滚一个时刻,接收新的元组X(new),n步的上述赋值操作归结为X=X+△x,同理有Y=Y+△y,△x=X(new)-X(t-n+1),△y=Y(new)-Y(t-n+1)。
5.如权利要求1或2所述的方法,其特征在于,所述对高维的乘积矩阵进行列向和行向上的采样是指:采用在欧几里得空间中不等概行采样兼列采样的近似约简技术对滑动窗口内的数据进行不等概采样。
6.一种非规则流中高维数据流典型相关性并行计算装置,所述装置包括:中央处理器CPU、图形处理器GPU、计算统一设备架构CUDA编程模型和高维数据流的处理模型;
所述中央处理器CPU:连接存储控制器,进行所有数据和算法的计算处理;并负责执行不适合数据并行的计算;
所述图形处理器GPU:与所述CPU形成异构模式,负责计算密集型的大规模数据并行计算;
所述计算统一设备架构CUDA编程模型:将所述CPU作为主机Host,所述GPU作为协处理器或设备与所述CUDA架构协同工作的编程模型;
所述高维数据流的处理模型:是在滑动窗口模型的基础之上,基于所述GPU的高维数据流并行处理的六层架构模型;
基于所述GPU的非规则流中的所述高维数据流的处理模型和所述CUDA编程模型的可行架构,执行所述非规则流中高维数据流典型相关性并行计算;
其中,所述执行所述非规则流中高维数据流典型相关性并行计算包括:
在所述高维数据流处理模型上,采用所述GPU的所述CUDA编程模型和滑动窗口数据流模式,以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12;然后生成概要数据结构,对高维的乘积矩阵进行列向和行向上的采样实现维数约简,根据采样得到的矩阵并行计算典型特征值和典型特征向量。
7.如权利要求6所述的装置,其特征在于,所述在滑动窗口模型的基础之上,基于GPU的高维数据流并行处理的六层架构模型是指:
一种高可预知的结构化模型;所述高维数据流的处理模型核心是将应用分解成一连串对流进行操作的Kernel,流在Kernel之间传递,在Kernel内部完成对流中元素的处理。
8.如权利要求6或7所述的装置,其特征在于,所述以增量更新的方式维护两个数据流样本矩阵的协差阵S21,S22和各自的方差阵S11,S12的步骤包括:
数据流矩阵以循环队列的方式实现,更新矩阵时,即时间窗前滚,用新元组替换掉最旧的元组,使偏移索引指向下一个相邻的窗口;在滑动窗口数据流模式下,并行增量生成X,Y各自的方差阵及X与Y协差阵;
根据滑动窗口数据流模式,同步流的当前输入到达时,时间窗前滚一个时刻,接收一个新的元组。
9.如权利要求8所述的装置,其特征在于,还包括,对于所述滑动窗口数据流模式,当同步流的当前输入T=(t,△x,△y)到达时,X(t-n+1)=X(t-n+2),…,X(t-1)=X(t),X(t)=X(new),时间窗前滚一个时刻,接收新的元组X(new),n步的上述赋值操作归结为X=X+△x,同理有Y=Y+△y,△x=X(new)-X(t-n+1),△y=Y(new)-Y(t-n+1)。
10.如权利要求6或7所述的装置,其特征在于,所述对高维的乘积矩阵进行列向和行向上的采样是指:采用在欧几里得空间中不等概行采样兼列采样的近似约简技术对滑动窗口内的数据进行不等概采样。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410379986.8A CN104102476A (zh) | 2014-08-04 | 2014-08-04 | 非规则流中高维数据流典型相关性并行计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410379986.8A CN104102476A (zh) | 2014-08-04 | 2014-08-04 | 非规则流中高维数据流典型相关性并行计算方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104102476A true CN104102476A (zh) | 2014-10-15 |
Family
ID=51670656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410379986.8A Pending CN104102476A (zh) | 2014-08-04 | 2014-08-04 | 非规则流中高维数据流典型相关性并行计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102476A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573834A (zh) * | 2015-12-16 | 2016-05-11 | 复旦大学 | 于异构平台的面向高维数据的词汇树构建方法 |
CN105718425A (zh) * | 2016-01-15 | 2016-06-29 | 武汉大学 | 一种非线性数据全局互相关性的并行定量计算方法 |
CN106294503A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 数据的动态存储方法、装置及计算设备 |
CN109669415A (zh) * | 2018-12-13 | 2019-04-23 | 宁波大学 | 一种基于结构化典型变量分析的动态过程监测方法 |
CN109871848A (zh) * | 2017-12-01 | 2019-06-11 | 北京搜狗科技发展有限公司 | 一种移动终端的文字识别方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833438A (zh) * | 2010-04-19 | 2010-09-15 | 浙江大学 | 一种基于多重并行的数据通用处理方法 |
US20110072440A1 (en) * | 2009-09-22 | 2011-03-24 | Electronics And Telecommunications Research Institute | Parallel processing system and method |
WO2011101707A1 (en) * | 2010-02-16 | 2011-08-25 | Freescale Semiconductor, Inc. | Data processing method, data processor and apparatus including a data processor |
CN102662642A (zh) * | 2012-04-20 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于嵌套滑动窗口和遗传算法的并行处理方法 |
CN103049241A (zh) * | 2013-01-24 | 2013-04-17 | 重庆邮电大学 | 一种提高cpu+gpu异构装置计算性能的方法 |
CN103279332A (zh) * | 2013-06-09 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种基于gpu-cuda平台以及遗传算法的数据流并行处理方法 |
CN103559016A (zh) * | 2013-10-23 | 2014-02-05 | 江西理工大学 | 一种基于图形处理器并行计算的频繁子图挖掘方法 |
-
2014
- 2014-08-04 CN CN201410379986.8A patent/CN104102476A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110072440A1 (en) * | 2009-09-22 | 2011-03-24 | Electronics And Telecommunications Research Institute | Parallel processing system and method |
WO2011101707A1 (en) * | 2010-02-16 | 2011-08-25 | Freescale Semiconductor, Inc. | Data processing method, data processor and apparatus including a data processor |
CN101833438A (zh) * | 2010-04-19 | 2010-09-15 | 浙江大学 | 一种基于多重并行的数据通用处理方法 |
CN102662642A (zh) * | 2012-04-20 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于嵌套滑动窗口和遗传算法的并行处理方法 |
CN103049241A (zh) * | 2013-01-24 | 2013-04-17 | 重庆邮电大学 | 一种提高cpu+gpu异构装置计算性能的方法 |
CN103279332A (zh) * | 2013-06-09 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种基于gpu-cuda平台以及遗传算法的数据流并行处理方法 |
CN103559016A (zh) * | 2013-10-23 | 2014-02-05 | 江西理工大学 | 一种基于图形处理器并行计算的频繁子图挖掘方法 |
Non-Patent Citations (1)
Title |
---|
周勇,等: "非规则流中高维数据流典型相关性分析并行计算方法", 《软件学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294503A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 数据的动态存储方法、装置及计算设备 |
CN106294503B (zh) * | 2015-06-09 | 2019-09-20 | 阿里巴巴集团控股有限公司 | 数据的动态存储方法、装置及计算设备 |
CN105573834A (zh) * | 2015-12-16 | 2016-05-11 | 复旦大学 | 于异构平台的面向高维数据的词汇树构建方法 |
CN105718425A (zh) * | 2016-01-15 | 2016-06-29 | 武汉大学 | 一种非线性数据全局互相关性的并行定量计算方法 |
CN109871848A (zh) * | 2017-12-01 | 2019-06-11 | 北京搜狗科技发展有限公司 | 一种移动终端的文字识别方法及装置 |
CN109669415A (zh) * | 2018-12-13 | 2019-04-23 | 宁波大学 | 一种基于结构化典型变量分析的动态过程监测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102476A (zh) | 非规则流中高维数据流典型相关性并行计算方法及装置 | |
US10304008B2 (en) | Fast distributed nonnegative matrix factorization and completion for big data analytics | |
Demmel et al. | Communication-optimal parallel and sequential QR and LU factorizations | |
EP3380993B1 (en) | Systems and methods for robust large-scale machine learning | |
Bebendorf et al. | Constructing nested bases approximations from the entries of non-local operators | |
CN104317751A (zh) | 一种gpu上数据流处理系统及其数据流处理方法 | |
CN107273917A (zh) | 一种基于并行化主成分分析算法的数据降维方法 | |
CN104391679A (zh) | 一种非规则流中高维数据流的gpu处理方法 | |
Choi et al. | High-performance dense tucker decomposition on GPU clusters | |
CN106502964B (zh) | 一种基于Spark的极限学习机并行化计算方法 | |
Sterck et al. | An adaptive algebraic multigrid algorithm for low-rank canonical tensor decomposition | |
CN109102021A (zh) | 缺失条件下的核互补齐多核k-均值聚类机器学习方法 | |
Gratton et al. | Preconditioning and globalizing conjugate gradients in dual space for quadratically penalized nonlinear-least squares problems | |
CN105893151B (zh) | 一种基于cpu+mic异构平台的高维数据流的处理方法 | |
Liu et al. | High-performance tensor learning primitives using GPU tensor cores | |
Di et al. | Communication‐efficient estimation and inference for high‐dimensional quantile regression based on smoothed decorrelated score | |
Strumpen et al. | A Stream Algorithm for the SVD | |
JP7160441B2 (ja) | 情報処理装置及び制御方法 | |
CN112926658B (zh) | 基于二维数据嵌入与邻接拓扑图的图像聚类方法及设备 | |
CN105740208B (zh) | 一种基于admm算法的数据处理方法 | |
Jiang et al. | A novel GPU-based efficient approach for convolutional neural networks with small filters | |
Kim et al. | A BDDC algorithm with adaptive primal constraints for staggered discontinuous Galerkin approximation of elliptic problems with highly oscillating coefficients | |
Jia et al. | The implicitly restarted multi-symplectic block-Lanczos method for large-scale Hermitian quaternion matrix eigenvalue problem and applications | |
Kashi et al. | Fine-grain parallel smoothing by asynchronous iterations and incomplete sparse approximate inverses for computational fluid dynamics | |
Kaul et al. | Projective fisher information for natural gradient descent |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141015 |
|
WD01 | Invention patent application deemed withdrawn after publication |