CN102214160A - 一种基于龙芯3a的单精度矩阵乘法优化方法 - Google Patents

一种基于龙芯3a的单精度矩阵乘法优化方法 Download PDF

Info

Publication number
CN102214160A
CN102214160A CN2011101911338A CN201110191133A CN102214160A CN 102214160 A CN102214160 A CN 102214160A CN 2011101911338 A CN2011101911338 A CN 2011101911338A CN 201110191133 A CN201110191133 A CN 201110191133A CN 102214160 A CN102214160 A CN 102214160A
Authority
CN
China
Prior art keywords
instruction
godson
matrix
address
cache
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
CN2011101911338A
Other languages
English (en)
Other versions
CN102214160B (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.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
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 University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN 201110191133 priority Critical patent/CN102214160B/zh
Publication of CN102214160A publication Critical patent/CN102214160A/zh
Application granted granted Critical
Publication of CN102214160B publication Critical patent/CN102214160B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种基于龙芯3A的单精度矩阵乘法优化方法,特征是先将龙芯3A的两个单精度源矩阵按分别不大于一级缓存一半和不大于二级缓存一半的原则划分为两个子矩阵;在龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码中采用龙芯3A的128位访存指令和并行单精度浮点指令,并采用两倍的运算数据集大小减去运算数据单元大小预取地址计算方式来对数据进行预取,从而使浮点运算部件基本上能够满负荷运转;克服了地址非对齐数据预取无效的问题,使地址非对齐的单精度矩阵乘法执行效率接近地址对齐的单精度矩阵乘法;运算速度比基础线性代数子程序库(GotoBLAS)版本2-1.07平均提高了90%以上。

Description

一种基于龙芯3A的单精度矩阵乘法优化方法
技术领域
本发明属于电数字数据处理技术领域,具体涉及基于龙芯3A的单精度矩阵乘法的优化方法。
背景技术
龙芯3A是中国第一个具有完全自主知识产权的四核中央处理器(CPU)。在高性能计算领域,龙芯3A需要基础线性代数子程序库的支持。龙芯3A上能够使用的较优的基础线性代数子程序库是美国德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)。德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)通过使用矩阵分块、数据拷贝、循环展开和指令调度等优化技术,实现了高效的单精度矩阵乘法。龙芯3A拥有128位访存、并行单精度浮点等特有指令,但由于德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)并不是针对龙芯3A的特点所做的专门优化,因此它所采用的单精度矩阵乘法在龙芯3A平台上执行的性能并不高。
发明内容
本发明提出一种基于龙芯3A的单精度矩阵乘法优化方法,以克服现有技术的上述缺陷,达到在龙芯3A平台上单精度矩阵乘法的高效实现。
本发明基于龙芯3A的单精度矩阵乘法优化方法,先将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分成为两个子矩阵,然后将分块形成的子矩阵块拷贝到一个连续的地址空间中,再通过使用龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码来完成子矩阵与子矩阵的乘法;其特征在于:所述将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分采取分别不大于一级缓存一半和不大于二级缓存一半的原则划分成为两个子矩阵;在所述龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码中采用龙芯3A的128位访存指令和并行单精度浮点指令,并采用两倍的运算数据集大小减去运算数据单元大小预取地址计算方式来对数据进行预取;
具体操作步骤如下:
第一步、数据分块并拷贝步骤
先将龙芯3A的两个单精度源矩阵分块,使第一个源矩阵的子块大小不大于龙芯3A一级缓存容量的一半,第二个源矩阵的子块大小为不大于龙芯3A二级缓存容量的一半,然后将两个子块分别拷贝到互相连续的两个地址空间中;
第二步、核心计算代码编写步骤
通过使用128位访存指令,每次将4个单精度浮点数取到2个64位的浮点寄存器中;
使用低高位合并指令plu.ps将存于寄存器高32位的单精度浮点数提取出来,使用并行单精度浮点乘加指令madd.ps实现并行单精度浮点乘加运算;
循环展开度设为4*4,即每次从两个子块中各取4个单精度浮点数,两两分别相乘后得到16个结果累加到目标矩阵中;指令调度中,由4条指令组成一个小组,每个小组包含浮点操作指令2条,取数指令和空操作指令各一条或空操作指令2条,由5个小组组成一个大组,浮点计算需要用的操作数全部提前2个大组通过128位访存指令和低高位合并指令放到指定寄存器中;
在核心计算代码的最开头,对结果矩阵和第二个源矩阵子块进行预取,其中结果矩阵的预取地址设为两倍的运算数据集大小减去运算数据单元大小,第二个源矩阵子块的预取地址设为运算数据集大小,预取指令的频率等于高速缓冲存储器(Cache)行的大小除以计算数据集的大小。
本发明基于龙芯3A的单精度矩阵乘法优化方法还可以将所述数据分块并拷贝步骤中子块拷贝到连续空间的方法进一步改进为将两个源矩阵数据分别以龙芯3A一级缓存容量的1/4为间隔拷贝到目标地址空间中,使两个子块的拷贝目标地址所对应的一级缓存地址不在同一组。
与现有技术相比较,本发明提出的这种基于龙芯3A的单精度矩阵乘法优化方法,通过使用128位访存和并行单精度浮点等龙芯3A的特有指令,使取数和浮点部件运算效率有所提高;由于本发明根据龙芯3A指令流水特点,在核心计算代码中巧妙地排列指令顺序,使浮点运算部件基本上能够满负荷运转;由于本发明改进了预取地址计算方式,克服了地址非对齐数据预取无效的问题,从而使地址非对齐的单精度矩阵乘法执行效率达到接近于地址对齐的单精度矩阵乘法。采用本发明方法优化后的单精度矩阵乘法的运算速度比德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)版本2-1.07中的实现平均提高了90%以上。
具体实施方式
实施例1:
本发明基于龙芯3A的单精度矩阵乘法优化方法,先将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分成为两个子矩阵采取分别不大于一级缓存一半和不大于二级缓存一半的原则划分成为两个子矩阵;在龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码中采用龙芯3A的128位访存指令和并行单精度浮点指令,并采用两倍的运算数据集大小减去运算数据单元大小预取地址计算方式来对数据进行预取。
本实施例中采取了先将龙芯3A的两个单精度源矩阵划分成分块大小分别为64*128和128*1024的两个子矩阵,然后将划分得到的子矩阵块拷贝到一个连续的地址空间中,再通过针对龙芯3A平台特性编写的核心计算代码来完成子矩阵与子矩阵的乘法。
具体步骤列举如下:
第一步、数据分块并拷贝步骤
先将龙芯3A的两个单精度源矩阵分块:使第一个源矩阵的子块大小不大于龙芯3A一级缓存容量的一半,本实施例中第一个源矩阵的子块大小取64*128;第二个源矩阵的子块大小不大于二级缓存一半,本实施例中第二个源矩阵的子块大小取128*1024;然后将两个子块拷贝到连续的空间中。
为减少缓存冲突,还可以采取将两个源矩阵数据分别以龙芯3A一级缓存容量的1/4为间隔拷贝到目标地址空间中,使两个子块的拷贝目标地址所对应的一级缓存地址不在同一组。
为了平衡处理器运算速度和主存储器访问速度之间的差异,基于程序的局部性原理,现有的处理器与存储器之间都有高速缓冲存储器(Cache)。当中央处理器(CPU)访问存储器时,如果需要的数据高速缓冲存储器(Cache)命中,此时访存能很快完成;如果需要的数据在高速缓冲存储器(Cache)不命中,中央处理器(CPU)需要从下一级存储器读取数据,这会带来很大的延时,严重影响程序性能。数据分块技术就是通过重新组织数据的访问顺序,减小高速缓冲存储器(Cache)的失效率来提高程序性能的方法。
龙芯3A的高速缓冲存储器(Cache)分为两级,一级高速缓冲存储器(Cache)的延迟为4拍,二级高速缓冲存储器(Cache)的延迟为15~25拍。由于受到寄存器数量的限制,要想减少流水线的中断和停顿,单精度矩阵乘法的核心计算部分的数据采取从一级高速缓冲存储器(Cache)中获得的方法。为了使核心计算部分的数据驻留在一级高速缓冲存储器(Cache),子数据块大小不能超过一级高速缓冲存储器(Cache)的大小。单精度矩阵乘法拥有局部性原理的是矩阵A和矩阵B的数据,矩阵C的数据是流式的,因此矩阵C的数据没有必要驻留在一级高速缓冲存储器(Cache)中。龙芯3A的一级高速缓冲存储器(Cache)总共大小为64KB,第一个源矩阵的子块应尽量大但不超过一级高速缓冲存储器(Cache)一半,剩下的用于第二个源矩阵子块的部分数据存储,这样可以减少数据拷贝的代价,同时可以避过两个源矩阵子块过多的冲突失效。龙芯3A平均每个处理器核分到一块二级高速缓冲存储器(Cache),大小为1MB,因此将一块二级高速缓冲存储器(Cache)的5 12KB用于B矩阵子块的存储。龙芯3A的高速缓冲存储器(Cache)替换策略是随机替换,为了减少A矩阵子块和B矩阵子块的冲突失效,本发明中还提出了可采取地址交错的方式存储矩阵A和矩阵B,即将A矩阵子块和B矩阵子块交替存储,从而可保证A矩阵子块和B矩阵子块不在一级高速缓冲存储器(Cache)的同一组当中。
第二步、核心计算代码编写步骤
通过使用128位访存指令,每次将4个单精度浮点数取到2个64位的浮点寄存器中。
一般取数指令一次只能取64位的数据,然而龙芯3A拥有128位访存指令,因此一次可以取到128位的数据,即4个单精度浮点数。这样不但可以减少指令数量,还可以加快访存速度。
使用低高位合并指令plu.ps将存于寄存器高32位的单精度浮点数提取出来,使用并行单精度浮点乘加指令madd.ps实现并行单精度浮点乘加运算。
一个单精度浮点数为4个字节,即32位,而龙芯3A的浮点寄存器大小为64位,因此普通的单精度矩阵乘法实现中,每次运算只用到了64位寄存器的一半。龙芯3A浮点协处理器支持并行单精度(PS)浮点运算,因此本发明使用这些并行单精度浮点运算指令来充分使用64位的寄存器,把单精度矩阵乘法的理论峰值提高一倍。
本实施例中实现并行单精度(PS)浮点加速的方法是:第一步使用普通取数指令将结果矩阵的数据取到寄存器中,并使用低位合并指令pll.ps将两个32位单精度数据合并到一个64位的寄存器中;第二步使用128位访存指令将矩阵A和B的数据取到寄存器中,并使用低高位合并指令plu.ps将存于寄存器高32位的单精度浮点数提取出来;第三步是使用并行单精度浮点乘加指令madd.ps实现并行单精度浮点乘加运算,同时将下一组要使用的矩阵A和B的数据取到寄存器中,并使用低高位合并指令plu.ps将存于寄存器高32位的单精度浮点数提取出来;第四步是使用低高位合并指令plu.ps将存于寄存器高32位的单精度浮点数,即计算结果提取出来,使用普通存数指令写回结果。其中第三步是反复进行的,根据被计算矩阵的大小来确定循环的次数。
循环展开中,因浮点寄存器数量有限,故选择循环展开度为4*4,即每次从两个子块中各取4个单精度浮点数,两两分别相乘后得到16个结果累加到目标矩阵中,这样的展开粒度不仅满足了浮点寄存器数量的限制、减少了访存次数,还提高了指令调度的灵活性。
指令调度中,由4条指令组成一个小组,每个小组包含浮点操作指令2条,取数指令和空操作指令各一条或空操作指令2条;再由每5个小组组成一个大组,为了保证浮点计算单元需要的数据能够及时供应上,浮点计算需要用的操作数要提前通过128位访存指令和低高位合并指令放到指定寄存器中,本实施例中采用了提前2个大组进行取数的方式。
这里的浮点操作指令即为并行单精度浮点乘加指令madd.ps或低高位合并指令plu.ps,取数指令即为128位访存指令gslqc1。128位访存指令取的数据为本大组后第2个大组需要使用的数据,并行单精度浮点乘加指令使用的数据为本大组之前第2个大组取得的数据。当每个小组不满4条指令时就用空操作来补充,其目的是保证每拍发射的四条指令不会发生功能部件的竞争。第1、2、4和5小组都是包括1条128位访存指令、1条空操作指令和2条并行单精度浮点乘加指令;第3个组包括2条空操作指令和2条低高位合并指令,用于将取到的数据组合成计算所需的形式,就是将源寄存器的高32位复制到目标寄存器的高32位和低32位中。各小组代码具体列举如下:
gslqc1 X2,X0,4(a_offset)
nop
madd.ps C00,C00,NX0,NY0
madd.ps C20,C20,NX2,NY0
gslqc1 Y2,Y0,4(b_offset)
nop
madd.ps C02,C02,NX0,NY2
madd.ps C22,C22,NX2,NY2
nop
nop
plu.ps NB1,NB0,NB0
plu.ps NB3,NB2,NB2
nop
nop
madd.ps C01,C01,NX0,NY1
madd.ps C21,C21,NX2,NY1
nop
nop
madd.ps C03,C03,NX0,NY3
madd.ps C23,C23,NX2,NY3
在核心计算代码的最开头,对结果矩阵和第二个源矩阵子块进行预取,其中结果矩阵的预取地址设为两倍的运算数据集大小减去运算数据单元大小,第二个源矩阵子块的预取地址设为运算数据集大小。
预取是一种有效的隐藏访存延迟的技术,它利用内存的空闲带宽,通过显式的预取指令,使数据在实际使用之前从内存移到高速缓冲存储器(Cache)中,将访存的失效开销与计算时间重叠,以减小高速缓冲存储器(Cache)失效所带来的性能损失。
数据预取的一个关键问题是预取地址的计算,错误的预取地址不但不能隐藏访存开销,还会因为指令数量和无效访存的增加而降低程序性能。矩阵乘法属于比较规整的运算,预取地址很容易计算,常用预取地址计算方法是用运算数据集首地址加上运算数据集大小,第二个源矩阵子块的预取就可以采用这种方式。这里所说的运算数据集指的是一个将被取到寄存器进行运算的不超过高速缓冲存储器(Cache)行大小的连续数据集,但由于这些数据并不一定处于同一个高速缓冲存储器(Cache)行中一旦被预取的数据集不在一个高速缓冲存储器(Cache)行中,就有可能出现无效预取。
设运算数据集的首地址距离前一个高速缓冲存储器(Cache)行边界12字节,预取数据集的首地址距离运算数据集的首地址A有16字节,每个数据集有4个数据,每个数据单元4个字节。运算数据集在做运算的过程中,会发送预取指令来预取预取数据集首地址所在高速缓冲存储器(Cache)行的所有数据。预取数据集首地址在运算数据集所在的高速缓冲存储器(Cache)行中,也就是说在运算数据集取数的过程将会把预取数据集首地址所在的高速缓冲存储器(Cache)行取到高速缓冲存储器(Cache)中,即预取数据集首地址的数据预取将是无效预取,对程序性能的提升没有任何帮助。
为了避免非高速缓冲存储器(Cache)行对齐数据的无效预取,本发明中提出了新的预取地址计算方法公式:
PA=CACDS+2*sizeof(CDS)-sizeof(DU)    (1)
即预取地址PA等于运算数据集的首地址CACDS加上两倍的运算数据集CDS大小,再减去一个数据单元DU大小。一个单精度浮点数的大小为4字节,单精度矩阵乘法的预取数据集和运算数据集的大小都是4个单精度浮点数,因此预取地址为运算数据集的首地址加上28字节。
当运算数据集小于高速缓冲存储器(Cache)大小时,即使使用如上的预取地址计算方式,还是会产生冗余的预取指令,因此可以调整预取指令的频率,没有必要每个运算数据集都对应一个预取指令。由此,本发明给出一种预取指令频率的计算方法公式:
PF=sizeof(CL)/sizeof(CDS)    (2)
即预取指令的频率PF等于高速缓冲存储器(Cache)行CL的大小除以计算数据集CDS的大小。由于在龙芯3A体系结构下一次可以预取32字节,单精度矩阵乘法的运算数据集为16字节,因此预取频率为0.5。
性能及效果分析
综合使用本发明的上述优化技术以后,在龙芯3A体系结构下,中央处理器(CPU)主频为825M,内存主频为200M,测试规模为100到2000之间,采用本发明方法优化后的单精度矩阵乘法的运算速度比德克萨斯大学奥斯汀分校超级计算中心高性能计算组开发的基础线性代数子程序库(GotoBLAS)版本2-1.07中的实现平均提高了90%以上。

