CN110362780A - 一种基于申威众核处理器的大数据张量典范分解计算方法 - Google Patents

一种基于申威众核处理器的大数据张量典范分解计算方法 Download PDF

Info

Publication number
CN110362780A
CN110362780A CN201910644655.5A CN201910644655A CN110362780A CN 110362780 A CN110362780 A CN 110362780A CN 201910644655 A CN201910644655 A CN 201910644655A CN 110362780 A CN110362780 A CN 110362780A
Authority
CN
China
Prior art keywords
cpe
matrix
tensor
mapping
data
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
Application number
CN201910644655.5A
Other languages
English (en)
Other versions
CN110362780B (zh
Inventor
杨海龙
钟小刚
栾钟治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Aeronautics and Astronautics
Original Assignee
Beijing University of Aeronautics and Astronautics
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing University of Aeronautics and Astronautics filed Critical Beijing University of Aeronautics and Astronautics
Priority to CN201910644655.5A priority Critical patent/CN110362780B/zh
Publication of CN110362780A publication Critical patent/CN110362780A/zh
Application granted granted Critical
Publication of CN110362780B publication Critical patent/CN110362780B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及一种基于申威众核处理器的大数据张量典范分解计算方法,1)根据申威众核处理器的特征提出大数据计算方法swMR;2)swMR将申威众核处理器中以8*8网格形式组织的计算处理单元集群CPE分为32个CPE对,网格中每行相邻的两个为一组,其中一个CPE处理映射Map任务,另一个处理归约Reduce任务;3)按照每个CPE对的工作负载情况,在CPE对内进行映射归约Map/Reduce处理角色动态转换,实现动态调整工作负载;4)基于swMR和申威众核处理器,对张量典范分解计算提出了合理的计算方法swTensor。本发明支持机器学习算法以及张量典范分解计算在申威处理器上的实现;通过动态划分工作负载,平衡CPE对内的作业分发情况;基于映射归约MapReduce编程模型,swTensor高效支持张量典范分解计算。

Description

