面向GPDSP的大规模矩阵乘法计算的方法技术

技术编号:11474433 阅读:167 留言:0更新日期:2015-05-20 04:11
本发明专利技术公开了一种面向GPDSP的大规模矩阵乘法计算的方法,其步骤为:S1:由CPU核在片外DDR存储器为矩阵A、B和C分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据;S2:根据GPDSP的体系结构特征确定最佳的分块矩阵乘法所需要的分块大小MB、KB和NB;S3:由CPU核根据步骤S2确定的MB、KB、NB值将矩阵A、B和C进行逻辑分块;S4:由GPDSP的CPU核调度DSP核计算子块矩阵的乘加计算:Cik+=Aij*Bjk(1≤i≤mi,1≤j≤ki,1≤k≤ni);S5:计算完毕。本发明专利技术原理简单、操作方便,能充分利用GPDSP的CPU核通用计算和DSP核向量处理阵列强大并行计算、高带宽向量数据加载能力,显著提高DSP核计算访存比。

【技术实现步骤摘要】
面向GPDSP的大规模矩阵乘法计算的方法
本专利技术主要涉及通用计算数字信号处理器(General-PurposeDigitalSignalProcessor,简称GPDSP),特指一种适用于GPDSP的大规模矩阵乘法计算的方法。
技术介绍
基本线性代数算法库(BasicLinearAlgebraSubroutines,BLAS)是各类科学计算最常用的核心数学算法库之一,工业界针对各自的处理器平台都推出了高度优化的BLAS实现,如IBM的ESSL、Intel的MKL、AMD的ACML等。其中,矩阵乘法(GeneralMatrix-MatrixMultiplication,GEMM)是BLAS库的核心算法。GEMM是典型的计算密集和访存密集型应用,对处理器的运算能力、访存带宽及延迟要求非常高,相关文献研究表明GEMM计算占据高性能基准测试程序(HighPerformanceLinpack,HPL)运算量的90%以上。因此,针对处理器的体系结构特点研究GEMM优化方法对评测该处理器的计算效率、发挥处理器的计算优势和提高应用程序的运行速度均具有很重要的参考价值。分块矩阵乘法方法是提升大规模GEMM性能的主要方法,最典型的研究是Gunnels针对基于Cache的多级存储结构,提出的分层计算的GEMM优化方法,能够降低存储层次间搬运数据的平均开销。面向Cache结构的分块矩阵乘法方法的主要思想是将大矩阵的乘法分割为一系列子矩阵的乘法,设m为Cache的容量,则分块参数中的子矩阵块大小blocksize通常满足约束条件blocksize<=sqrt(m/3),使得子矩阵计算时的数据访问能够全部在Cache中命中,该部分的计算能以接近峰值的性能进行,从而提高整个大矩阵乘法的计算性能。在专利申请号为201310725118.6的文献(处于实审阶段)中提供了一种通用计算数字信号处理器(General-PurposeDigitalSignalProcessor,简称GPDSP),它包含CPU核单元和DSP核单元,CPU核单元主要用于负责包括存储管理、文件控制、进程调度、中断管理任务在内的通用事务管理以及提供对通用操作系统的完整支持;DSP核单元包含若干强大计算能力的64位向量处理阵列,用于支持高密集运算任务的解算。传统的面向Cache结构的分块矩阵乘法方法不适合GPDSP的非Cache的向量阵列存储访存模式和向量处理阵列并发向量处理的体系结构特征,难以发挥GPDSP向量计算优势。
技术实现思路
本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种原理简单、操作方便、能充分利用GPDSP的CPU核通用计算和DSP核向量处理阵列强大并行计算、高带宽向量数据加载能力,显著提高DSP核计算访存比的面向GPDSP的大规模分块矩阵乘法计算的方法。为解决上述技术问题,本专利技术采用以下技术方案:一种面向GPDSP的大规模矩阵乘法计算的方法,其步骤为:S1:由GPDSP的CPU核在片外DDR存储器为矩阵A、B和C分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据;S2:根据GPDSP的体系结构特征确定最佳的分块矩阵乘法所需要的分块大小MB、KB和NB,即令矩阵的M、K、N三个维数对应的分块大小分别标记为MB、KB、NB;S3:由GPDSP的CPU核根据步骤S2确定的MB、KB、NB值将矩阵A、B和C进行逻辑分块,令mi=INT(M/MB),ki=INT(K/KB),ni=INT(N/NB),其中INT()表示对括号中的值向上取整;矩阵A的子块标记为Aij(1≤i≤mi,1≤j≤ki),矩阵B的子块标记为Bjk(1≤j≤ki,1≤k≤ni),矩阵C的子块标记为Cik(1≤i≤mi,1≤k≤ni);S4:由GPDSP的CPU核调度DSP核计算子块矩阵的乘加计算:Cik+=Aij*Bjk(1≤i≤mi,1≤j≤ki,1≤k≤ni);S5:计算完毕。作为本专利技术的进一步改进:所述步骤S2中NB的确定方法是NB=p*q。作为本专利技术的进一步改进:所述步骤S2中MB、KB的确定方法为:设条件(1)MB*KB*w≤s3,(2)(MB*KB*w+KB*NB*w)≤s1,按照满足条件(1)(2)取得的最大MB、KB值为所需要的MB、KB值。作为本专利技术的进一步改进:所述步骤S4的具体流程为:S4.1:由GPDSP的CPU核通过DMA将矩阵A的子块Aij(1≤i≤mi,1≤j≤ki)加载至片内共享存储阵列中,i,j的初始值均为1;S4.2:由GPDSP的CPU核调度各个DSP核分别计算子块Aij与矩阵B的子块Bjk(1≤k≤ni)的矩阵乘加计算Cik+=Aij*Bjk(1≤k≤ni);S4.3:由GPDSP的CPU核判断DSP核是否完成子块Aij与矩阵B的所有子块Bjk(1≤k≤ni)的矩阵乘加计算Cik+=Aij*Bjk(1≤k≤ni),若是转步骤S4.4,若不是则转步骤S4.2,直至上述DSP核计算任务全部完成;S4.4:判断j是否等于ki,若不是令j=j+1,转步骤S4.1;若是,则继续判断i是否等于mi,若不是令i=i+1,j=1,转步骤S4.1;若是,转步骤S5;作为本专利技术的进一步改进:所述步骤S4.2中共有k=ni次子块矩阵的乘加计算,由CPU核调度各个DSP核依次计算各子块矩阵的乘加计算,每个DSP核接收到计算任务后按照CPU分配的矩阵B和C的逻辑分块由各自核的DMA加载至片内向量存储数据阵列,完成子块矩阵的乘加计算后通知CPU核;CPU核根据子块计算的完成情况派发新的子块矩阵乘加计算任务,直至上述k=ni次子块矩阵的乘加计算全部完成。作为本专利技术的进一步改进:所述步骤S4.2中的GPDSP的DSP核计算子块Aij与矩阵B的子块Bjk(1≤k≤ni)的矩阵乘加计算Cik+=Aij*Bjk(1≤k≤ni)包括如下流程:S4.2.1:由GPDSP的DSP核将片内标量存储器L1D的存储访问模式配置为SRAM访问模式;S4.2.2:将子块Aij根据片内标量存储器的容量大小划分为Mb个长度为KB的连续计算子块,并标记为Ax(1≤x≤INT(MB/Mb));上述参数Mb的确定方法是,满足条件:2*Mb*KB*w≤s2取得的最大Mb值为所需要的Mb值;S4.2.3:DSP核通过DMA依次将子块Ax加载至片内标量存储器L1D中,初始x=1,计算子块矩阵乘加:Cxk+=Ax*Bjk(1≤x≤INT(MB/Mb));S4.2.3计算中共有MB/Mb次子块矩阵的乘加计算,DSP核通过各自的DMA分别加载Ax至片内标量存储数据阵列,完成Cxk+=Ax*Bjk单元块的矩阵乘加计算任务,直至上述MB/Mb次子块的矩阵乘加计算全部完成。作为本专利技术的进一步改进:所述步骤S4中包括DSP核在片内标量存储器进一步分块的流程:DSP核将子块Aij根据片内标量存储器的容量大小划分为Mb个长度为KB的连续计算子块,并标记为Ax(1≤x≤INT(MB/Mb));上述参数Mb的确定方法是,满足条件:2*Mb*KB*w≤s2取得的最大Mb值为所需要的Mb值;DSP核通过DMA依次将子块Ax加载至片内标量存储器L1D中,初始x=1,计算子块矩本文档来自技高网
...
面向GPDSP的大规模矩阵乘法计算的方法

