CN107451097B - 国产申威26010众核处理器上多维fft的高性能实现方法 - Google Patents
国产申威26010众核处理器上多维fft的高性能实现方法 Download PDFInfo
- Publication number
- CN107451097B CN107451097B CN201710658700.3A CN201710658700A CN107451097B CN 107451097 B CN107451097 B CN 107451097B CN 201710658700 A CN201710658700 A CN 201710658700A CN 107451097 B CN107451097 B CN 107451097B
- Authority
- CN
- China
- Prior art keywords
- calculation
- fft
- data
- decomposition
- layer
- 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.)
- Active
Links
Images
Classifications
-
- 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/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提出一种国产申威26010众核处理器上多维FFT的高性能实现方法,基于国产处理器申威26010平台,将两层分解的一维FFT的求解算法,有效应用于多维FFT计算,并设计带输入输出跨度的FFT、多行一维FFT和多列一维FFT及其对应的2的幂次和非2的幂次等多种FFT类型,以提升多维FFT运算性能。与开源FFTW库相比,基于本平台的多维FFT计算性能急剧升高,其平均加速比为22.283,最高加速比达到30.340。
Description
技术领域
本发明涉及傅里叶变换运算技术领域,具体涉及一种国产申威26010众核处理器上多维FFT的高性能实现方法。
背景技术
离散傅里叶变换(Discrete Fourier Transform,DFT)在数字信号处理和图像处理等领域具有重要地位。快速傅里叶变换(Fast Fourier Transform,FFT)是计算离散傅里叶变换及其逆变换的快速算法。1965年,由库利-图基(Cooley-Tukey)提出后,将DFT的计算复杂度由O(N2)减少到O(NlogN)(N为变换规模),并迅速蔓延到科学研究的各个领域。因其复杂的访存模式和大量的数据通信成为HPC Challenge基准测试程序的组成部分,可以用于超级计算机的体系结构和整体性能的评估。
对于一个三维输入序列x[Z][Y][X]的傅里叶变换,其数据规模为N=Z×Y×X,计算公式如下:
其中,x(j1,j2,j3)为输入序列,j1、j2和j3分别表示输入序列在Z、Y和X三个维度上的取值,其取值范围分别为j1∈[0,Z-1],j2∈[0,Y-1],j3∈[0,X-1],y(k1,k2,k3)为输出序列,是输入序列的离散傅里叶变换结果,即将信号的时域采样变换为离散时间傅里叶变换的频域采样,ωN为旋转因子(twiddle factor),ωN=e-2πi/N,eix=cos x+i sin x,括号中的内容为一维DFT的计算公式。根据定义三维DFT实际上一个矩阵向量乘操作,计算复杂度为O(N2)。根据行列算法,三维DFT问题实际上可以转化为分别延着Z、Y和X三个维度上的一维DFT问题求解,亦可将计算复杂度降到O(NlogN)。
FFT的基本思想是利用旋转因子的周期性、对称性和可约性将一个长度为N的序列的DFT逐次分解为若干个较短序列的DFT的线性组合,使总的运算次数比直接长度为N的DFT运算要少得多,从而达到提高速度的目的。FFT算法中最经典的莫过于库利-图基算法,其采取分而治之的策略,递归地将一个序列较大的DFT分解成为两个较短序列的DFT。其针对合数变换规模N=N1×N2,可以将N点的一维FFT问题转换成N1点和N2点的小规模一维FFT问题来完成。这是一个递归的算法,也可基于规模的分解,采用迭代的Stockham[C.V.Loan.Computational frameworks for the fast Fouriertransform.Philadelphia:SIAM,1992.]计算框架来实现。Bluestein[P.N.Swarztrauber,R.A.Sweet,W.L.Briggs,et al.Bluestein's FFT for arbitrary N on the hypercube[J].parallel computing,1991:607-617.]算法可计算任意规模的FFT问题,其主要原理是,通过将输入序列用0元素扩充至长度为2的幂次,然后再用其他FFT算法进行计算。然而使用该算法势必会引入多余的计算和额外的存储空间需求。
FFT算法种类繁多,变换形式复杂,本发明中,处理对象为三维FFT双精度复数到复数运算,其中包括2的幂次和非2的幂次、批量多行和批量多列一维FFT运算。对于三维输入序列x[Z][Y][X],将数据看成一个规模为N=Z×Y×X且按行优先顺序存储的一维数组,其中X维度上的数据连续存储,Y和Z维度上的数据不连续存储,其每个元素的间隔分别为X和Y×X。
“神威·太湖之光”计算机系统是世界上首台峰值运算速度超过十亿亿次量级的超级计算机,也是中国第一台全部采用自主技术构建的世界第一的超级计算机。其部署在国家超级计算无锡中心,使用的处理器是“申威26010”异构众核处理器。该众核处理器由4个核组构成,每个核组由管理核心(Management Processing Element,MPE)、运算核心簇(Computing Processing Elements clusters,CPE cluster)、协议处理部件(PPU)和存储控制器(Memory Controller,MC)组成。管理核心又称主核,用于运行操作系统和用户程序,其采用自主指令集的64位全功能RISC核心。运算核心簇包含8x8方式排列的64个运算核心和DMA控制器(DMA Controller),支持多种运算核心数据分布管理模式和多种运算核心间数据传递方式。其中,DMA控制器用于解析和管理来自运算核心的数据流传输命令;运算核心又称从核,为精简的64位RISC核心,能提供强大的计算能力,支持256位整数和浮点向量化操作,一级数据存储采用用户可控的局部数据存储(LDM)容量为64KB。
该超级计算机性能优越,越来越多的科学计算与工业应用运行于其上,然而目前并没有任何开源的FFT算法库能直接利用其运算核心强大的计算能力,开源FFTW函数库也只能利用其主核的计算能力,性能有限,因此针对该申威平台开发FFT函数库是必需的。
目前尚未有相似技术。
发明内容
本发明技术解决问题:克服目前并没有任何开源的FFT算法库能直接利用本平台其运算核心强大的计算能力的问题,提供一种国产申威26010众核处理器上多维FFT的高性能实现方法,利用两层分解的FFT算法结构、Bluestein算法、批量多行一维FFT计算、批量多列一维FFT计算和多种高性能优化手段来提升多维FFT的性能。
由于传统的FFT算法并行度有限且访存局部性低等缺点,不能充分利用申威众核平台上的众多计算资源。本发明基于国产申威26010处理器平台的结构特点,设计了包含接口层、主核层、从核层和核心层的四层结构框架进行多维FFT计算,多维FFT计算可表示为N1×…×Nd,其中d表示维度数,d≥2,Nd为每个维度的规模大小,表示Nd点一维FFT计算,并且能满足带输入输出跨度类型的FFT计算和批量类型FFT计算,批量类型FFT计算包括多行一维FFT和多列一维FFT两种,所述多行一维FFT是指批量计算个数大于1且输入输出跨度等于1的情况;所述的多列一维FFT是指批量计算个数大于1、输入输出跨度等于批量计算个数且两个计算输入数据和输出数据首地址之间的间隔等于1的情况,其分解方式与多行一维FFT相似;以上FFT类型都支持2的幂次和非2的幂次,具体实现如下:
(1)接口层:建立输入数据的描述符并提交描述符至主核层;所述描述符设置FFT计算的基本信息和计算信息;所述基本信息包括FFT计算中输入序列的数据维度、数据规模、数据精度以及变换类型;所述数据维度为多维,所述数据规模为输入序列的大小,可以为任意规模;所述数据精度包括双精度和单精度两种类型;所述变换类型为复数到复数的变换;所述计算信息包括设置FFT的输入输出跨度和批量类型,所述输入输出跨度包括参与同一个FFT计算的相邻两个输入数据之间的间隔和相邻两个输出数据之间的间隔,可由用户指定;所述批量类型FFT计算信息包括批量计算时进行FFT计算的个数、两个计算输入序列首地址之间的间隔和两个输出序列首地址之间的间隔;输入输出跨度、批量计算时进行FFT计算的个数、两个计算输入序列首地址之间的间隔和两个输出序列首地址之间的间隔5个参数均要求为正整数,并且地址的计算,以所处理的数据类型为基本单位;
(2)主核层:根据接口层的描述符,对输入序列的每个维度上的FFT计算进行分解并预处理FFT计算所需的旋转因子。每个维度上的FFT计算任务是,对于最低维度Nd,数据连续存储,计算N1×…×Nd-1个Nd点的一维FFT,利用多行一维FFT求解,对于其他维度,数据不连续存储,都可利用多列一维FFT求解;所述多行一维FFT和多列一维FFT的计算任务均在从核层完成,每个维度上的FFT计算的数据规模包含两种情况,分别为2的幂次和非2的幂次,对于2的幂次情况,基于两层分解的FFT算法结构求解;对于非2的幂次情况,利用BluesteinFFT算法求解,主核层会根据每个维度分别进行分解操作,且每个维度的分解相互独立;所述分解操作将每个维度上的一维FFT计算转化为一系列小因子序列的FFT计算,小因子数据规模小于等于32,所述FFT计算所需的旋转因子包括两种旋转因子,一种为Cooley-Tukey分解所需的旋转因子,另一种为Bluestein FFT算法所需的旋转因子;
(3)从核层:主核层操作完成之后,从核进行数据的传输和小因子序列FFT的计算,所述的数据传输是指从核层利用直接内存访问Direct Memory Access,DMA方式完成从主存到从核LDM和LDM到主存的数据传输,所述的小因子序列FFT计算,对于最低维度,利用多行一维FFT求解,对于其他维度,都可利用多列一维FFT求解。实现时首先需要针对输入跨度大于1、两个计算输入序列首地址之间的间隔不等于1,且默认多个FFT计算所处理的数据没有重叠的情况对输入序列进行预处理,即将输入序列提前传输到一段连续的内存中;同理在FFT计算完成后对计算结果即输出序列进行后处理,即将计算结果存储到参数指定的位置,以满足数据传输时的带宽要求。
(4)核心层:完成从核层涉及的小因子序列的FFT计算,数据规模分别为2、4、8、16和32,小因子序列的FFT计算统称为小因子优化函数Codelets,主要从向量化指令运算、计算的循环完全展开、仔细规划变量的使用和计算指令的排布方面进行优化,能够最大化使用寄存器资源,实现指令的流水化。
所述主核层中,Bluestein FFT算法为解决在国产申威26010处理器上针对输入序列的数据规模为非2的幂次情况的问题,此算法适用于任何规模。对于规模为N的非2的幂次的一维FFT计算,通过将输入序列用0扩充至一个2的幂次的长度M,M≥2N-2,将问题转换成求解M点FFT问题,M为2的幂次,然后使用两层分解FFT算法快速地求解。
步骤2中所述分解过程如下:
(1)第一层分解:Ni=Ni1×…×Nii×…Nim,其中Ni为输入序列第i个维度的数据规模,i≤d,m为大于等于1的整数,Nii为第一层分解后得到的一系列新序列的数据规模;
(2)第二层分解:当数据规模Nii为核心层小因子序列的数据规模时,不进行第二层分解;当数据规模大于核心层小因子序列的数据规模时,则对小因子Nii进行第二层分解,Nii=f1×f2或者Nii=f1×f2×f3,其中f1、f2和f3为核心层小因子序列的数据规模。
从核层中,利用多行一维FFT求解时,因同时进行多个相同配置的一维FFT计算,采取分解方案及使用的旋转因子都相同,可加强旋转因子的重用,对于大规模多行一维FFT,因单个FFT计算已实现对计算资源和从核LDM的充分利用,实现时循环计算即可;但对于小规模多行一维FFT,需要根据数据规模的大小来设计调度从核资源的计算方案。
所述利用多行一维FFT求解过程如下:
当输入规模为2的幂次时,根据数据规模Nd,此时Nd为最低维度的数据规模,可将设计方案分成5类:
(1)第1类,数据规模为2≤Nd≤32,一行FFT计算使用从核数为1,通过直接调用小因子优化函数Codelets完成计算,且一个从核中同时计算多行;此时会根据行数将任务均衡地分配到从核;
(2)第2类,数据规模为64≤Nd≤512,一行FFT计算使用从核数为1,Nd分解为Nd=Nd1×Nd2,Nd1和Nd2无需进行第二层分解,且都在一个从核上完成,不用进行寄存器通信,因DMA传输的带宽要求256Bytes连续,在满足256Bytes连续的前提下尽量使每个从核上分配的行数负载均衡;
(3)第3类,数据规模为1024≤Nd≤2048,一行FFT计算使用从核数为2个或4个,且都在同一行上,Nd分解为Nd=Nd1×Nd2,Nd1无需进行第二层分解,Nd2进行第二层分解Nd2=f1×f2,在保证每个从核LDM充分利用的情况下仍需在一行从核上完成计算,需要同一行上2个或者4个从核的数据交换,由行寄存器通信完成;计算任务按行的顺序均衡地分配给若干从核即可;
(4)第4类,数据规模为4096≤Nd≤32768,一行FFT计算需2行或4行或8行×8个从核协同计算,需要同一行上的8个从核上的数据交换,和同一列上的2个或4个或8个从核的数据交换,分别由行寄存器通信和列寄存器通信完成;Nd分解为Nd=Nd1×Nd2,Nd1和Nd2进行第二层分解,Nd1=f1×f2,Nd2=f1×f2,其中Nd1分量由同一列上的2个或4个或8个从核完成,Nd2分量则由同一行上的8个从核完成;
(5)第5类,输入规模很大,即Nd≥65536时,输入数据不能一次完全加载到从核LDM中时,单个FFT的变换已经能完全利用每个从核的LDM空间,并且很好地实现DMA传输与计算的重叠,需要对Nd分解为Nd=Nd1×…×Ndd,然后进行第二层分解完成计算,需要行寄存器通信和列寄存器通信实现数据交换;需要多次DMA访存,包括读取和写入操作;另外因同时多行一维FFT计算使用的旋转因子都相同,在实现时通过优先遍历多行方向可使旋转因子只传输一次,从而加强旋转因子的重用。当输入规模为非2的幂时,根据Bluestein FFT算法对2的幂次的计算kernel进行修改即可。
从核层中,所述多列一维FFT求解时,一列FFT计算所需的数据在内存中是间隔分布的,为了保证DMA传输的连续性,通过同时进行V列FFT计算达到,此时,从核内的工作集为V*Nd,并会根据数据规模的大小来设计调度从核资源的计算方案。
所述利用多列一维FFT求解过程如下:
当输入规模为2的幂次时,根据数据规模Nd,1<d,可将设计方案分成5类:
(1)第1类,数据规模为Nd<64,一列FFT计算使用1个从核,不需要分解,直接调用小因子优化函数Codelets完成;
(2)第2类,数据规模为64≤Nd<512,Nd分解为Nd=Nd1×Nd2,不需要进行第二层分解,需要一行从核完成;需要行寄存器通信实现一行上8个从核的数据交换;因每列FFT由一行从核计算,所以将计算任务平均分配给8行从核:
(3)第3类,数据规模为512≤Nd<4096,Nd分解为Nd=Nd1×Nd2,Nd1进行第二层分解Nd1=f1×f2计算,Nd2无需进行第二层分解;一列FFT需要64个从核完成,其中Nd1分量由一行上的8个从核完成,Nd2分量则由一列上的8个从核完成;需要行寄存器通信和列寄存器通信实现数据交换;
(4)第4类,输入规模很大,即4096≤Nd<65536时,Nd分解为Nd=Nd1×Nd2,Nd1和Nd2进行第二层分解Nd1=f1×f2,Nd2=f1×f2完成计算;输入数据不能一次完全加载到从核LDM中时,需要多次DMA访存,包括读取和写入,两个分量都由一行从核完成,只需行寄存器通信;因多列一维FFT计算使用的旋转因子都相同,在实现时优先遍历多列方向的计算,旋转因子只传输一次即可,从而加强旋转因子的重用;
(5)第5类,输入规模很大,即65536≤Nd时,Nd分解成Nd=Nd1×…×Ndd,然后进行第二层分解,输入数据不能一次完全加载到从核LDM中时,需行寄存器通信和列寄存器通信完成数据交换;因多列一维FFT计算使用的旋转因子都相同,在实现时优先遍历多列方向的计算,旋转因子只传输一次即可。
在实现多列一维FFT时,针对列数为奇数的情况,因向量化为256位计算,需要在计算的开始前和结束后进行padding计算,即将列数规整为偶数;当输入规模为非2的幂时,根据Bluestein FFT算法对2的幂次的计算kernel进行修改即可。
本发明与现有的开源FFTW技术相比:
(1)本发明基于国产申威26010处理器,将两层分解的2的幂次一维FFT的求解算法,有效应用于多维FFT计算,充分提高FFT函数库性能。
(2)本发明设计带输入输出跨度的多维FFT和批量多行一维FFT和多列一维FFT两种,以上FFT类型都支持2的幂次和非2的幂次;
(3)以每秒浮点运算次数即Gflops表示FFT计算性能为例,三维FFT 2的幂次的平均加速比为27.347,最高加速比为30.340;三维FFT非2的幂次的平均加速比为17.220,最高加速比为23.276。
附图说明
图1为本发明的方法的流程图。
具体实施方式
下面结合附图及实施例对本发明进行详细说明。
如图1所示,本发明是国产申威26010众核处理器上多维FFT的高性能实现方法,设计框架包含四层:接口层、主核层、从核层和核心层,具体实施方式如下:
1.接口层:描述符操作
(1)建立描述符,设置FFT计算所需的数据精度、数据维度、数据规模和变换类型等基本信息;数据精度为双精度和单精度两种类型;所述数据维度为多维,所述数据规模为输入序列的大小,可以为任意规模;所述变换类型为复数到复数的变换。
(2)设置输入数据的描述符:设置FFT的输入输出跨度和批量类型FFT计算参数,参数可由用户指定。输入输出跨度包括参与同一个FFT计算的相邻两个输入数据之间的间隔和相邻两个输出数据之间的间隔;批量类型FFT计算参数包括批量计算时进行FFT计算的个数、两个计算输入序列首地址之间的间隔和两个输出序列首地址之间的间隔;输入输出跨度、批量计算时进行FFT计算的个数、两个计算输入序列首地址之间的间隔和两个输出序列首地址之间的间隔5个参数均要求为正整数,并且地址的计算,以所处理的数据类型为基本单位。
(3)提交描述符至主核层;
(4)FFT计算结束后,释放描述符。
FFT计算调用从核接口时,有多种接口类型,分别为正变换接口、逆变换接口、多行一维FFT接口、多列一维FFT接口和多维FFT接口。
2.主核层:
根据接口层的描述符,对输入序列的每个维度上的FFT计算进行分解。主核层会根据每个维度分别进行分解操作,且每个维度的分解相互独立。分解操作会将每个维度上的一维FFT计算转化为一系列小因子序列的FFT计算,其小因子序列FFT计算由从核完成。
(1)对于最低维度Nd,其数据连续存储,需要计算N1×…×Nd-1个Nd点的一维FFT,可利用多行一维FFT求解;多行一维FFT是指批量计算个数大于1且输入输出跨度等于1的情况。主核层针对多行一维FFT的数据规模进行分解,对于数据规模为非2的幂次的情况,其需根据Bluestein FFT算法进行扩充得到M,然后进行分解过程:
第一层分解:Ni=Ni1×…×Nii×…Nim,其中Ni为输入序列第i个维度的数据规模,i≤d,m为大于等于1的整数,Nii为第一层分解后得到的一系列新序列的数据规模;
第二层分解:当数据规模Nii为核心层小因子序列的数据规模时,不进行第二层分解;当数据规模大于核心层小因子序列的数据规模时,则对小因子Nii进行第二层分解,Nii=f1×f2或者Nii=f1×f2×f3,其中f1、f2和f3为核心层小因子序列的数据规模。
(2)对于其他维度,其数据不连续存储,都可利用多列一维FFT求解,如对N1维度,需要计算N2×…×Nd个N1点的一维FFT;多列一维FFT是指批量计算个数大于1、输入输出跨度等于批量计算个数且两个计算输入数据和输出数据首地址之间的间隔等于1的情况。其分解方式与多行一维FFT相似。
上述两类批量FFT计算,其数据规模包含两种情况:2的幂次和非2的幂次。对于2的幂次情况,可基于两层分解的FFT算法结构求解;对于非2的幂次情况,利用Bluestein FFT算法求解。
使用Stockham FFT框架和Cooley-Tukey FFT的前提是,数据规模N可以分解成若干个因子的乘积。但如果N是一个素数,这种算法便不再适用。另外,对于非2的幂次的合数规模,在此众核平台上也很难找到一个分解可以高效地利用所有的从核资源以及DMA传输带宽。因此,在“申威26010”异构众核平台上,采用Bluestein FFT算法来计算所有非2的幂规模的一维FFT问题。
Bluestein FFT算法,适用于任何规模,通过将输入序列用0扩充至一个2的幂次的长度M(M≥2N-2),然后将问题转换成求解M点FFT问题。当M为2的幂次,可以使用两层分解FFT(Two_level FFT或Two_level IFFT)快速地求解,具体计算步骤表述如下:
(1)计算Bluestein FFT算法所需的点乘因子H,即第2-8行所示,在求解M点一维DFT计算时利用两层分解FFT算法求解;
(3)对(1)中的H和(2)中的Y进行点乘操作,得到Y,即第14-15行;
(4)对(3)中结果利用两层分解FFT算法求解M点一维DFT逆变换,即第16行;
Bluestein FFT算法所需要的旋转因子在提交描述符操作中完成,以便从核计算中能够重复利用。另外在算法实现过程中,为了减少对内存数组的遍历次数,我们将对所述2的幂规模的1D FFT的kernel计算进行一定的修改,以融合第11行、第15行和第18行所示的乘操作。
主核层还负责计算算法中涉及的旋转因子,并根据从核层的需求将其直接提供给从核层,避免从核层重复计算旋转因子。多维FFT计算所需的旋转因子包括两种旋转因子,一种为Cooley-Tukey分解所需的旋转因子,另一种为Bluestein FFT算法所需的旋转因子。
3.从核层:从核核组对各种类型FFT的计算方案
主核层操作完成之后,从核进行数据的传输和小因子序列FFT的计算。所述的数据传输主要是指从核层利用直接内存访问Direct Memory Access,DMA方式完成从主存到从核LDM和LDM到主存的数据传输。由于此众核平台采用DMA数据传输的方式,达到峰值带宽对数据传输的连续度有一定的要求,并且在计算过程中可能需要对内存中数据进行多次遍历,所以针对输入跨度大于1、两个计算输入序列首地址之间的间隔不等于1,且默认多个FFT计算所处理的数据没有重叠的情况下,在进行FFT计算前,需要对输入序列进行预处理,将输入序列提前传输到一段连续的内存中;在FFT计算后,通过后处理将输出序列存储到参数指定的位置。
(1)2的幂次一维FFT:利用迭代的Stockham计算框架和以Cooley-Tukey FFT算法为分解规则的两层分解的一维FFT算法即可实现高效求解;
(2)非2的幂次批量一维FFT:对于多维FFT计算涉及的多行一维FFT和多列一维FFT,需根据Bluestein FFT算法的结构对2的幂次的计算kernel进行修改。
(3)多行一维FFT:
从核层中,所述多行一维FFT,因同时进行多个相同配置的一维FFT计算,采取分解方案及使用的旋转因子都相同,可加强旋转因子的重用。对于大规模多行一维FFT,因单个FFT计算已实现对计算资源和从核LDM的充分利用,实现时循环计算即可;但对于小规模多行一维FFT,需要根据数据规模的大小来设计调度从核资源的计算方案。假设urow为保证256Bytes连续时每个从核应该计算的行数,erow为每个从核最多能计算的行数,batch为计算的行数。
当输入规模为2的幂次时,根据数据规模Nd,Nd为最低维度的数据规模,可将设计方案分成5类:
第1类,数据规模为2≤Nd≤32,一行FFT计算使用从核数为1,通过直接调用小因子优化函数Codelets完成计算,且一个从核中同时计算多行;此时会根据行数将任务均衡地分配到从核;
a).当batch≤urow,所有的计算任务由一个从核完成;
b).当urow≤batch≤64×urow,由多个从核完成,每个从核获得的计算任务尽可能均衡;
c).当batch≥64×urow,由64个从核共同完成,每个从核执行一次计算任务即可;
d).当batch≥64×erow时,由64个从核完成,且每个从核需执行多轮计算任务;
第2类,数据规模为64≤Nd≤512,一行FFT计算使用从核数为1,Nd分解为Nd=Nd1×Nd2,Nd1和Nd2无需进行第二层分解,且都在一个从核上完成,不用进行寄存器通信。因DMA传输的带宽要求256Bytes连续,在满足256Bytes连续的前提下尽量使每个从核上分配的行数负载均衡;
a).当batch<64时,将任务依次分配给从核,使用从核数与行数相同;
b).当batch≥64时,计算任务尽量均衡的分配给64个从核;
第3类,数据规模为1024≤Nd≤2048,一行FFT计算使用从核数为2个或4个,且都在同一行上,Nd分解为Nd=Nd1×Nd2,Nd1无需进行第二层分解,Nd2进行第二层分解Nd2=f1×f2,在保证每个从核LDM充分利用的情况下仍需在一行从核上完成计算,需要同一行上2个或者4个从核的数据交换,由行寄存器通信完成;计算任务按行的顺序均衡地分配给若干从核即可;
第4类,数据规模为4096≤Nd≤32768,一行FFT计算需2行或4行或8行×8个从核协同计算,需要同一行上的8个从核上的数据交换,和同一列上的2个或4个或8个从核的数据交换,分别由行寄存器通信和列寄存器通信完成;Nd分解为Nd=Nd1×Nd2,Nd1和Nd2进行第二层分解,Nd1=f1×f2,Nd2=f1×f2,其中Nd1分量由同一列上的2个或4个或8个从核完成,Nd2分量则由同一行上的8个从核完成;计算任务由若行从核完成;
第5类,输入规模很大(Nd≥65536)时,输入数据不能一次完全加载到从核LDM中时,单个FFT的变换已经能完全利用每个从核的LDM空间,并且很好地实现DMA传输与计算的重叠。需要对Nd分解为Nd=Nd1×…×Ndd,然后进行第二层分解完成计算,需要行寄存器通信和列寄存器通信实现数据交换;需要多次DMA访存(读取和写入)操作;另外因同时多行一维FFT计算使用的旋转因子都相同,在实现时通过优先遍历多行方向可使旋转因子只传输一次,从而加强旋转因子的重用;
(4)多列一维FFT:
一列FFT计算所需的数据在内存中是间隔分布的,为了保证DMA传输的连续性,通过同时进行V列FFT计算达到,其工作集为V*Nd,并会根据数据规模的大小来设计调度从核资源的计算方案。假设ucol为保证256Bytes连续时每个从核至少应该计算的列数,mcol为每个从核最多能计算的列数。batch为计算的列数:
当输入规模为2的幂次时,根据数据规模Nd,1<d-1,可将设计方案分成5类:
第1类,数据规模为Nd<64,一列FFT计算使用1个从核,不需要分解,直接调用小因子优化函数Codelets完成;
a)当batch>64×mcol时,计算任务平均分配给64个从核,每个从核同时计算mcol列,且每个从核可能执行多轮计算任务;剩下的任务batch-batch/(64×mcol)×mcol×64,按下面的方式处理;
b)首先将计算任务平均分配给64个从核,此时每个从核的计算任务相等,并得到余下的任务;
c)对b)中余下的任务,平均分成几份,每份大小为ucol列,将每份计算任务依次分配给若干从核;
第2类,数据规模为64≤Nd<512,Nd分解为Nd=Nd1×Nd2,不需要进行第二层分解,需要一行从核完成;需要行寄存器通信实现一行上8个从核的数据交换;因每列FFT由一行从核计算,所以将计算任务平均分配给8行从核:
a)当batch>8×mcol时,计算任务平均分配给8行从核,每行从核同时计算mcol列,且每行从核可能执行多轮计算任务;剩下的任务batch-batch/(8×mcol)×mcol×8,按下面的方式处理;
b)首先将计算任务平均分配给8行从核,此时每行从核的计算任务相等,并得到余下的任务;
c)对b)中余下的任务,平均分成几份,每份大小为ucol列,将每份计算任务依次分配给若干行从核;
第3类,数据规模为512≤Nd<4096,Nd分解为Nd=Nd1×Nd2,Nd1进行第二层分解Nd1=f1×f2,Nd2无需进行第二层分解;一列FFT需要64个从核完成,其中Nd1分量由一行上的8个从核完成,Nd2分量则由一列上的8个从核完成;需要行寄存器通信和列寄存器通信实现数据交换;
a)当batch≥mcol时,每个从核同时计算mcol列,每个从核经若干轮计算后,得到剩余的计算任务,按如下任务处理;
b)当batch<mcol时,每个从核同时计算batch列;
第4类,输入规模很大(4096≤Nd<65536)时,Nd分解为Nd=Nd1×Nd2,Nd1和Nd2进行第二层分解Nd1=f1×f2,Nd2=f1×f2完成计算;输入数据不能一次完全加载到从核LDM中时,需要多次DMA访存(读取和写入),两个分量都由一行从核完成,只需行寄存器通信;因多列一维FFT计算使用的旋转因子都相同,在实现时优先遍历多列方向的计算,旋转因子只传输一次即可,从而加强旋转因子的重用;
第5类,输入规模很大(65536≤Ni)时,Nd分解成Nd=Nd1×…×Ndd然后再进行第二层分解,输入数据不能一次完全加载到从核LDM中时,需行寄存器通信和列寄存器通信完成数据交换;因多列一维FFT计算使用的旋转因子都相同,在实现时优先遍历多列方向的计算,旋转因子只传输一次即可;
另外,在实现多列一维FFT时,针对列数为奇数的情况,因向量化为256位计算,需要在计算的开始前和结束后进行padding计算,即将列数规整为偶数。
(5)多维FFT
规模为N1×…×Nd的d(d≥2)维FFT问题的计算,数学上可等价转换成沿着每个维度上的1D FFT计算,调用该众核平台上一维FFT计算核心即可。但最低的维度(Nd维)方向上的输入数据连续,需要计算N1×…×Nd-1个Nd点的一维FFT,属于多行一维FFT问题(FFT1D_MR);除了Nd维外,其他维度方向上的计算都属于多列一维FFT问题(FFT1D_MC)。另外,每个维度上的规模也包含两种2的幂次和非2的幂次两种类型,具体算法如下:
4.核心层:小因子优化函数Codelets
小因子序列的FFT计算主要从向量化指令运算、计算的循环完全展开、仔细规划变量的使用和计算指令的排布等方面进行优化,能够最大化使用寄存器资源,实现指令的流水化。其中向量化指令运算的运算颗粒为256位向量数据,即4个64位双精度数据。支持的数据规模分别为2、4、8、16和32。以上各种类型FFT的计算方案,最终都会调用核心层的小因子优化函数Codelets完成计算。
以上各种类型FFT的计算方案,都是基于两层分解的FFT计算框架上进行设计和优化,并使用寄存器通信机制、访存计算重叠的双缓冲机制以及向量化运算等优化手段进行优化,以有效提高多维FFT的计算性能。
本发明基于国产申威26010平台,将基于两层分解的2的幂次一维FFT的求解算法,有效应用于多维FFT计算,充分提高FFT函数库性能,同时设计带输入输出跨度的FFT、多行一维FFT和多列一维FFT以及其对应的2的幂次和非2的幂次等多种FFT类型,以提升多维FFT运算性能。表1统计了数据类型为双精度复数时,基于本平台的三维FFT的性能数据与开源FFTW的三维FFT的性能数据,其中,数据规模2的幂次取8x32x8192、8x512x256、32x128x256和32x256x256,非2的幂次取9x9x16385、17x257x129、33x255x257和65x129x513,由表1得知,三维FFT 2的幂次的平均加速比为27.347,最高加速比为30.340;三维FFT非2的幂次的平均加速比为17.220,最高加速比为23.276。
表1三维FFT性能
注:上述以xMath-FFT表示基于国产申威26010处理器的FFT。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (8)
1.一种国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:采用包含接口层、主核层、从核层和核心层的四层结构框架进行多维FFT计算,多维FFT计算可表示为N1×…×Nd,其中d表示维度数,d≥2,Nd为每个维度的规模大小,表示Nd点一维FFT计算,并且能满足带输入输出跨度类型的FFT计算和批量类型FFT计算,批量类型FFT计算包括多行一维FFT和多列一维FFT两种,所述多行一维FFT是指批量计算个数大于1且输入输出跨度均等于1的情况;所述的多列一维FFT是指批量计算个数大于1、输入输出跨度均等于批量计算个数且批量FFT计算中相邻两个FFT计算的输入数据和输出数据的首地址的间隔等于1的情况,其分解方式与多行一维FFT相似;以上FFT类型都支持2的幂次和非2的幂次,具体实现如下:
(1)接口层:建立输入数据的描述符并提交描述符至主核层;所述描述符设置FFT计算的基本信息和计算信息;所述基本信息包括FFT计算中输入序列的数据维度、数据规模、数据精度以及变换类型;所述数据维度为多维,所述数据规模为输入序列的大小,可以为任意规模;所述数据精度包括双精度和单精度两种类型;所述变换类型为复数到复数的变换;所述计算信息包括设置FFT的输入输出跨度和批量类型,所述输入输出跨度包括参与同一个FFT计算的相邻两个输入数据之间的间隔和相邻两个输出数据之间的间隔,可由用户指定;所述批量类型包括批量计算时进行FFT计算的个数、两个计算输入序列首地址之间的间隔和两个输出序列首地址之间的间隔;输入输出跨度、批量计算时进行FFT计算的个数、两个计算输入序列首地址之间的间隔和两个计算输出序列首地址之间的间隔5个参数均要求为正整数,并且地址的计算,以所处理的数据类型为基本单位;
(2)主核层:根据接口层的描述符,对输入序列的每个维度上的FFT计算进行分解并预处理FFT计算所需的旋转因子,每个维度上的FFT计算任务是,对于最低维度的Nd,数据连续存储,计算N1×…×Nd-1个Nd点的一维FFT,利用多行一维FFT求解,对于其他维度,数据不连续存储,都可利用多列一维FFT求解;所述多行一维FFT和多列一维FFT的计算任务均在从核层完成,每个维度上的FFT计算的数据规模包含两种情况,分别为2的幂次和非2的幂次,对于2的幂次情况,基于两层分解的FFT算法结构求解;对于非2的幂次情况,利用BluesteinFFT算法求解,主核层会根据每个维度分别进行分解操作,且每个维度的分解相互独立;所述分解操作将每个维度上的一维FFT计算转化为一系列小因子序列的FFT计算,小因子数据规模小于等于32,所述小因子序列的FFT计算所需的旋转因子包括两种旋转因子,一种为Cooley-Tukey分解所需的旋转因子,另一种为Bluestein FFT算法所需的旋转因子;
(3)从核层:主核层操作完成之后,从核进行数据的传输和小因子序列FFT的计算,所述数据的传输是指从核层利用直接内存访问,DMA方式完成从主存到从核LDM和从核LDM到主存的数据传输,所述的小因子序列FFT计算,对于最低维度,利用多行一维FFT求解,对于其他维度,都可利用多列一维FFT求解,实现时首先需要针对输入跨度大于1、两个计算输入序列首地址之间的间隔不等于1,且默认多个FFT计算所处理的数据没有重叠的情况对输入序列进行预处理,即将输入序列提前传输到一段连续的内存中;同理在FFT计算完成后对计算结果即输出序列进行后处理,即将计算结果存储到参数指定的位置,以满足数据传输时的带宽要求;所述从核LDM是指国产申威26010处理器的运算核心,又称从核上的局部数据存储LDM;
(4)核心层:完成从核层涉及的小因子序列的FFT计算,数据规模分别为2、4、8、16和32,小因子序列的FFT计算统称为小因子优化函数Codelets,主要从向量化指令运算、计算的循环完全展开、仔细规划变量的使用和计算指令的排布方面进行优化,能够最大化使用寄存器资源,实现指令的流水化。
2.根据权利要求1所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:所述主核层中,Bluestein FFT算法为解决在国产申威26010处理器上针对输入序列的数据规模为非2的幂次情况的问题,对于规模为N的非2的幂次的一维FFT计算,通过将输入序列用0扩充至一个2的幂次的长度M,M≥2N-2,将问题转换成求解M点FFT问题,M为2的幂次,然后使用两层分解FFT算法快速地求解。
3.根据权利要求2所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:所述2层分解FFT算法的过程如下:
(1)第一层分解:Ni=Ni1×…×Nii×…Nim,其中Ni为输入序列第i个维度的数据规模,i≤d,m为大于等于1的整数,Nii为第一层分解后得到的一系列新序列的数据规模;
(2)第二层分解:当数据规模Nii为核心层小因子序列的数据规模时,不进行第二层分解;当数据规模大于核心层小因子序列的数据规模时,则对小因子Nii进行第二层分解,Nii=f1×f2或者Nii=f1×f2×f3,其中f1、f2和f3为核心层小因子序列的数据规模。
4.根据权利要求1所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:从核层中,利用多行一维FFT求解时,因同时进行多个相同配置的一维FFT计算,采取分解方案及使用的旋转因子都相同,可加强旋转因子的重用,对于大规模多行一维FFT,因单个FFT计算已实现对计算资源和从核LDM的充分利用,实现时循环计算即可;但对于小规模多行一维FFT,需要根据数据规模的大小来设计调度从核资源的计算方案。
5.根据权利要求4所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:所述利用多行一维FFT求解过程如下:
当输入规模为2的幂次时,根据数据规模Nd,此时Nd为最低维度的数据规模,可将设计方案分成5类:
(1)第1类,数据规模为2≤Nd≤32,一行FFT计算使用从核数为1,通过直接调用小因子优化函数Codelets完成计算,且一个从核中同时计算多行;此时会根据行数将任务均衡地分配到从核;
(2)第2类,数据规模为64≤Nd≤512,一行FFT计算使用从核数为1,Nd分解为Nd=Nd1×Nd2,Nd1和Nd2无需进行第二层分解,且都在一个从核上完成,不用进行寄存器通信,因DMA传输的带宽要求256Bytes连续,在满足256Bytes连续的前提下使每个从核上分配的行数负载均衡;
(3)第3类,数据规模为1024≤Nd≤2048,一行FFT计算使用从核数为2个或4个,且都在同一行上,Nd分解为Nd=Nd1×Nd2,Nd1无需进行第二层分解,Nd2进行第二层分解Nd2=f1×f2,在保证每个从核LDM充分利用的情况下仍需在一行从核上完成计算,需要同一行上2个或者4个从核的数据交换,由行寄存器通信完成;计算任务按行的顺序均衡地分配给若干从核即可;
(4)第4类,数据规模为4096≤Nd≤32768,一行FFT计算需2行×8个从核或4行×8个从核或8行×8个从核协同计算,需要同一行上的8个从核上的数据交换,和同一列上的2个或4个或8个从核的数据交换,分别由行寄存器通信和列寄存器通信完成;Nd分解为Nd=Nd1×Nd2,Nd1和Nd2进行第二层分解,Nd1=h1×h2,Nd2=f1×f2,其中Nd1分量由同一列上的2个或4个或8个从核完成,Nd2分量则由同一行上的8个从核完成;
(5)第5类,输入规模很大,即Nd≥65536时,输入数据不能一次完全加载到从核LDM中时,单个FFT的变换已经能完全利用每个从核的LDM空间,并且很好地实现DMA传输与计算的重叠,需要对Nd分解为Nd=Nd1×…×Ndd,然后进行第二层分解完成计算,需要行寄存器通信和列寄存器通信实现数据交换;需要多次DMA访存,包括读取和写入操作;另外因同时多行一维FFT计算使用的旋转因子都相同,在实现时通过优先遍历多行方向可使旋转因子只传输一次,从而加强旋转因子的重用;当输入规模为非2的幂时,根据Bluestein FFT算法对2的幂次的计算kernel进行修改即可。
6.根据权利要求4所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:从核层中,所述多列一维FFT求解时,一列FFT计算所需的数据在内存中是间隔分布的,为了保证DMA传输的连续性,通过同时进行V列FFT计算达到,此时,从核内的工作集为V*Nd,并会根据数据规模的大小来设计调度从核资源的计算方案。
7.根据权利要求6所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:所述多列一维FFT求解过程如下:
当输入规模为2的幂次时,根据数据规模Nd,1<d,可将设计方案分成5类:
(1)第1类,数据规模为Nd<64,一列FFT计算使用1个从核,不需要分解,直接调用小因子优化函数Codelets完成;
(2)第2类,数据规模为64≤Nd<512,Nd分解为Nd=Nd1×Nd2,不需要进行第二层分解,需要一行从核完成;需要行寄存器通信实现一行上8个从核的数据交换;因每列FFT由一行从核计算,所以将计算任务平均分配给8行从核;
(3)第3类,数据规模为512≤Nd<4096,Nd分解为Nd=Nd1×Nd2,Nd1进行第二层分解Nd1=f1×f2计算,Nd2无需进行第二层分解;一列FFT需要64个从核完成,其中Nd1分量由一行上的8个从核完成,Nd2分量则由一列上的8个从核完成;需要行寄存器通信和列寄存器通信实现数据交换;
(4)第4类,输入规模很大,即4096≤Nd<65536时,Nd分解为Nd=Nd1×Nd2,Nd1和Nd2进行第二层分解Nd1=f1×f2,Nd2=j1×j2完成计算;输入数据不能一次完全加载到从核LDM中时,需要多次DMA访存,包括读取和写入,两个分量都由一行从核完成,只需行寄存器通信;因多列一维FFT计算使用的旋转因子都相同,在实现时优先遍历多列方向的计算,旋转因子只传输一次即可,从而加强旋转因子的重用;
(5)第5类,输入规模很大,即65536≤Nd时,Nd分解成Nd=Nd1×…×Ndd,然后进行第二层分解,输入数据不能一次完全加载到从核LDM中时,需行寄存器通信和列寄存器通信完成数据交换;因多列一维FFT计算使用的旋转因子都相同,在实现时优先遍历多列方向的计算,旋转因子只传输一次即可。
8.根据权利要求7所述的国产申威26010众核处理器上多维FFT的高性能实现方法,其特征在于:在实现多列一维FFT时,针对列数为奇数的情况,因向量化为256位计算,需要在计算的开始前和结束后进行padding计算,即将列数规整为偶数,当输入规模为非2的幂时,根据Bluestein FFT算法对2的幂次的计算kernel进行修改即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710658700.3A CN107451097B (zh) | 2017-08-04 | 2017-08-04 | 国产申威26010众核处理器上多维fft的高性能实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710658700.3A CN107451097B (zh) | 2017-08-04 | 2017-08-04 | 国产申威26010众核处理器上多维fft的高性能实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107451097A CN107451097A (zh) | 2017-12-08 |
CN107451097B true CN107451097B (zh) | 2020-02-11 |
Family
ID=60490020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710658700.3A Active CN107451097B (zh) | 2017-08-04 | 2017-08-04 | 国产申威26010众核处理器上多维fft的高性能实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107451097B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516194B (zh) * | 2018-08-15 | 2021-03-09 | 北京航空航天大学 | 基于异构众核处理器的格点量子色动力学并行加速方法 |
CN109002659B (zh) * | 2018-09-07 | 2020-08-28 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN112559952B (zh) * | 2019-09-26 | 2023-07-07 | 无锡江南计算技术研究所 | 基于序列分层的异构众核快速傅里叶变换方法 |
CN111104765B (zh) * | 2019-12-24 | 2021-08-17 | 清华大学 | 基于神威架构的气体动理学算法优化方法 |
CN114218141B (zh) * | 2021-04-30 | 2024-02-02 | 无锡江南计算技术研究所 | 一种针对深度学习半精度算子数据访存对界处理方法 |
CN116094896B (zh) * | 2023-04-12 | 2023-06-30 | 高拓讯达(北京)微电子股份有限公司 | 一种ofdm系统控制方法、装置、计算机设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493042A (zh) * | 2001-02-24 | 2004-04-28 | �Ҵ���˾ | 在一个分布式存储器的并行多节点计算机上的多维快速傅里叶变换的高效实现 |
CN102652315A (zh) * | 2009-12-16 | 2012-08-29 | 瑞典爱立信有限公司 | 信息处理设备、其控制方法、程序及计算机可读存储媒体 |
US9582473B1 (en) * | 2014-05-01 | 2017-02-28 | Cadence Design Systems, Inc. | Instruction set to enable efficient implementation of fixed point fast fourier transform (FFT) algorithms |
CN106933777A (zh) * | 2017-03-14 | 2017-07-07 | 中国科学院软件研究所 | 基于国产申威26010处理器的基2一维fft的高性能实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070106718A1 (en) * | 2005-11-04 | 2007-05-10 | Shum Hoi L | Fast fourier transform on a single-instruction-stream, multiple-data-stream processor |
-
2017
- 2017-08-04 CN CN201710658700.3A patent/CN107451097B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493042A (zh) * | 2001-02-24 | 2004-04-28 | �Ҵ���˾ | 在一个分布式存储器的并行多节点计算机上的多维快速傅里叶变换的高效实现 |
CN102652315A (zh) * | 2009-12-16 | 2012-08-29 | 瑞典爱立信有限公司 | 信息处理设备、其控制方法、程序及计算机可读存储媒体 |
US9582473B1 (en) * | 2014-05-01 | 2017-02-28 | Cadence Design Systems, Inc. | Instruction set to enable efficient implementation of fixed point fast fourier transform (FFT) algorithms |
CN106933777A (zh) * | 2017-03-14 | 2017-07-07 | 中国科学院软件研究所 | 基于国产申威26010处理器的基2一维fft的高性能实现方法 |
Non-Patent Citations (1)
Title |
---|
A New Memory Address Transformation for Continuous-Flow FFT Processors with SIMD Extension;Chao Yang et al.;《CCF Conference on Engineering and Technology》;20160114;51-60 * |
Also Published As
Publication number | Publication date |
---|---|
CN107451097A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451097B (zh) | 国产申威26010众核处理器上多维fft的高性能实现方法 | |
Li et al. | Quantum supremacy circuit simulation on Sunway TaihuLight | |
JP6977239B2 (ja) | 行列乗算器 | |
Kiss et al. | Parallel realization of the element-by-element FEM technique by CUDA | |
CN109729734A (zh) | 芯片装置及相关产品 | |
CN103049241B (zh) | 一种提高cpu+gpu异构装置计算性能的方法 | |
Li et al. | An efficient manifold regularized sparse non-negative matrix factorization model for large-scale recommender systems on GPUs | |
Li et al. | VBSF: a new storage format for SIMD sparse matrix–vector multiplication on modern processors | |
Wang et al. | Optimizing FFT-based convolution on ARMv8 multi-core CPUs | |
Ploskas et al. | GPU accelerated pivoting rules for the simplex algorithm | |
Gao et al. | Research on the conjugate gradient algorithm with a modified incomplete Cholesky preconditioner on GPU | |
US20180373677A1 (en) | Apparatus and Methods of Providing Efficient Data Parallelization for Multi-Dimensional FFTs | |
Li et al. | Automatic generation of high-performance fft kernels on arm and x86 cpus | |
CN106933777B (zh) | 基于国产申威26010处理器的基2一维fft的高性能实现方法 | |
Barrachina et al. | Efficient and portable GEMM-based convolution operators for deep neural network training on multicore processors | |
Huang et al. | NUMA-aware FFT-based convolution on ARMv8 many-core CPUs | |
US20240232281A1 (en) | Method, Apparatus, and Device for Performing FFT | |
Takahashi | Implementation of parallel 1-D FFT on GPU clusters | |
DE102023105572A1 (de) | Effiziente Matrixmultiplikation und -addition mit einer Gruppe von Warps | |
Ivutin et al. | Design efficient schemes of applied algorithms parallelization based on semantic Petri-Markov net | |
Ploskas et al. | A computational comparison of scaling techniques for linear optimization problems on a graphical processing unit | |
Lee et al. | Large‐scale 3D fast Fourier transform computation on a GPU | |
Wang et al. | A novel parallel algorithm for sparse tensor matrix chain multiplication via tcu-acceleration | |
Takahashi | A parallel 1-D FFT algorithm for the Hitachi SR8000 | |
da Silva et al. | Exploring data streaming to improve 3d FFT implementation on multiple GPUs |
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 |