一种基于申威众核处理器的大数据张量典范分解计算方法
技术领域
本发明涉及众核处理器并发执行、张量典范分解计算和映射归约MapReduce编程方法等领域,特别是涉及一种基于申威众核处理器的大数据张量典范分解计算方法。
背景技术
互联网推荐系统的发展在很大程度上提高了用户的上网浏览的效率,节省了用户时间,帮助用户快速找到自己所需要的商品或信息,推荐系统以张量的形式来存储和计算特征信息。另外,张量在计算机视觉、图像处理以及信号处理等领域也具有重要的作用。张量的应用极大地方便了如特征信息这些数据的保存与表示,这提高了应用程序的编写和运行的效率。张量典范分解是处理张量计算的重要技术手段,主流的张量典范分解方法包括塔克分解(Tucker Decomposition)和典范分解(Canonical Polyadic Decomposition)。与此同时,映射归约MapReduce计算框架对于大数据的处理具有易于编程,自动并行和可扩展性强的优势。映射归约MapReduce计算框架减轻了程序员开发大规模并行数据处理应用的负担,提高了大数据应用的开发效率。映射归约MapReduce计算框架通过将大数据的处理过程抽象为映射Map和归约Reduce两个阶段,实现了大数据处理的大规模并行。鉴于映射归约MapReduce计算框架具有上述的优势,研究如何实现张量计算的自动并行,以发挥集群计算的优势。这使得张量计算能够通过大数据计算框架获得更高的计算效率。
对于张量典范分解有许多行之有效的优化方法,大体可以分为对不同的体系结构和编程框架进行适配。如利用Intel的众核体系架构Knights Landing many-coreprocessor来加速典范分解(canonical polyadic decomposition)的计算过程。采用数据分块的优化技术来解决MTTKRP的计算瓶颈。利用映射归约MapReduce编程框架来处理典范分解的计算过程,并且利用映射归约MapReduce可以很容易将因子矩阵迭代更新的求解过程并行化,减少开发人员的编程难度。
映射归约MapReduce为用户提供了两个编程接口,映射Map和归约Reduce。映射Map函数对数据进行第一步处理,从数据中提取出Key和value,并将其封装为键值对的数据结构,然后进行shuffle阶段,即完成了提取数据特征并整理的工作。然后会将这些键值对作为归约Reduce函数的参数,接着继续进行归约reduce的工作。在这个过程中,映射归约MapReduce框架屏蔽了底层的计算机硬件结构,简化了并行编程的难度,使得程序员能够很好地实现并行处理数据的应用。
神威太湖之光超级计算机采用SW26010芯片,该芯片采用片上融合的异构体系结构。每一块芯片具有4个从核簇。每一个从核簇有一个MPE(Management ProcessingElement),以及64个CPEs(Computing Processing Elements),并以8*8的网格形式组织在一起。每一个主核具有32KB的L1data cache和256KB的L2指令和数据的cache,并且每一个CPE有16KB的L1instruction cache和64KB的Local Device Memory(LDM)。一个从核簇群有34GB/s的理论内存带宽和756GFlops的双精度峰值性能。CPE主频为1.5GHz,SW26010为CPE提供两种内存访问方式,gld/gst(global load store)直接离散访问,或者通过DMA批量访问。这两种访存方式中,DMA具有较高的通信效率。另外,CPE阵列之间可以采用寄存器通信的方式实现数据传输。
综上所述,张量典范分解计算对于工业界和学术界都具有重要的意义,自动任务并行编程一般使用映射归约MapReduce编程框架,该框架具有易于编程且自动并行的优势,而帮助程序员屏蔽了底层的编程细节,只需要重点关注程序本身逻辑。但是遗憾的是,该申威体系结构上面还没有能够适配申威体系结构且支持张量典范分解计算的计算框架,这使得神威太湖之光很难在张量计算领域发挥其强大的计算能力。由此可见,对于在申威体系结构上面设计实现一套映射归约MapReduce编程框架和实现映射归约MapReduce与张量典范分解结合的算法,可以很好地自动并行加速处理张量典范分解计算过程,并且可以支持申威在大数据时代发挥其作用。
总之,现如今在申威处理器上面还没有基于映射归约MapReduce编程模型的张量典范分解计算方法,若没有该方法,则程序员需要自己去考虑申威众核处理器的每一个编程细节,使申威的计算能力;而本发明解决了数据在申威众核处理器的分发工作以及自动并行计算。
发明内容
本发明技术解决问题:降低程序员在申威上编写并行程序的困难,不需要程序员学习申威体系结构的编程方法,提供一种基于申威众核处理器的大数据张量典范分解计算方法,实现结合映射归约MapReduce的张量典范分解计算算法swTensor,加速张量典范分解过程,提高张量典范分解的效率,从而提高申威的计算能力。
本发明的技术解决方案,一种基于申威众核处理器的大数据张量典范分解计算方法,包括如下步骤:
步骤1:映射归约MapReduce应用程序在管理处理单元(Management ProcessorElement,简称MPE)端启动,由用户指定均衡度阈值thres和任务划分比例β,用于动态调整映射归约MapReduce工作的负载;
步骤2:在步骤1的基础上,在CPE上进行张量典范分解,求解因子矩阵A,其中X(1)代表张量X模一展开矩阵,A、B和C代表最后分解出来的因子矩阵,符号⊙代表Khatri-Rao积操作,T代表矩阵的转置操作,*代表矩阵的Hadamard积,代表矩阵的伪逆,使用最小交替二乘算法ALS(Alternating Least Square),对求解计算因子矩阵中涉及Khatri-Rao积操作的因子矩阵进行数据分块;
步骤3:CPE集群对张量典范分解中最小交替二乘算法中的X(1)进行数据分块;
步骤4:根据张量典范分解计算的映射归约MapReduce算法,将求解因子矩阵的计算任务通过运行时应用程序编程接口API加载到CPE集群中,计算张量典范分解任务,初始状态下,一个CPE对内负责映射Map工作的CPE称之为CPE A,负责归约Reduce工作的CPE称之为CPE B;
步骤5:由于CPE的局部存储器空间有限,每次仅获取部分数据,即分块后的数据,获取到一块数据并计算,作为一轮计算;任务调度器在运行时期间记录每一轮数据处理的每个CPE对内两个CPE中的计算过程花费的时钟周期数,当任务调度器根据用户指定的均衡度阈值thres检测到CPE对中的工作负载不平衡时,若某CPE的计算时间与同一组中的CPE的计算时间的差值的绝对值高于均衡度阈值thres时,则会在下一轮映射归约MapReduce工作中将组内另一CPE的部分工作由该CPE来承担,即将两个CPE中用于计算时间最少的那个CPE动态转化为组内另一CPE对应的处理角色,由此来改善CPE对内工作负载不均衡的情况;
步骤6:当发生动态角色转换时,即一个CPE对内某个CPE转化处理角色时,一个CPE对内用于计算时间最少的那个CPE需要承担的由该CPE对内的另一个CPE其伙伴划分来的工作量;
步骤7:若任务调度器在上一轮映射归约MapReduce处理过程中确定不均衡状态为映射Map任务执行时间与归约Reduce任务执行时间之差大于均衡度阈值thres时,任务调度器需要转换本轮处理任务中CPE B的处理角色为映射Map,并告知CPE B将要执行映射Map处理的数据的起始位置与结束位置;
步骤8:若任务调度器在上一轮映射归约MapReduce处理过程中确定不均衡状态为归约Reduce任务执行时间与映射Map任务执行时间之差大于均衡度阈值thres时,任务调度器需要转换本轮处理任务中CPE A的处理角色为归约Reduce,并告知CPE A将要执行归约Reduce处理的数据的起始位置与结束位置;
步骤9:若任务调度器在上一轮映射归约MapReduce处理过程中确定任务处于均衡状态时,任务调度器不需要对本轮数据处理转换CPE的处理角色;
步骤10:重复步骤5至步骤9,直到计算因子矩阵A的任务完成;
步骤11:根据求解因子矩阵B,对C⊙A进行数据分块,以及对X(2)进行数据分块,并重复步骤4至步骤10;其中X(2)是张量X的模2展开矩阵;
步骤12:根据求解因子矩阵C,对B⊙A进行数据分块,以及对X(3)进行数据分块,并重复步骤4至步骤10;X(3)是张量X的模3展开矩阵;
步骤13:若典范分解出来的因子矩阵A,B和C满足误差需求或达到最大迭代次数,则本次启动的映射归约MapReduce应用程序运行结束,反之重复步骤2至步骤12;最终完成张量分解任务,将张量X分解为因子矩阵A,B和C。
所述步骤1中,用户在配置文件中修改均衡度阈值thres和任务划分比例β的值,在映射归约MapReduce应用程序运行时加载。
所述步骤2中,对计算因子矩阵A的(C⊙B)进行数据分块的方法如下:计算A时是(C⊙B),具体如下,其中矩阵M代表相应计算过程中的一个中间结果矩阵,即不同的计算过程中M具有不同的值:
根据表达式的形式,Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵C和矩阵B是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵C,进行按列分块的操作;每一个映射Map操作在获取到矩阵C的列数后,便能找到对应的矩阵B的列数据;并根据映射归约MapReduce对的个数来按列分配数据;然后根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素cij,映射Map阶段会根据行列的键值信息获取到对应的矩阵B的列数据记为Bjb,矩阵B中第j列第b块数据,根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后cij相乘得到记为Mjb,矩阵M中第j列第b块数据。
所述步骤11中,对(C⊙A)进行数据分块的方法如下:
根据表达式的形式,Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵C和矩阵A是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵C,进行按列分块的操作;每一个映射Map操作在获取到矩阵C的列数后,便能找到对应的矩阵A的列数据;并根据映射归约MapReduce对的个数来按列分配数据;然后根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素cij,映射Map阶段会根据行列的键值信息获取到对应的矩阵A的列数据记为Ajb,矩阵A中第j列第b块数据,根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后cij相乘得到记为Mjb,矩阵M中第j列第b块数据。
所述步骤12:中,对(B⊙A)进行数据分块的方法如下:
根据表达式的形式,Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵B和矩阵A是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵B,进行按列分块的操作;每一个映射Map操作在获取到矩阵B的列数后,便能找到对应的矩阵A的列数据;并根据映射归约MapReduce对的个数来按列分配数据;然后根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素bij,映射Map阶段会根据行列的键值信息获取到对应的矩阵A的列数据记为Ajb,矩阵A中第j列第b块数据,根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后bij相乘得到记为Mjb,矩阵M中第j列第b块数据。
所述步骤3中,对张量典范分解中最小交替二乘算法中的X(1)进行数据分块方案如下:
对张量X的模1展开矩阵X(1)∈I×JK进行分块,通过步骤2,得到了根据矩阵与矩阵相乘的规则,获取到X(1)矩阵中每一行相应元素,假设为记为X(1)ib,矩阵X(1)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(1)中的第i行第b块数据与M中第j列第b块数据向量乘的结果;再把X(1)中所有行的相同位置元素都与做向量乘的操作,然后将内存回收,接着获取因子矩阵C的下一个对应元素c(i+1)j并依然按照以上方法计算下一个即X(1)中的第i行第d块数据与M中第j列第d块数据向量乘的结果,最后将中每一行中具有相同列号(i)和行号(j)的元素相加,得到最后N的i行j列的元素,如
所述步骤11中,对X(2)进行数据分块具体步骤如下:
对张量X的模2展开矩阵X(2)∈J×IK进行分块,通过步骤2,得到了根据矩阵与矩阵相乘的规则,获取到X(2)矩阵中每一行相应元素,假设为记为X(2)ib,矩阵X(2)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(2)中的第i行第b块数据与M中第j列第b块数据向量乘的结果;然后把X(2)中所有行的相同位置元素都与做向量乘的操作,再将内存回收,接着获取因子矩阵C的下一个对应元素c(i+1)j并依然按照以上方法计算下一个即X(2)中的第i行第d块数据与M中第j列第d块数据向量乘的结果;最后将中每一行中具有相同列号(i)和行号(j)的元素相加,得到最后N的i行j列的元素,如
所述步骤12中,对X(3)进行数据分块具体步骤如下:
对张量X的模3展开矩阵X(3)∈K×IJ进行分块,通过步骤2,得到了根据矩阵与矩阵相乘的规则,获取到X(3)矩阵中每一行相应元素,假设为记为X(3)ib,矩阵X(3)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(3)中的第i行第b块数据与M中第j列第b块数据向量乘的结果,再把X(3)中所有行的相同位置元素都与做向量乘的操作,然后将内存回收,接着获取因子矩阵B的下一个对应元素b(i+1)j并依然按照以上方法计算下一个即X(3)中的第i行第d块数据与M中第j列第d块数据向量乘的结果,最后将中每一行中具有相同列号(i)和行号(j)的元素相加,得到最后N的i行j列的元素,如
所述步骤4中,实现CPE分组的方式如下:
申威众核处理器每个核组具有64个CPE,编号从0至63,将编号除以2取整,即为该CPE的组号;如编号为0的CPE组号为0,编号为1的CPE组号为0,为一组;组内的CPE获取伙伴CPE编号的方式为:对于编号为偶数的CPE来说,其伙伴CPE编号为自己的编号加1;对于编号为奇数的CPE来说,伙伴CPE的编号为自己的编号减1。
所述步骤5中,任务调度器记录每一轮映射归约MapReduce操作中的映射Map操作和归约Reduce操作所花费的时钟周期数,并根据用户指定的均衡度阈值thres来判断CPE对中的工作负载是否不均衡,一对CPE中包含两个CPE分别负责映射和归约的操作,比如若映射Map和归约Reduce之间计算的时钟周期数差值的绝对值大于thres,则意味着当前工作负载不平衡。
所述步骤6中,一个CPE对内某个CPE转化处理角色时,一个CPE对内用于计算时间最少的那个CPE需要承担的由该CPE对内的另一个CPE其伙伴划分来的工作量的计算方法如下:
一个CPE对中,若判定CPE A的计算时间大于CPE B的计算时间时,则再划分负载的公式表示如下,若判定CPE B的计算时间大于CPE A的计算时间时,则分母改为CTB:
其中CTA表示CPE A的计算时间,CTB表示CPE B的计算时间,task_count表示本轮映射归约MapReduce工作的输入数据量。
所述步骤7和8中,当把CPE B转换为映射Map角色时,或把CPE A转换为归约Reduce角色时,依照步骤6将多余的任务交由CPE B或A处理,让CPE B或A执行映射Map或归约Reduce函数处理多余的任务。
所述步骤10中,每个CPE对会检查由MPE分配给自己的全部工作量是否已经完成,若未完成则继续执行任务;若完成,则在主存中设定完成标志位为true,以告知主核MPE任务已经完成。
本发明所涉及的映射归约MapReduce编程模型swMR和swTensor在申威体系结构上还没有类似的技术,本发明充分挖掘了CPE集群的计算资源,能够在降低程序员编写申威并行程序的门槛同时,最大限度地保持CPE之间的工作负载平衡,解决传统张量典范分解计算过程中中间数据爆炸的问题。
本发明与现有技术相比的优点在于:
(1)本发明采用了数据分块的方法,分布计算,解决了传统方法中,中间数据爆炸的问题。
(2)本发明比x86平台上的同类型算法BigTensor在相同数据规模的情况下快1.36倍。
(3)由于本发明采用了映射归约MapReduce编程模式,本发明屏蔽了申威体系结构的底层细节,自动并行处理数据。
附图说明
图1是实现本发明提出的swMR整体架构图;
图2是本发明提出的结合swMR的张量典范分解算法swTensor的流程示意图;
图3是本发明提出的swTensor中对Khatri-Rao积中因子矩阵的分解示意图;
图4是本发明提出的swTensor中对模展开矩阵的分解示意图;
图5是本发明提出的swTensor的执行流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的系统架构图如图1所示,执行流程示意图如图5所示,整个作业由MPE启动,任务调度器是由CPE执行的,Task是存放在主存中的原始数据,Results是CPE处理完成后存放在主存中的部分结果,仍由MPE负责最后的整理工作;张量典范分解计算流程如图2所示,其中的映射Map与归约Reduce操作在CPE中完成,数据分块的操作在MPE完成。
如图1和图2所示:本发明具体实施步骤如下:
步骤1:映射归约MapReduce应用程序在MPE(Management Processing Element,主核)端启动,由用户指定均衡度阈值thres和任务划分比例β,在处理映射Map和归约Reduce任务时作为动态调整映射归约MapReduce作业负载的依据;
步骤2:MPE对张量典范分解中使用最小交替二乘算法(Alternating LeastSquare,简称为ALS),来求解因子矩阵的Khatri-Rao积部分进行数据分块,如图3所示,具体步骤如下,以求解因子矩阵A时的C⊙B计算部分为例,其中A,B和C代表最后分解出来的因子矩阵,符号⊙代表Khatri-Rao积操作:
其中C和B代表因子矩阵,代表因子矩阵C中的第一列元素,代表因子矩阵B中的第一列元素,代表因子矩阵C中的第二列元素,代表因子矩阵B中的第二列元素,代表因子矩阵C中的第k列元素,代表因子矩阵B中的第k列元素,符号⊙代表Khatri-Rao积操作,符号代表Kronecker积操作。通过该表达式的形式,可以发现最终Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积而言,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵C和矩阵B是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵C,进行按列分块的操作。每一个映射Map操作在获取到矩阵C的列数后,便能找到对应的矩阵B的列。本发明根据映射归约MapReduce对的个数来按列分配数据。根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素Cij,映射Map阶段会根据行列的键值信息获取到对应的矩阵B的列数据记为Bjb,矩阵B中第j列第b块数据,本发明根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后cij相乘得到记为Mjb,矩阵M中第j列第b块数据。
步骤3:CPE集群对张量典范分解中最小交替二乘算法中的模展开矩阵进行数据分块,求解A时模展开矩阵为X(1),同理得求解B时为X(2),求解C时为X(3),如图4所示,具体步骤如下(此处以X(1)为例,对于X(2)和X(3)类似):
对张量X的模1展开矩阵X(1)∈I×JK进行分块,通过上面的分析,得到了 根据矩阵与矩阵相乘的规则,将获取到X(1)矩阵中每一行相应元素,假设为记为X(1)ib,矩阵X(1)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(1)中的第i行第b块数据与M中第j列第b块数据向量乘的结果,然后将会把X(1)中所有行的相同位置元素都与对应做向量乘的操作,然后将放弃,接着获取因子矩阵C的下一个对应元素c(i+1)j并依然按照以上方法计算下一个即X(1)中的第i行第d块数据与M中第j列第d块数据向量乘的结果。这样采用分步计算的策略,本发明可以有效避免一次性计算Khatri-Rao积,从而避免计算Khatri-Rao积的过程中的中间数据爆炸的问题。
步骤4:根据swTensor的张量典范分解计算的映射归约MapReduce算法,将求解因子矩阵的计算任务通过运行时API加载到CPE集群中计算张量典范分解任务,初始状态下,一个CPE对内负责映射Map工作的CPE称之为CPE A,负责归约Reduce工作的CPE称之为CPEB;
步骤5:由于CPE的局部存储器空间有限,每次仅获取部分数据,即前述步骤中分块后的数据,获取到一块数据并计算,作为一轮计算。任务调度器(TaskManager)会在运行时期间记录每一轮数据处理的每个CPE对内两个CPE中的主要计算过程花费的时钟周期数,当任务调度器根据用户指定的均衡度阈值thres检测CPE对中的某个CPE的计算时间是否较少,若CPE对内的计算所耗时间差值的绝对值大于thres,则定义为工作负载不均衡,若某CPE的计算时间与同一组中的CPE的计算时间的差值的绝对值低于均衡度阈值thres时较少,便会在下一轮映射归约MapReduce工作中将组内另一CPE的部分工作由该CPE来承担,即将计算量较少的CPE动态转化为组内另一CPE对应的处理角色,由此来改善CPE对内工作负载不均衡的情况;
步骤6:当发生动态角色转换时,计算量较少的CPE需要承担的由其伙伴划分来的工作量由公式确定,此处以映射Map工作负载偏高为例,若归约Reduce负载偏高则将分母换为CTB;
步骤7:若任务调度器在上一轮映射归约MapReduce处理过程中确定不均衡状态为映射Map任务执行时间比归约Reduce任务执行时间高过均衡度阈值thres过多时,任务调度器需要转换本轮处理任务中CPE B的处理角色为映射Map,并告知CPE B将要执行Map处理的数据的起始位置与结束位置;
步骤8:若任务调度器在上一轮映射归约MapReduce处理过程中确定不均衡状态为归约Reduce任务执行时间比映射Map任务执行时间高过均衡度阈值thres过多时,任务调度器需要转换本轮处理任务中CPE A的处理角色为归约Reduce,并告知CPE A将要执行归约Reduce处理的数据的起始位置与结束位置;
步骤9:若任务调度器在上一轮映射归约MapReduce处理过程中确定任务处于均衡状态时,任务调度器不需要对本轮数据处理转换CPE的处理角色;
步骤10:重复步骤5至步骤9直到计算因子矩阵的任务完成;
步骤11:根据来求解因子矩阵B,根据步骤2中的数据分块方式对C⊙A进行数据分块,以及步骤3中的数据分块方式对X(2)进行数据分块,并重复步骤4至步骤10;其中X(2)是张量X的模2展开矩阵,X(3)是张量X的模3展开矩阵;
步骤12:根据来求解因子矩阵C,根据步骤2中的数据分块方式对B⊙A进行数据分块,以及步骤3中的数据分块方式对X(3)进行数据分块,并重复步骤4至步骤10;
步骤13:若典范分解出来的因子矩阵A,B和C满足误差需求或达到最大迭代次数,则本次启动的映射归约MapReduce应用运行结束,反之重复步骤2至步骤12;最后完成张量分解任务,分解为因子矩阵A,B和C。