【技术保护点】
一种面向GPDSP的大规模矩阵乘法计算的方法,其特征在于,步骤为:S1:由GPDSP的CPU核在片外DDR存储器为矩阵A、B和C分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据;S2:根据GPDSP的体系结构特征确定最佳的分块矩阵乘法所需要的分块大小MB、KB和NB,即令矩阵的M、K、N三个维数对应的分块大小分别标记为MB、KB、NB;S3:由GPDSP的CPU核根据步骤S2确定的MB、KB、NB值将矩阵A、B和C进行逻辑分块,令mi=INT(M/MB),ki=INT(K/KB),ni=INT(N/NB),其中INT()表示对括号中的值向上取整;矩阵A的子块标记为Aij(1≤i≤mi,1≤j≤ki),矩阵B的子块标记为Bjk(1≤j≤ki,1≤k≤ni),矩阵C的子块标记为Cik(1≤i≤mi,1≤k≤ni);S4:由GPDSP的CPU核调度DSP核计算子块矩阵的乘加计算:Cik+=Aij*Bjk(1≤i≤mi,1≤j≤ki,1≤k≤ni);S5:计算完毕。

【技术特征摘要】
1.一种面向GPDSP的大规模矩阵乘法计算的方法,其特征在于,步骤为:S1:由GPDSP的CPU核在片外DDR存储器为矩阵A、B和C分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据;S2:根据GPDSP的体系结构特征确定最佳的分块矩阵乘法所需要的分块大小MB、KB和NB,即令矩阵的M、K、N三个维数对应的分块大小分别标记为MB、KB、NB;S3:由GPDSP的CPU核根据步骤S2确定的MB、KB、NB值将矩阵A、B和C进行逻辑分块,令mi=INT(M/MB),ki=INT(K/KB),ni=INT(N/NB),其中INT()表示对括号中的值向上取整;矩阵A的子块标记为Aij,1≤i≤mi,1≤j≤ki,矩阵B的子块标记为Bjk,1≤j≤ki,1≤k≤ni,矩阵C的子块标记为Cik,1≤i≤mi,1≤k≤ni;S4:由GPDSP的CPU核调度DSP核计算子块矩阵的乘加计算:Cik+=Aij*Bjk,1≤i≤mi,1≤j≤ki,1≤k≤ni;S5:计算完毕;所述步骤S2中NB的确定方法是NB=p*q;其中,p为DSP核的向量处理阵列计算单元数量,q为每个计算单元的乘加部件MAC数量;所述步骤S2中MB、KB的确定方法为:设条件(1)MB*KB*w≤s3,(2)(MB*KB*w+KB*NB*w)≤s1,按照满足条件(1)(2)取得的最大MB、KB值为所需要的MB、KB值;其中,DSP核的片内向量阵列存储器容量为s1字节,GPDSP的片内共享存储阵列容量为s3字节,每个矩阵元素的数据为w字节。2.根据权利要求1所述的面向GPDSP的大规模矩阵乘法计算的方法,其特征在于,所述步骤S4的具体流程为:S4.1:由GPDSP的CPU核通过DMA将矩阵A的子块Aij加载至片内共享存储阵列中,1≤i≤mi,1≤j≤ki,i,j的初始值均为1;S4.2:由GPDSP的CPU核调度各个DSP核分别计算子块Aij与矩阵B的子块Bjk的矩阵乘加计算Cik+=Aij*Bjk,1≤k≤ni;S4.3:由GPDSP的CPU核判断DSP核是否完成子块Aij与矩阵B的所有子块Bjk的矩阵乘加计算Cik+=Aij*Bjk,1≤k≤ni,若是转步骤S4.4,若不是则转步骤S4.2,直至上述DSP核计算任务全部完成;S4.4:判断j是否等于ki,若不是令j=j+1,转步骤S4.1;若是,则继续判断i是否等于mi,若不是令i=i+1,j...

【专利技术属性】
技术研发人员:刘仲陈书明万江华陈磊田希彭元喜陈虎扈啸孙永节陈胜刚孙海燕阳柳张雪萌马胜
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

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

1