Claims (2)

1.一种基于龙芯3A的单精度矩阵乘法优化方法,先将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分成为两个子矩阵,然后将分块形成的子矩阵块拷贝到一个连续的地址空间中,再通过使用龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码来完成子矩阵与子矩阵的乘法;其特征在于:所述将龙芯3A的两个单精度源矩阵按分块大小分别不大于二级缓存的原则划分采取分别不大于一级缓存一半和不大于二级缓存一半的原则划分成为两个子矩阵;在所述龙芯3A的32位访存指令、单精度浮点乘加指令和预取指令的矩阵乘法核心计算代码中采用龙芯3A的128位访存指令和并行单精度浮点指令,并采用两倍的运算数据集大小减去运算数据单元大小预取地址计算方式来对数据进行预取;
具体操作步骤如下:
第一步、数据分块并拷贝步骤
先将龙芯3A的两个单精度源矩阵分块,使第一个源矩阵的子块大小不大于龙芯3A一级缓存容量的一半,第二个源矩阵的子块大小为不大于龙芯3A二级缓存容量的一半,然后将两个子块分别拷贝到连续的两个地址空间中;
第二步、核心计算代码编写步骤
通过使用128位访存指令,每次将4个单精度浮点数取到2个64位的浮点寄存器中;
使用低高位合并指令将存于寄存器高32位的单精度浮点数提取出来,使用并行单精度浮点乘加指令实现并行单精度浮点乘加运算;
循环展开度设为4*4,即每次从两个子块中各取4个单精度浮点数,两两分别相乘后得到16个结果累加到目标矩阵中;指令调度中,由4条指令组成一个小组,每个小组包含浮点操作指令2条,取数指令和空操作指令各一条或空操作指令2条,由5个小组组成一个大组,浮点计算需要用的操作数全部提前2个大组通过128位访存指令和低高位合并指令放到指定寄存器中;
在核心计算代码的最开头,对结果矩阵和第二个源矩阵子块进行预取,其中结果矩阵的预取地址设为两倍的运算数据集大小减去运算数据单元大小,第二个源矩阵子块的预取地址设为运算数据集大小,预取指令的频率等于高速缓冲存储器行的大小除以计算数据集的大小。
2.如权利要求1所述基于龙芯3A的单精度矩阵乘法优化方法,特征在于所述数据分块并拷贝步骤采取将龙芯3A的两个单精度源矩阵数据分别以龙芯3A一级缓存容量的1/4为间隔拷贝到目标地址空间中,使两个子块的拷贝目标地址所对应的一级缓存地址不在同一组。
CN 201110191133 2011-07-08 2011-07-08 一种基于龙芯3a的单精度矩阵乘法优化方法 Expired - Fee Related CN102214160B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110191133 CN102214160B (zh) 2011-07-08 2011-07-08 一种基于龙芯3a的单精度矩阵乘法优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110191133 CN102214160B (zh) 2011-07-08 2011-07-08 一种基于龙芯3a的单精度矩阵乘法优化方法

