CN105808309B - 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 - Google Patents
一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 Download PDFInfo
- Publication number
- CN105808309B CN105808309B CN201610130123.6A CN201610130123A CN105808309B CN 105808309 B CN105808309 B CN 105808309B CN 201610130123 A CN201610130123 A CN 201610130123A CN 105808309 B CN105808309 B CN 105808309B
- Authority
- CN
- China
- Prior art keywords
- platform
- layer functions
- matrix
- performance
- gemm
- 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.)
- Expired - Fee Related
Links
- 238000011773 genetically engineered mouse model Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 title claims abstract description 19
- 239000013598 vector Substances 0.000 claims abstract description 42
- 238000013461 design Methods 0.000 claims abstract description 14
- 238000005192 partition Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 79
- 239000011159 matrix material Substances 0.000 claims description 61
- 239000010410 layer Substances 0.000 claims description 42
- 239000012792 core layer Substances 0.000 claims description 28
- 230000008707 rearrangement Effects 0.000 claims description 18
- 238000007667 floating Methods 0.000 claims description 15
- 230000017105 transposition Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 claims description 3
- 238000009825 accumulation Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 238000006049 ring expansion reaction Methods 0.000 claims 1
- 238000005457 optimization Methods 0.000 abstract description 9
- 230000008859 change Effects 0.000 description 6
- 239000000686 essence Substances 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 2
- 101100150621 Arabidopsis thaliana GEBP gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 210000003484 anatomy Anatomy 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出了一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,针对国产申威SW1600平台,采用“interface接口‑driver驱动‑kernel汇编核心代码”的三层代码设计框架,使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术等与平台架构相关的技术手段,实现汇编级手工优化,解决了编译器针对计算密集型函数GEMM优化不足的问题,大幅提升函数性能,与开源BLAS数学库GotoBLAS相较,平均加速比为4.72,最高加速比为5.61。
Description
技术领域
本发明涉及一种基础线性代数库BLAS(一种最基础的数学库之一,广泛应用于科学工程计算,主要包括向量和矩阵的基本操作)的三级函数一般矩阵乘GEMM的高性能实现方法,通过一系列平台架构相关的优化方法,提升函数性能。
背景技术
BLAS(Basic Linear Algebra Subprograms)是一个线性代数核心子程序的集合,主要包括向量和矩阵的基本操作。它是最基本和最重要的数学库之一,广泛应用于科学工程计算。目前世界上有关矩阵运算的软件几乎都调用BLAS库;重要的稠密线性代数算法软件包(如EISPACK、LINPACK、LAPACK和ScaLAPACK等)的底层都是以BLAS为支撑。BLAS目前已成为线性代数领域的一个标准API库。
BLAS分成三个等级:
1级:进行向量-向量操作;
2级:进行向量-矩阵操作;
3级:进行矩阵-矩阵操作。
BLAS 3级中的矩阵相乘GEMM函数,如公式所示,其中A,B表示矩阵相乘计算的两个因子,C表示累加结果矩阵,α,β为标量因子。
C=αAB+βC(公式1)
针对特定的体系结构进行BLAS库的优化,特别是GEMM函数的优化工作,国内外已有相当多的研究成果,例如Goto等人所提出的矩阵乘法实现算法(Goto K,Geijn RA.Anatomy of high-performance matrix multiplication[J].ACM Transactions onMathematical Software(TOMS),2008,34(3):12.),通过对矩阵A和B进行划分,矩阵乘法细分为一组panel-panel的乘法操作(GEBP),分析矩阵计算三重循环顺序与cache缓存之间的关系模型并提出最优算法。基于该模型的开源高性能BLAS数学库有GotoBLAS与OpenBLAS等。近几年来,针对BLAS的自动调优技术日渐成熟,基于该技术的BLAS数学库ATLAS可以针对通用CPU平台,自动调整矩阵分块、监测cache利用率、调整寄存器使用策略,生成最合适平台架构的代码。
申威SW1600平台是一款由江南计算技术研究所研制的新型国产平台,使用了扩展的ALPHA架构指令集,每个CPU支持乘加指令与256位向量化运算,支持计算指令与访存指令同步发射,具体硬件参数如表1所示。
表1
申威SW1600平台作为国产高性能多核平台,性能指标优异,已被济南超算等国内超算中心使用,受众广泛,有大量的科学计算应用在该平台上执行,提供一套基于该平台的高效的基础线性代数库进行底层支持十分有必要,GEMM函数作为最通用的3级BLAS函数更是非常重要。然而,目前已有的开源BLAS库都没有对申威SW1600平台进行过定制优化,由于申威SW1600使用了扩展的ALPHA指令集,支持256位SIMD向量化与乘加指令,GotoBLAS等开源BLAS库都没有基于该平台涉及运用这些技术,大多数性能不高,需重新设计(在高性能计算领域,开源的GotoBLAS库是业界认可的性能对比标准)。若基于C代码实现BLAS数学库,依赖申威SW1600平台的通用编译器进行优化,则无法充分利用GEMM为计算密集型的特征,优化力度不够,性能远低于手工进行软件流水线设计的汇编代码。
发明内容
本发明解决的问题是:基于目前没有针对申威SW1600平台特定优化过的BLAS数学库,而开源数学库性能直接应用于该平台之上性能不高的情况,本发明提出了一种基于申威SW1600平台的基础线性代数库BLAS的三级函数,一般矩阵乘GEMM的高性能实现方案,该方案合理利用硬件资源,克服计算数据依赖问题,将数据通信隐藏于计算当中,保证计算部件高效运行。应用于该平台时,本发明性能远高于GotoBLAS等开源的BLAS数学库。
本发明实现手工汇编级优化,使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术、矩阵分块与数据重排等与平台架构相关的技术手段,大幅提升函数性能。
本发明的高性能实现方案实现如下:
(1)interface接口层函数:该层为函数接口,负责输入参数检查,主要判断矩阵规模等参数是否合法,当输入参数不合法时返回错误码;判断背景技术一节中公式1中的A、B两个输入矩阵的转置情况,依据不同情况调用对应的driver驱动层函数;
(2)driver驱动层函数:由interface接口层函数调用,并调用下层的kernel汇编核心层函数;该driver驱动层函数负责矩阵数据重排,以适应kernel汇编核心层函数的寄存器分块情况,计算过程包含的N维和M维两重嵌套循环,在N维循环内进行B矩阵重排,在M维循环内进行A矩阵重排,保证kernel汇编核心层函数连续从cache中获取数据,以减少cache不命中的情况,提高性能;
(3)kernel汇编核心层函数:为底层核心层函数,由driver驱动层函数调用,负责实际计算的高性能实现;kernel汇编核心层函数基于申威SW1600的扩展的ALPHA架构指令集,使用256位的SIMD向量化运算与乘加指令提高计算性能;基于该平台的ALPHA架构特征,使用F0至F31共32个浮点向量寄存器,采用寄存器分块策略进行算法设计;利用GEMM的计算密集型特性,手工实现汇编级的循环展开与指令重排,使用计算指令掩盖访存延迟,保证CPU利用率。
256位SIMD向量化运算:一般而言,可以使用C语言的intrinsic函数进行手工向量化,提升性能。但是对于性能要求较高的任务,比如本发明涉及的GEMM函数,intrinsic函数不能胜任,因为intrinsic函数不能控制指令的调度和寄存器分配,我们需要在核心函数中编写向量化的汇编代码。申威SW1600平台提供了256位的SIMD向量扩展支持。以实数双精为例,每个元素为8字节,进行向量化扩展后,配合长度为256位的浮点向量化寄存器,每次顺序读取4个A矩阵元素,同时对4个C累加结果矩阵的元素进行运算,理论上性能可提升4倍。
乘加指令:申威SW1600平台提供SIMD乘加指令,每次计算指令可以实现加法和乘法在一个指令周期完成,理论上可以实现2倍加速,且可以减少指令数,减少内层循环中间变量个数,降低对寄存器资源的消耗,利于软件流水线的排布。
寄存器分块:寄存器分块的目的是合理安排核心函数中矩阵分块的大小,在不超过硬件限制的情况下尽可能充分利用寄存器等硬件资源,实现性能优化。寄存器的数量决定了寄存器分块的大小。申威SW1600是扩展的ALPHA架构平台,每个CPU拥有F0到F31,共32个向量化浮点寄存器,本发明选择4*4的寄存器分块。在此分块下,每轮使用4个浮点向量寄存器,取4个256位向量长度的A矩阵元素,共16个A矩阵元素;使用4个浮点向量寄存器,每个寄存器取1个B阵元素并扩展成4份,则4个寄存器处理4个B矩阵元素,计算16个256位向量长度的C矩阵元素,即64个C矩阵双精元素的部分解,由此共使用了24个浮点向量寄存器。此外,F31寄存器存0值,剩余7个逻辑寄存器存储中间变量或用作循环变量,寄存器资源使用合理且高效。
循环展开与软件流水线:循环展开是编译器经常使用的优化策略之一,循环展开后,最内层循环的单次循环内指令数增加,对硬件而言,有更多的指令可用于乱序发射与乱序执行,硬件保留站和流水线等硬件资源利用更充分;对软件而言,更多的指令可以用于指令重排,有助于避免“访存-计算”的数据依赖关系。
本发明与现有技术相比的有益效果在于:本发明采用“interface接口层函数-driver驱动层函数-kernel汇编核心层函数”的三层代码设计框架,使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术、矩阵分块与数据重排等与平台架构相关的技术手段,实现汇编级手工优化,解决了编译器针对计算密集型函数GEMM优化不足的问题,大幅提升函数性能,与开源BLAS数学库GotoBLAS相较,平均加速比为4.72,最高加速比为5.61。
附图说明
图1为本发明实现流程图:描述了算法流程及“interface接口层函数-driver驱动层函数-kernel汇编核心层函数”的三层代码设计框架,在kernel汇编核心层函数中使用了寄存器分块、SIMD向量以及循环展开等平台相关的优化技术;
图2为A矩阵数据重排示意图:描述A矩阵为非转置矩阵时,数据重排的情况;
图3为B矩阵数据重排示意图:描述B矩阵为非转置矩阵时,数据重排的情况;
图4为申威SW1600GEMM与GotoBLAS GEMM性能比对图。
具体实施方式
本发明实施例基于国产申威SW1600平台的GEMM高性能实现。由江南计算技术研究所设计研制的申威SW1600平台,基于该平台的一个CPU进行算法设计,函数设计采用“interface接口层函数-driver驱动层函数-kernel汇编核心层函数”的三层代码设计框架,如图1所示,其调用关系为interface-driver-kernel,其中driver层多次调用kernel层函数。三层代码设计框架具体实施方式为:
(1)interface接口层函数:该层为函数接口,负责输入参数检查,主要判断矩阵规模等参数是否合法,当输入参数不合法时返回错误码;判断背景技术一节中公式1中的A、B两个输入矩阵的转置情况,依据不同情况调用对应的driver驱动层函数。
(2)driver驱动层函数:由interface接口层函数调用,并调用下层的kernel汇编核心层函数;该driver驱动层函数负责矩阵数据重排,以适应kernel汇编核心层函数的寄存器分块情况,计算过程包含的N维和M维两重嵌套循环,在N维循环内进行B矩阵重排,在M维循环内进行A矩阵重排,保证kernel汇编核心层函数连续从cache中获取数据,考虑到kernel汇编核心层函数最内层为K层循环,应使得A矩阵与B矩阵数据都沿K维连续,由于kernel汇编核心层函数的设计方案采用了4*4寄存器分块策略,A矩阵数据重排情况如图2所示、B矩阵数据重排情况如图3所示。
(3)kernel汇编核心层函数:为底层核心层函数,由driver驱动层函数调用,负责实际计算的高性能实现;kernel汇编核心层函数基于申威SW1600的扩展ALPHA架构指令集,使用256位的SIMD向量化运算与乘加指令提高计算性能;基于该平台的ALPHA架构特征,使用F0至F31共32个浮点向量寄存器,采用寄存器分块策略进行算法设计;利用GEMM的计算密集型特性,手工实现汇编级的循环展开与指令重排,使用计算指令掩盖访存延迟,保证CPU利用率。
256位SIMD向量化运算:一般而言,可以使用C语言的intrinsic函数进行手工向量化,提升性能。但是对于性能要求较高的任务,比如本发明涉及的GEMM函数,intrinsic函数不能胜任,因为intrinsic函数不能控制指令的调度和寄存器分配,我们需要在核心函数中编写向量化的汇编代码。申威SW1600平台提供了256位的SIMD向量扩展支持。以实数双精为例,每个元素为8字节,进行向量化扩展后,配合长度为256位的浮点向量化寄存器,每次顺序读取4个A矩阵元素,同时对4个C矩阵元素进行运算,理论上性能可提升4倍。
乘加指令:申威SW1600平台提供SIMD乘加指令,每次计算指令可以实现加法和乘法在一个指令周期完成,理论上可以实现2倍加速,且可以减少指令数,减少内层循环中间变量个数,降低对寄存器资源的消耗,利于软件流水线的排布。
寄存器分块:寄存器分块的目的是合理安排核心函数中矩阵分块的大小,在不超过硬件限制的情况下尽可能充分利用寄存器等硬件资源,实现性能优化。寄存器的数量决定了寄存器分块的大小。申威SW1600是ALPHA架构平台,每个CPU拥有F0到F31,共32个向量化浮点寄存器,本发明选择4*4的寄存器分块。在此分块下,每轮使用4个浮点向量寄存器,取4个256位向量长度的A矩阵元素,共16个A矩阵元素;使用4个浮点向量寄存器,每个寄存器取1个B阵元素并扩展成4份,则4个寄存器处理4个B矩阵元素,计算16个256位向量长度的C矩阵元素,即64个C矩阵双精元素的部分解,由此共使用了24个浮点向量寄存器。此外,F31寄存器存0值,剩余7个逻辑寄存器存储中间变量或用作循环变量,寄存器资源使用合理且高效。
循环展开与软件流水线:循环展开是编译器经常使用的优化策略之一,循环展开后,最内层循环的单次循环内指令数增加,对硬件而言,有更多的指令可用于乱序发射与乱序执行,硬件保留站和流水线等硬件资源利用更充分;对软件而言,更多的指令可以用于指令重排,有助于避免“访存-计算”的数据依赖关系。
本发明基于申威SW1600平台,通过使用多线程与手工汇编代码优化,提高了对于该计算密集型函数的运行性能,表2统计了数据规模分别为1024、2048、4096、8192时,申威SW1600GEMM性能和GotoBLAS GEMM性能,对比图如图4所示,实验包含了1024、2048、4096、8192四种矩阵规模,实数单精、实数双精、复数单精、复数双精共16组测试用例,为表2的对比示意图,平均加速比为4.72,最高加速比为5.61。
表2
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (5)
1.一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,其特征在于:基于申威SW1600平台的一个CPU进行设计,采用interface接口层函数-driver驱动层函数-kernel汇编核心层函数的三层代码设计框架,支持两个矩阵A、B各自为转置或非转置多种情况,框架内部调用关系为interface-driver-kernel,具体实现如下:
(1)interface接口层函数:该层为函数接口,负责输入参数检查,判断矩阵规模参数是否合法,当输入参数不合法时返回错误码;判断两个输入矩阵A、B的转置情况,依据不同情况调用对应的driver驱动层函数;
(2)driver驱动层函数:由interface接口层函数调用,并调用下层的kernel汇编核心层函数;该driver驱动层函数负责矩阵数据重排,以适应kernel汇编核心层函数的寄存器分块情况,计算过程包含矩阵的N维和M维两重嵌套循环,在N维循环内进行输入矩阵B重排,在M维循环内进行输入矩阵A重排,保证kernel汇编核心层函数连续从cache中获取数据,以减少cache不命中的情况,提高性能;
(3)kernel汇编核心层函数:为底层核心层函数,由driver驱动层函数调用,负责实际计算的高性能实现;kernel汇编核心层函数基于申威SW1600的扩展ALPHA架构指令集,使用256位的SIMD向量化运算与乘加指令提高计算性能;基于该平台的ALPHA架构特征,使用F0至F31共32个浮点向量寄存器,采用寄存器分块策略进行算法设计;利用GEMM的计算密集型特性,手工实现汇编级的循环展开与指令重排,使用计算指令掩盖访存延迟,保证CPU利用率;
使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术、矩阵分块与数据重排的技术手段,大幅提升函数性能。
2.根据权利要求1 所述的基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,其特征在于:所述kernel汇编核心层函数中使用256位SIMD向量化运算实现如下:申威SW1600平台提供了256位的SIMD向量扩展支持,使用256位SIMD向量化运算时,每个元素为8字节,进行向量化扩展后,配合长度为256位的浮点向量化寄存器,每次顺序读取4个输入矩阵A的元素,同时对4个累加结果矩阵C的元素进行运算,理论上性能可提升4倍。
3.根据权利要求1所述的基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,其特征在于:所述kernel汇编核心层函数中的乘加指令实现如下:申威SW1600平台提供SIMD乘加指令,在乘加指令时,每次计算指令实现加法和乘法在一个指令周期完成,理论上实现2倍加速,且可以减少指令数,减少内层循环中间变量个数,降低对寄存器资源的消耗,利于软件流水线的排布。
4.根据权利要求1所述的基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,其特征在于:所述kernel汇编核心层函数中寄存器分块策略设计如下:申威SW1600是ALPHA架构平台,每个CPU拥有F0到F31,共32个向量化浮点寄存器,选择4*4的寄存器分块,在此寄存器分块下,每轮使用4个浮点向量寄存器,取4个256位向量长度的输入矩阵A的元素,共16个A矩阵元素;使用4个浮点向量寄存器,每个寄存器取输入矩阵B的元素并扩展成4份,则4个寄存器处理4个输入矩阵B的元素,由此共使用了24个浮点向量寄存器,寄存器资源使用合理且高效。
5.根据权利要求1所述的基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,其特征在于:所述kernel汇编核心层函数中循环展开与软件流水线实现如下:循环展开后,最内层循环的单次循环内指令数增加,对硬件而言,有更多的指令可用于乱序发射与乱序执行,硬件保留站和流水线硬件资源;对软件而言,更多的指令可以用于指令重排,有助于避免“访存-计算”的数据依赖关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130123.6A CN105808309B (zh) | 2016-03-08 | 2016-03-08 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130123.6A CN105808309B (zh) | 2016-03-08 | 2016-03-08 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808309A CN105808309A (zh) | 2016-07-27 |
CN105808309B true CN105808309B (zh) | 2019-04-05 |
Family
ID=56467868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610130123.6A Expired - Fee Related CN105808309B (zh) | 2016-03-08 | 2016-03-08 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808309B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168683B (zh) * | 2017-05-05 | 2020-06-09 | 中国科学院软件研究所 | 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
CN111221576B (zh) * | 2019-06-12 | 2022-03-22 | 上海兆芯集成电路有限公司 | 指令执行方法及指令执行装置 |
CN110262900B (zh) * | 2019-06-20 | 2023-09-29 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的主核与核组之间通信锁同步运行加速方法 |
CN110673877B (zh) * | 2019-08-22 | 2020-09-01 | 成都信息工程大学 | 一种基于手动向量化的并行计算方法 |
CN110782009B (zh) * | 2019-10-17 | 2023-09-08 | 湖南大学 | 基于ARMv8体系的计算内核优化方法 |
CN110929850A (zh) * | 2019-11-26 | 2020-03-27 | 国家超级计算无锡中心 | 基于申威处理器的深度学习算子自动优化系统及方法 |
CN112783503B (zh) * | 2021-01-18 | 2023-12-22 | 中山大学 | 一种基于Arm架构的NumPy运算加速优化方法 |
CN113240570B (zh) * | 2021-04-13 | 2023-01-06 | 华南理工大学 | 一种GEMM运算加速器及基于GoogLeNet的图像处理加速方法 |
CN113641956B (zh) * | 2021-08-05 | 2023-05-30 | 中国科学院软件研究所 | 面向SW26010-Pro处理器的1、2级BLAS函数库的高性能实现方法 |
CN115878188B (zh) * | 2023-02-20 | 2023-05-05 | 湖南大学 | 一种基于sve指令集的池化层函数的高性能实现方法 |
CN118012575B (zh) * | 2024-04-08 | 2024-06-11 | 中电科申泰信息科技有限公司 | 一种面向国产化平台的多媒体数据解包的软件模拟方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887186A (en) * | 1994-03-31 | 1999-03-23 | Fujitsu Limited | Method of solving simultaneous linear equations in a memory-distributed parallel computer |
US20060161612A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method and structure for a generalized cache-register file interface with data restructuring methods for multiple cache levels and hardware pre-fetching |
US20100313060A1 (en) * | 2009-06-05 | 2010-12-09 | Arm Limited | Data processing apparatus and method for performing a predetermined rearrangement operation |
CN102722472A (zh) * | 2012-05-28 | 2012-10-10 | 中国科学技术大学 | 一种复数矩阵的优化方法 |
CN102750150A (zh) * | 2012-06-14 | 2012-10-24 | 中国科学院软件研究所 | 基于x86架构的稠密矩阵乘法汇编代码自动生成方法 |
US8458442B2 (en) * | 2009-08-26 | 2013-06-04 | International Business Machines Corporation | Method and structure of using SIMD vector architectures to implement matrix multiplication |
CN103168289A (zh) * | 2011-10-14 | 2013-06-19 | 松下电器产业株式会社 | 转置运算装置及其集成电路、以及转置处理方法 |
CN103684474A (zh) * | 2012-08-31 | 2014-03-26 | 中国科学院上海高等研究院 | 一种高速ldpc译码器的实现方法 |
-
2016
- 2016-03-08 CN CN201610130123.6A patent/CN105808309B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887186A (en) * | 1994-03-31 | 1999-03-23 | Fujitsu Limited | Method of solving simultaneous linear equations in a memory-distributed parallel computer |
US20060161612A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method and structure for a generalized cache-register file interface with data restructuring methods for multiple cache levels and hardware pre-fetching |
US20100313060A1 (en) * | 2009-06-05 | 2010-12-09 | Arm Limited | Data processing apparatus and method for performing a predetermined rearrangement operation |
US8458442B2 (en) * | 2009-08-26 | 2013-06-04 | International Business Machines Corporation | Method and structure of using SIMD vector architectures to implement matrix multiplication |
CN103168289A (zh) * | 2011-10-14 | 2013-06-19 | 松下电器产业株式会社 | 转置运算装置及其集成电路、以及转置处理方法 |
CN102722472A (zh) * | 2012-05-28 | 2012-10-10 | 中国科学技术大学 | 一种复数矩阵的优化方法 |
CN102750150A (zh) * | 2012-06-14 | 2012-10-24 | 中国科学院软件研究所 | 基于x86架构的稠密矩阵乘法汇编代码自动生成方法 |
CN103684474A (zh) * | 2012-08-31 | 2014-03-26 | 中国科学院上海高等研究院 | 一种高速ldpc译码器的实现方法 |
Non-Patent Citations (2)
Title |
---|
FitenBLAS:面向FT1000微处理器的高性能线性代数;迟利华 等,;《湖南大学学报(自然科学版)》;20150430;第101-103页 * |
向量 SIMD DSP 上高效矩阵运算技术研究;张凯;《中国博士学位论文全文数据库信息科技辑》;20151115;第1-36页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105808309A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105808309B (zh) | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 | |
Wu et al. | Kernel weaver: Automatically fusing database primitives for efficient gpu computation | |
CN103617150B (zh) | 一种基于gpu的大规模电力系统潮流并行计算的系统及其方法 | |
Ionica et al. | The movidius myriad architecture's potential for scientific computing | |
CN107168683A (zh) | 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 | |
CN102981807B (zh) | 一种基于cuda并行环境的gpu程序优化方法 | |
CN109522254A (zh) | 运算装置及方法 | |
CN109086244A (zh) | 一种基于向量处理器的矩阵卷积向量化实现方法 | |
CN108509270A (zh) | 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 | |
CN103336758A (zh) | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 | |
Shan et al. | FPGA and GPU implementation of large scale SpMV | |
CN102681972A (zh) | 一种利用GPU加速格子-Boltzmann的方法 | |
CN103226487A (zh) | 面向异构众核多级存储结构的数据分布与局部性优化方法 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
CN110135569A (zh) | 一种异构平台神经元定位三级流水并行方法、系统及介质 | |
CN101593132A (zh) | 基于线程构造模块的多核并行模拟退火方法 | |
CN109978171A (zh) | 一种基于云计算的Grover量子仿真算法优化方法 | |
Wu et al. | Optimizing dynamic programming on graphics processing units via adaptive thread-level parallelism | |
CN113987414B (zh) | 基于ARMv8多核处理器的小型和不规则矩阵乘优化方法 | |
CN102722472B (zh) | 一种复数矩阵的优化方法 | |
Kim et al. | Compute spearman correlation coefficient with Matlab/CUDA | |
Qiao et al. | Parallelizing and optimizing neural Encoder–Decoder models without padding on multi-core architecture | |
CN106484532A (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Zheng et al. | GPU-based multifrontal optimizing method in sparse Cholesky factorization | |
Niemeyer et al. | Turbulence-chemistry closure method using graphics processing units: a preliminary test |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20190405 |