Claims (13)

1.一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于,包括以下步骤:
步骤1:映射归约MapReduce应用程序在管理处理单元(Management ProcessorElement,简称MPE)端启动,由用户指定均衡度阈值thres和任务划分比例β,用于动态调整映射归约MapReduce工作的负载;
步骤2:在步骤1的基础上,在CPE上进行张量典范分解,求解因子矩阵A,其中X(1)代表张量X模一展开矩阵,A、B和C代表最后分解出来的因子矩阵,符号⊙代表Khatri-Rao积操作,T代表矩阵的转置操作,*代表矩阵的Hadamard积,代表矩阵的伪逆,使用最小交替二乘算法ALS(Alternating Least Square),对求解计算因子矩阵中涉及Khatri-Rao积操作的因子矩阵进行数据分块;
步骤3:CPE集群对张量典范分解中最小交替二乘算法中的X(1)进行数据分块;
步骤4:根据张量典范分解计算的映射归约MapReduce算法,将求解因子矩阵的计算任务通过运行时应用程序编程接口API加载到CPE集群中,计算张量典范分解任务,初始状态下,一个CPE对内负责映射Map工作的CPE称之为CPE A,负责归约Reduce工作的CPE称之为CPE B;
步骤5:由于CPE的局部存储器空间有限,每次仅获取部分数据,即分块后的数据,获取到一块数据并计算,作为一轮计算;任务调度器在运行时期间记录每一轮数据处理的每个CPE对内两个CPE中的计算过程花费的时钟周期数,当任务调度器根据用户指定的均衡度阈值thres检测到CPE对中的工作负载不平衡时,若某CPE的计算时间与同一组中的CPE的计算时间的差值的绝对值高于均衡度阈值thres时,则会在下一轮映射归约MapReduce工作中将组内另一CPE的部分工作由该CPE来承担,即将两个CPE中用于计算时间最少的那个CPE动态转化为组内另一CPE对应的处理角色,由此来改善CPE对内工作负载不均衡的情况;
步骤6:当发生动态角色转换时,即一个CPE对内某个CPE转化处理角色时,一个CPE对内用于计算时间最少的那个CPE需要承担的由该CPE对内的另一个CPE其伙伴划分来的工作量;
步骤7:若任务调度器在上一轮映射归约MapReduce处理过程中确定不均衡状态为映射Map任务执行时间与归约Reduce任务执行时间之差大于均衡度阈值thres时,任务调度器需要转换本轮处理任务中CPE B的处理角色为映射Map,并告知CPE B将要执行映射Map处理的数据的起始位置与结束位置;
步骤8:若任务调度器在上一轮映射归约MapReduce处理过程中确定不均衡状态为归约Reduce任务执行时间与映射Map任务执行时间之差大于均衡度阈值thres时,任务调度器需要转换本轮处理任务中CPE A的处理角色为归约Reduce,并告知CPE A将要执行归约Reduce处理的数据的起始位置与结束位置;
步骤9:若任务调度器在上一轮映射归约MapReduce处理过程中确定任务处于均衡状态时,任务调度器不需要对本轮数据处理转换CPE的处理角色;
步骤10:重复步骤5至步骤9,直到计算因子矩阵A的任务完成;
步骤11:根据求解因子矩阵B,对C⊙A进行数据分块,以及对X(2)进行数据分块,并重复步骤4至步骤10;其中X(2)是张量X的模2展开矩阵;
步骤12:根据求解因子矩阵C,对B⊙A进行数据分块,以及对X(3)进行数据分块,并重复步骤4至步骤10;X(3)是张量X的模3展开矩阵;
步骤13:若典范分解出来的因子矩阵A,B和C满足误差需求或达到最大迭代次数,则本次启动的映射归约MapReduce应用程序运行结束,反之重复步骤2至步骤12;最终完成张量分解任务,将张量X分解为因子矩阵A,B和C。
2.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤1中,用户在配置文件中修改均衡度阈值thres和任务划分比例β的值,在映射归约MapReduce应用程序运行时加载。
3.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤2中,对计算因子矩阵A的(C⊙B)进行数据分块的方法如下:计算A时是(C⊙B),具体如下,其中矩阵M代表相应计算过程中的一个中间结果矩阵,即不同的计算过程中M具有不同的值:
根据表达式的形式,Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵C和矩阵B是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵C,进行按列分块的操作;每一个映射Map操作在获取到矩阵C的列数后,便能找到对应的矩阵B的列数据;并根据映射归约MapReduce对的个数来按列分配数据;然后根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素cij,映射Map阶段会根据行列的键值信息获取到对应的矩阵B的列数据记为Bjb,矩阵B中第j列第b块数据,根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后cij相乘得到记为Mjb,矩阵M中第j列第b块数据。
4.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤11中,对(C⊙A)进行数据分块的方法如下:
根据表达式的形式,Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵C和矩阵A是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵C,进行按列分块的操作;每一个映射Map操作在获取到矩阵C的列数后,便能找到对应的矩阵A的列数据;并根据映射归约MapReduce对的个数来按列分配数据;然后根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素cij,映射Map阶段会根据行列的键值信息获取到对应的矩阵A的列数据记为Ajb,矩阵A中第j列第b块数据,根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后cij相乘得到记为Mjb,矩阵M中第j列第b块数据。
5.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤12:中,对(B⊙A)进行数据分块的方法如下:
根据表达式的形式,Khatri-Rao积最终会转化为计算Kronecker积的过程,对于Kronecker积,其中每一项的计算过程都是向量中的各项元素乘以向量中的所有元素,并且矩阵B和矩阵A是列对列计算,所以,只需要对Khatri-Rao积的第一个操作数,此处是矩阵B,进行按列分块的操作;每一个映射Map操作在获取到矩阵B的列数后,便能找到对应的矩阵A的列数据;并根据映射归约MapReduce对的个数来按列分配数据;然后根据Kronecker积的计算规则,每一个映射归约MapReduce对会获取到自己所对应的列数据,每次按顺序获取相应列的一个元素bij,映射Map阶段会根据行列的键值信息获取到对应的矩阵A的列数据记为Ajb,矩阵A中第j列第b块数据,根据可使用的本地存储LDM空间尽可能多的获取数据增大n1~n2的跨度,然后bij相乘得到记为Mjb,矩阵M中第j列第b块数据。
6.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤3中,对张量典范分解中最小交替二乘算法中的X(1)进行数据分块方案如下:
对张量X的模1展开矩阵X(1)∈I×JK进行分块,通过步骤2,得到了根据矩阵与矩阵相乘的规则,获取到X(1)矩阵中每一行相应元素,假设为记为X(1)ib,矩阵X(1)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(1)中的第i行第b块数据与M中第j列第b块数据向量乘的结果;再把X(1)中所有行的相同位置元素都与做向量乘的操作,然后将内存回收,接着获取因子矩阵C的下一个对应元素c(i+1)j并依然按照以上方法计算下一个即X(1)中的第i行第d块数据与M中第j列第d块数据向量乘的结果,最后将中每一行中具有相同列号(i)和行号(j)的元素相加,得到最后N的i行j列的元素,如
7.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤11中,对X(2)进行数据分块具体步骤如下:
对张量X的模2展开矩阵X(2)∈J×IK进行分块,通过步骤2,得到了根据矩阵与矩阵相乘的规则,获取到X(2)矩阵中每一行相应元素,假设为记为X(2)ib,矩阵X(2)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(2)中的第i行第b块数据与M中第j列第b块数据向量乘的结果;然后把X(2)中所有行的相同位置元素都与做向量乘的操作,再将内存回收,接着获取因子矩阵C的下一个对应元素c(i+1)j并依然按照以上方法计算下一个即X(2)中的第i行第d块数据与M中第j列第d块数据向量乘的结果;最后将中每一行中具有相同列号(i)和行号(j)的元素相加,得到最后N的i行j列的元素,如
8.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤12中,对X(3)进行数据分块具体步骤如下:
对张量X的模3展开矩阵X(3)∈K×IJ进行分块,通过步骤2,得到了根据矩阵与矩阵相乘的规则,获取到X(3)矩阵中每一行相应元素,假设为记为X(3)ib,矩阵X(3)中第i行第b块数据,其中x2-x1=n2-n1,即两个数据块中的元素个数相等,然后,按照公式即X(3)中的第i行第b块数据与M中第j列第b块数据向量乘的结果,再把X(3)中所有行的相同位置元素都与做向量乘的操作,然后将内存回收,接着获取因子矩阵B的下一个对应元素b(i+1)j并依然按照以上方法计算下一个即X(3)中的第i行第d块数据与M中第j列第d块数据向量乘的结果,最后将中每一行中具有相同列号(i)和行号(j)的元素相加,得到最后N的i行j列的元素,如
9.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤4中,实现CPE分组的方式如下:
申威众核处理器每个核组具有64个CPE,编号从0至63,将编号除以2取整,即为该CPE的组号;如编号为0的CPE组号为0,编号为1的CPE组号为0,为一组;组内的CPE获取伙伴CPE编号的方式为:对于编号为偶数的CPE来说,其伙伴CPE编号为自己的编号加1;对于编号为奇数的CPE来说,伙伴CPE的编号为自己的编号减1。
10.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤5中,任务调度器记录每一轮映射归约MapReduce操作中的映射Map操作和归约Reduce操作所花费的时钟周期数,并根据用户指定的均衡度阈值thres来判断CPE对中的工作负载是否不均衡,一对CPE中包含两个CPE分别负责映射和归约的操作,若映射Map和归约Reduce之间计算的时钟周期数差值的绝对值大于thres,则意味着当前工作负载不平衡。
11.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤6中,一个CPE对内某个CPE转化处理角色时,一个CPE对内用于计算时间最少的那个CPE需要承担的由该CPE对内的另一个CPE其伙伴划分来的工作量的计算方法如下:
一个CPE对中,若判定CPE A的计算时间大于CPE B的计算时间时,则再划分负载的公式表示如下,若判定CPE B的计算时间大于CPE A的计算时间时,则分母改为CTB:
其中CTA表示CPE A的计算时间,CTB表示CPE B的计算时间,task_count表示本轮映射归约MapReduce工作的输入数据量。
12.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤7和8中,当把CPE B转换为映射Map角色时,或把CPE A转换为归约Reduce角色时,依照步骤6将多余的任务交由CPE B或A处理,让CPE B或A执行映射Map或归约Reduce函数处理多余的任务。
13.根据权利要求1所述的一种基于申威众核处理器的大数据张量典范分解计算方法,其特征在于:所述步骤10中,每个CPE对会检查由MPE分配给自己的全部工作量是否已经完成,若未完成则继续执行任务;若完成,则在主存中设定完成标志位为true,以告知主核MPE任务已经完成。
CN201910644655.5A 2019-07-17 2019-07-17 一种基于申威众核处理器的大数据张量典范分解计算方法 Expired - Fee Related CN110362780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910644655.5A CN110362780B (zh) 2019-07-17 2019-07-17 一种基于申威众核处理器的大数据张量典范分解计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910644655.5A CN110362780B (zh) 2019-07-17 2019-07-17 一种基于申威众核处理器的大数据张量典范分解计算方法