Publications (2)

Publication Number Publication Date
CN102214160A true CN102214160A (zh) 2011-10-12
CN102214160B CN102214160B (zh) 2013-04-17

Family

ID=44745475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110191133 Expired - Fee Related CN102214160B (zh) 2011-07-08 2011-07-08 一种基于龙芯3a的单精度矩阵乘法优化方法

Country Status (1)

Country Link
CN (1) CN102214160B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722472A (zh) * 2012-05-28 2012-10-10 中国科学技术大学 一种复数矩阵的优化方法
CN102750150A (zh) * 2012-06-14 2012-10-24 中国科学院软件研究所 基于x86架构的稠密矩阵乘法汇编代码自动生成方法
CN103294648A (zh) * 2013-05-08 2013-09-11 中国人民解放军国防科学技术大学 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法
CN103455518A (zh) * 2012-06-04 2013-12-18 中兴通讯股份有限公司 一种数据处理方法及装置
CN103530276A (zh) * 2013-09-25 2014-01-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法
CN103533046A (zh) * 2013-10-12 2014-01-22 苏州大学 公开可验的线性代数委托计算***
CN103678255A (zh) * 2013-12-16 2014-03-26 合肥优软信息技术有限公司 一种基于龙芯3号处理器的fft高效并行实现优化方法
CN103902506A (zh) * 2014-04-16 2014-07-02 中国科学技术大学先进技术研究院 一种基于龙芯3b的fftw3优化方法
WO2017181419A1 (zh) * 2016-04-22 2017-10-26 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107305538A (zh) * 2016-04-22 2017-10-31 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
WO2017185389A1 (zh) * 2016-04-26 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN110083390A (zh) * 2017-08-31 2019-08-02 北京中科寒武纪科技有限公司 一种gemv运算运算方法及装置
CN110147248A (zh) * 2019-04-19 2019-08-20 中国科学院计算技术研究所 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和***
CN111291320A (zh) * 2020-01-16 2020-06-16 西安电子科技大学 基于hxdsp芯片的双精度浮点复数矩阵运算优化方法
CN112947894A (zh) * 2017-04-28 2021-06-11 英特尔公司 用来执行用于机器学习的浮点和整数操作的指令和逻辑
CN113778906A (zh) * 2021-07-30 2021-12-10 成都佰维存储科技有限公司 请求读取方法、装置、可读存储介质及电子设备
CN113987414A (zh) * 2021-11-03 2022-01-28 中国人民解放军国防科技大学 基于ARMv8多核处理器的小型和不规则矩阵乘优化方法
WO2022228222A1 (zh) * 2021-04-25 2022-11-03 阿里巴巴(中国)有限公司 数据处理方法以及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071405A1 (en) * 2003-09-29 2005-03-31 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using level 3 prefetching for kernel routines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071405A1 (en) * 2003-09-29 2005-03-31 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using level 3 prefetching for kernel routines

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李毅等: "多核龙芯3A上二级BLAS库的优化", 《计算机***应用》, vol. 20, no. 1, 31 January 2011 (2011-01-31), pages 163 - 167 *
顾乃杰等: "基于龙芯2F体系结构的BLAS库优化", 《中国科学技术大学学报》, vol. 38, no. 7, 31 July 2008 (2008-07-31), pages 854 - 859 *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722472B (zh) * 2012-05-28 2015-04-08 中国科学技术大学 一种复数矩阵的优化方法
CN102722472A (zh) * 2012-05-28 2012-10-10 中国科学技术大学 一种复数矩阵的优化方法
CN103455518B (zh) * 2012-06-04 2018-01-02 中兴通讯股份有限公司 一种数据处理方法及装置
CN103455518A (zh) * 2012-06-04 2013-12-18 中兴通讯股份有限公司 一种数据处理方法及装置
CN102750150B (zh) * 2012-06-14 2015-05-13 中国科学院软件研究所 基于x86架构的稠密矩阵乘法汇编代码自动生成方法
CN102750150A (zh) * 2012-06-14 2012-10-24 中国科学院软件研究所 基于x86架构的稠密矩阵乘法汇编代码自动生成方法
CN103294648A (zh) * 2013-05-08 2013-09-11 中国人民解放军国防科学技术大学 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法
CN103294648B (zh) * 2013-05-08 2016-06-01 中国人民解放军国防科学技术大学 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法
CN103530276A (zh) * 2013-09-25 2014-01-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法
CN103530276B (zh) * 2013-09-25 2016-06-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法
CN103533046A (zh) * 2013-10-12 2014-01-22 苏州大学 公开可验的线性代数委托计算***
CN103533046B (zh) * 2013-10-12 2016-10-26 苏州大学 公开可验的线性代数委托计算***
CN103678255A (zh) * 2013-12-16 2014-03-26 合肥优软信息技术有限公司 一种基于龙芯3号处理器的fft高效并行实现优化方法
CN103902506A (zh) * 2014-04-16 2014-07-02 中国科学技术大学先进技术研究院 一种基于龙芯3b的fftw3优化方法
CN103902506B (zh) * 2014-04-16 2017-02-15 中国科学技术大学先进技术研究院 一种基于龙芯3b的fftw3优化方法
WO2017181419A1 (zh) * 2016-04-22 2017-10-26 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107305538A (zh) * 2016-04-22 2017-10-31 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107305538B (zh) * 2016-04-22 2020-07-31 中科寒武纪科技股份有限公司 一种子矩阵运算装置及方法
WO2017185389A1 (zh) * 2016-04-26 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN112947894A (zh) * 2017-04-28 2021-06-11 英特尔公司 用来执行用于机器学习的浮点和整数操作的指令和逻辑
CN110245751B (zh) * 2017-08-31 2020-10-09 中科寒武纪科技股份有限公司 一种gemm运算方法及装置
CN110083390A (zh) * 2017-08-31 2019-08-02 北京中科寒武纪科技有限公司 一种gemv运算运算方法及装置
CN110245751A (zh) * 2017-08-31 2019-09-17 北京中科寒武纪科技有限公司 一种gemm运算运算方法及装置
CN110147248A (zh) * 2019-04-19 2019-08-20 中国科学院计算技术研究所 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和***
CN111291320A (zh) * 2020-01-16 2020-06-16 西安电子科技大学 基于hxdsp芯片的双精度浮点复数矩阵运算优化方法
CN111291320B (zh) * 2020-01-16 2023-12-15 西安电子科技大学 基于hxdsp芯片的双精度浮点复数矩阵运算优化方法
WO2022228222A1 (zh) * 2021-04-25 2022-11-03 阿里巴巴(中国)有限公司 数据处理方法以及装置
CN113778906A (zh) * 2021-07-30 2021-12-10 成都佰维存储科技有限公司 请求读取方法、装置、可读存储介质及电子设备
CN113778906B (zh) * 2021-07-30 2023-11-21 成都佰维存储科技有限公司 请求读取方法、装置、可读存储介质及电子设备
CN113987414A (zh) * 2021-11-03 2022-01-28 中国人民解放军国防科技大学 基于ARMv8多核处理器的小型和不规则矩阵乘优化方法