Publications (2)

Publication Number Publication Date
CN110362780A true CN110362780A (zh) 2019-10-22
CN110362780B CN110362780B (zh) 2021-03-23

Family

ID=68219989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910644655.5A Expired - Fee Related CN110362780B (zh) 2019-07-17 2019-07-17 一种基于申威众核处理器的大数据张量典范分解计算方法

Country Status (1)

Country Link
CN (1) CN110362780B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104765A (zh) * 2019-12-24 2020-05-05 清华大学 基于神威架构的气体动理学算法优化方法
CN112596872A (zh) * 2020-12-15 2021-04-02 北京灵汐科技有限公司 任务调度、预处理、处理方法及设备、处理单元、介质
CN112765094A (zh) * 2020-12-31 2021-05-07 北京航空航天大学 一种基于数据划分和计算分配的稀疏张量典范分解方法
CN113468469A (zh) * 2021-06-02 2021-10-01 北京迈格威科技有限公司 由计算机执行的特征图的卷积处理方法、装置和电子设备
CN114970294A (zh) * 2022-08-02 2022-08-30 山东省计算中心(国家超级计算济南中心) 基于神威架构的三维应变仿真pcg并行优化方法及系统
WO2022218218A1 (zh) * 2021-04-14 2022-10-20 华为技术有限公司 数据处理方法、装置、归约服务器及映射服务器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013050057A1 (en) * 2011-10-03 2013-04-11 Telefonaktiebolaget L M Ericsson (Publ) A method for exploiting massive parallelism
CN103440121A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
CN107679242A (zh) * 2017-10-30 2018-02-09 河海大学 融合多信息源耦合张量分解的标签推荐方法
CN108170639A (zh) * 2017-12-26 2018-06-15 云南大学 基于分布式环境的张量cp分解实现方法
CN108460489A (zh) * 2018-03-15 2018-08-28 重庆邮电大学 一种基于大数据技术的用户行为分析与服务推荐框架
CN108509270A (zh) * 2018-03-08 2018-09-07 中国科学院软件研究所 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013050057A1 (en) * 2011-10-03 2013-04-11 Telefonaktiebolaget L M Ericsson (Publ) A method for exploiting massive parallelism
CN103440121A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
CN107679242A (zh) * 2017-10-30 2018-02-09 河海大学 融合多信息源耦合张量分解的标签推荐方法
CN108170639A (zh) * 2017-12-26 2018-06-15 云南大学 基于分布式环境的张量cp分解实现方法
CN108509270A (zh) * 2018-03-08 2018-09-07 中国科学院软件研究所 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法
CN108460489A (zh) * 2018-03-15 2018-08-28 重庆邮电大学 一种基于大数据技术的用户行为分析与服务推荐框架

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104765A (zh) * 2019-12-24 2020-05-05 清华大学 基于神威架构的气体动理学算法优化方法
CN111104765B (zh) * 2019-12-24 2021-08-17 清华大学 基于神威架构的气体动理学算法优化方法
CN112596872A (zh) * 2020-12-15 2021-04-02 北京灵汐科技有限公司 任务调度、预处理、处理方法及设备、处理单元、介质
CN112765094A (zh) * 2020-12-31 2021-05-07 北京航空航天大学 一种基于数据划分和计算分配的稀疏张量典范分解方法
CN112765094B (zh) * 2020-12-31 2022-09-30 北京航空航天大学 一种基于数据划分和任务分配的稀疏张量典范分解方法
WO2022218218A1 (zh) * 2021-04-14 2022-10-20 华为技术有限公司 数据处理方法、装置、归约服务器及映射服务器
CN113468469A (zh) * 2021-06-02 2021-10-01 北京迈格威科技有限公司 由计算机执行的特征图的卷积处理方法、装置和电子设备
CN114970294A (zh) * 2022-08-02 2022-08-30 山东省计算中心(国家超级计算济南中心) 基于神威架构的三维应变仿真pcg并行优化方法及系统
CN114970294B (zh) * 2022-08-02 2022-10-25 山东省计算中心(国家超级计算济南中心) 基于神威架构的三维应变仿真pcg并行优化方法及系统

Also Published As

Publication number Publication date
CN110362780B (zh) 2021-03-23

Similar Documents

Publication Publication Date Title
CN110362780A (zh) 一种基于申威众核处理器的大数据张量典范分解计算方法
JáJá Parallel algorithms
Farhat et al. Solution of finite element systems on concurrent processing computers
Grigori et al. Parallel symbolic factorization for sparse LU with static pivoting
Boyer et al. Dense dynamic programming on multi GPU
Rostrup et al. Parallel hyperbolic PDE simulation on clusters: Cell versus GPU
Gmys et al. A GPU-based Branch-and-Bound algorithm using Integer–Vector–Matrix data structure
Szustak et al. Using Intel Xeon Phi coprocessor to accelerate computations in MPDATA algorithm
Baskaran et al. Low-overhead load-balanced scheduling for sparse tensor computations
Liu Parallel and scalable sparse basic linear algebra subprograms
Sao et al. A sparse direct solver for distributed memory Xeon Phi-accelerated systems
Clarke et al. Fupermod: A framework for optimal data partitioning for parallel scientific applications on dedicated heterogeneous hpc platforms
Qiao et al. Parallelizing and optimizing neural Encoder–Decoder models without padding on multi-core architecture
Tian et al. swSuperLU: A highly scalable sparse direct solver on Sunway manycore architecture
Merta et al. Intel Xeon Phi acceleration of hybrid total FETI solver
Bernabé et al. Auto-tuning techniques for linear algebra routines on hybrid platforms
CN109101708B (zh) 基于二级区域分解的隐式有限元并行方法
Lin et al. swFLOW: A dataflow deep learning framework on sunway taihulight supercomputer
Langguth et al. Accelerating detailed tissue-scale 3D cardiac simulations using heterogeneous CPU-Xeon Phi computing
Wang et al. Fine-grained heterogeneous parallel direct solver for finite element problems
Jeannot et al. Experimenting task-based runtimes on a legacy Computational Fluid Dynamics code with unstructured meshes
Al-Mouhamed et al. SpMV and BiCG-Stab optimization for a class of hepta-diagonal-sparse matrices on GPU
Maly et al. Evaluation of the Intel Xeon Phi offload runtimes for domain decomposition solvers
Guzik et al. Adaptive mesh refinement on parallel heterogeneous (CPU/GPU) architectures
Küchlin PARSAC-2: Parallel computer algebra on the desk-top

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210323