Also Published As

Publication number Publication date
CN102214160B (zh) 2013-04-17

Similar Documents

Publication Publication Date Title
CN102214160B (zh) 一种基于龙芯3a的单精度矩阵乘法优化方法
Mutlu et al. Processing data where it makes sense: Enabling in-memory computation
Lee et al. Warped-compression: Enabling power efficient GPUs through register compression
Pichai et al. Architectural support for address translation on gpus: Designing memory management units for cpu/gpus with unified address spaces
CN102750133B (zh) 支持simd的32位三发射的数字信号处理器
Green et al. GPU merge path: a GPU merging algorithm
CN105051680B (zh) 用于在处理器内部的硬件并行执行道上处理指令的处理器及方法
Doweck White paper inside intel® core™ microarchitecture and smart memory access
CN109997109A (zh) 具有提取提前滞后的流引擎
CN103176914B (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
Peng et al. High-order stencil computations on multicore clusters
CN102722472B (zh) 一种复数矩阵的优化方法
Hadade et al. Software prefetching for unstructured mesh applications
CN113987414B (zh) 基于ARMv8多核处理器的小型和不规则矩阵乘优化方法
Wen et al. PRAM-on-chip: first commitment to silicon
Dursun et al. In-Core Optimization of High-Order Stencil Computations.
Jain et al. Performance assessment of emerging memories through FPGA emulation
Ungethüm et al. Overview on hardware optimizations for database engines
Wang et al. Understanding and Optimizing Conjunctive Predicates Under Memory-Efficient Storage Layouts
Pavón et al. VAQUERO: A Scratchpad-based Vector Accelerator for Query Processing
Zhang et al. Improving the Performance of Lattice Boltzmann Method with Pipelined Algorithm on A Heterogeneous Multi-zone Processor
Niu et al. FlashWalker: An in-storage accelerator for graph random walks
Nallamuthu et al. Energy efficient biomolecular simulations with FPGA-based reconfigurable computing
Atoofian Many-thread aware compression in GPGPUs
Wu et al. Gpu-accelerated predicate evaluation on column store

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
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: 20130417

Termination date: 20210708