基于浮点数压缩技术的大规模FFT实现方法及装置
未命名
08-02
阅读:100
评论:0

基于浮点数压缩技术的大规模fft实现方法及装置
技术领域
1.本发明涉及大规模fft技术领域,具体涉及一种基于浮点数压缩技术的大规模fft实现方法及装置。
背景技术:
2.快速傅里叶变换(fast fourier transform,fft)在数字信号处理、微分方程求解、图像处理和分子动力学等很多学科和科学计算领域具有重要地位和意义。目前许多重要的大规模计算应用依赖于快速傅里叶变换的高效计算,因此在超级计算机上有效地实现大规模fft是非常必要的。
3.对于大规模fft计算,其输入数据并不能完全在单个节点上计算,需要划分到多个节点上,每个节点计算自己的fft部分,然后再与其他节点进行数据交换,这就涉及节点间的任务划分问题,即区域分解策略。目前,大规模fft有两种经典的分解策略,分别为一维区域分解(slab)和二维区域分解(pencil)。二维区域分解策略在大规模集群上应用得比较普遍,可以在两个维度上同时进行划分,具有更好的可扩展性,但因每个进程上只有一维的数据,需要进行2次数据交换。
4.假设double类型三维fft的计算规模为n
x
×
ny×
nz,x维的数据连续存储,进程网格的分布为p
×
q(其中p和q分别是行进程数和列进程数),依次进行x维、y维和z维的fft计算。为了得到更好地计算性能,可以使用gpu端的硬件资源进行加速。
5.其算法具体流程描述如下:
6.(1)将数据从主机内存拷贝到设备内存(h2d);
7.(2)调用设备端double类型的软件库进行x维的fft计算;
8.(3)因每个进程要通信的数据在本地内存中是不连续存储的,需要先对数据进行
[0009]“打包”操作,将非连续存储的数据打包成连续存储的数据块来优化mpi_alltoall(v)的通信性能;
[0010]
(4)将打包后的数据由设备内存拷贝回主机内存(d2h);
[0011]
(5)每组列通信域中的进程进行mpi_alltoall(v)通信,使每个进程在本地得到y维的数据;
[0012]
(6)将通信后的数据从主机内存拷贝到设备内存(h2d);
[0013]
(7)对数据块进行“解包”操作,将数据进行重新排列,得到计算y维fft的数据;
[0014]
(8)调用设备端double类型的软件库进行y维的fft计算;
[0015]
(9)对数据进行“打包”操作,将非连续存储的数据打包成连续存储的数据块;
[0016]
(10)将打包后的数据由设备内存拷贝回主机内存(d2h);
[0017]
(11)每组行通信域中的进程进行mpi_alltoall(v)通信,使每个进程在本地得到z维的数据;
[0018]
(12)将通信后的数据从主机内存拷贝到设备内存(h2d);
[0019]
(13)调用设备端double类型的软件库进行z维的fft计算;
[0020]
(14)将z维的fft计算结果数据由设备内存拷贝回主机内存(d2h)。
[0021]
对于支持gpu间数据传输的计算系统,可以省去mpi_alltoall(v)通信前后的d2h和h2d操作,直接对设备内存中的数据进行通信。
[0022]
对于每一维度的fft计算,每个进程的计算任务可以看成多个相互独立的一维fft计算,可将其划分成多个任务块,基于stream技术实现每个任务块占用不同的硬件资源并发执行。
[0023]
对于大规模fft,进程间的数据通信成为了主要的性能瓶颈,直接影响其并行效率。传统的方式主要通过设计新的通信算法或借助重叠技术来优化性能,其往往需要依赖计算平台的硬件特性、网络拓扑特点和算法特点,但大规模fft的性能仍然受到通信瓶颈的制约,特别是在采用gpu加速器的计算平台上。
[0024]
现代计算机中,浮点数一般采用ieee制定的国际标准ieee二进制浮点数算术标准(ieee 754),用有限的连续字节和特定的格式来存储。根据ieee 754标准,浮点数将特定长度的连续字节的所有二进制位分为特定宽度的符号位(s)、阶码(exponent)和尾数(mantissa)三个部分,其中符号位(s)表示浮点数的正负,与有效位(尾数)是分开的;阶码(exponent)是指数域存储的值,并在指数的实际值上加了一个指数偏移量(exponent bias),不同精度的指数偏移量不同,值为2
k-1-1(k为存储指数的比特的长度);尾数(mantissa)通常是规格化表示,即非“0”的有效位最高位是“1”,但在ieee标准中,对最高位“1”进行隐藏并不存储。
[0025]
浮点数格式是一种数据结构,它规定了构成浮点数的各个区域以及这些区域的布局和算术意义。根据ieee 754标准,阶码(exponent)反映浮点数的表示范围,所占的位数越多,能表示的浮点数范围就越大;尾数(mantissa)反映浮点数的精度,所占的位数越多,浮点数的精度就越高。如果仅考虑浮点数的存储,则可以使用不同于ieee 754标准的浮点格式,通过自定义浮点数数据结构,实现对浮点数的表示范围和表示精度灵活和精细地控制。
[0026]
经研究,大规模fft可通过混合精度来优化通信性能。但受限于硬件资源,大多数处理器只支持符合ieee 754标准的少数浮点数数据类型,如float和double等,缺乏对任意精度浮点数的支持。另外各种精度浮点数的转换涉及尾数截断影响浮点数精度的问题。
技术实现要素:
[0027]
本发明技术解决问题:针对大规模fft中通信瓶颈问题,提供一种基于浮点数压缩技术的大规模fft实现方法及装置,通过减少通信量来减少通信时间,并提高其并行效率。
[0028]
本发明的技术内容包括:
[0029]
一种基于浮点数压缩技术的大规模fft实现方法,应用于设备端,所述方法包括:
[0030]
对第i个维度的fft计算结果进行共享指数浮点数压缩,并将压缩结果打包成第i个维度的压缩数据之后,拷贝至所述主机端;其中,所述第i个维度的压缩数据是连续存储的数据块,所述对第i个维度的fft计算结果进行共享指数浮点数压缩,包括:
[0031]
对第i个维度的fft计算结果进行非线性归一化操作,并对非线性归一化操作结果进行线性归一化操作;
[0032]
对线性归一化操作结果进行压缩;;
[0033]
从主机端获取所述第i个维度的压缩数据后,对第i个维度的压缩数据依次进行解
包和共享指数浮点数解压缩,并基于解压缩数据进行fft计算,以得到第i+1个维度的fft计算结果;其中,所述对第i个维度的压缩数据进行共享指数浮点数解压缩,包括:
[0034]
对所述第i个维度的解包数据进行解压缩;
[0035]
对解压缩数据进行反线性归一化操作,并对反线性归一化操作结果进行反非线性归一化操作;
[0036]
在i+1《n的情况下,令i=i+1,并返回至所述对第i个维度的fft计算结果进行共享指数浮点数压缩,并将第i个维度的压缩数据拷贝至所述主机端;其中,n表示fft计算的总维度;
[0037]
在i+1=n的情况下,将第i+1个维度的fft计算结果作为fft实现结果。
[0038]
进一步地,所述第i个维度的fft计算结果的浮点数数据类型包括:double类型和低精度浮点数类型;其中,所述低精度浮点数类型用于存储压缩的浮点数,每个浮点数只需存储符号位和尾数部分的内容。
[0039]
进一步地,所述第i个维度的fft计算结果进行非线性归一化操作,包括:
[0040]
判断浮点数x是否大于零;其中,所述浮点数x是第i个维度的fft计算结果对应的浮点数数组中的一元素;
[0041]
在所述浮点数x大于零的情况下,获取所述浮点数x的变形值y=log(x+1);
[0042]
在所述浮点数x不大于零的情况下,获取所述浮点数x的变形值y=-log(-x+1);
[0043]
基于所述浮点数x的变形值y,得到非线性归一化操作结果。
[0044]
进一步地,对非线性归一化操作结果进行线性归一化操作,包括:
[0045]
设置区间的边界值a和边界值b;
[0046]
计算所述变形值y的变形值其中,min表示非线性归一化操作结果中最小的变形值y,max表示非线性归一化操作结果中最大的变形值y;
[0047]
基于所有变形值y的变形值x
′
,得到线性归一化操作结果。
[0048]
进一步地,所述对解包数据进行反线性归一化操作,包括:
[0049]
获取区间的边界值a和边界值b;
[0050]
计算所述变形值x
′
的变形值其中,min表示非线性归一化操作结果中最小的变形值y,max表示非线性归一化操作结果中最大的变形值y;
[0051]
基于所有变形值x
′
的变形值y
″
,得到反线性归一化操作结果。
[0052]
进一步地,所述对fft计算结果进行反非线性归一化操作,包括:
[0053]
判断一变形值y
″
是否大于零;
[0054]
在所述变形值y
″
大于零的情况下,获取所述变形值y
″
的变形值x
″
=ey″-1;
[0055]
在所述变形值y
″
不大于零的情况下,获取所述变形值y
″
的变形值x
″
=1-e-y
″
;
[0056]
基于所述变形值y
″
的变形值x
″
,得到所述解压缩数据。
[0057]
一种基于浮点数压缩技术的大规模fft实现装置,所述装置包括:
[0058]
压缩模块,用于对第i个维度的fft计算结果进行共享指数浮点数压缩,并将压缩结果打包成第i个维度的压缩数据之后,拷贝至所述主机端;其中,所述第i个维度的压缩数据是连续存储的数据块,所述对第i个维度的fft计算结果进行共享指数浮点数压缩,包括:
[0059]
对第i个维度的fft计算结果进行非线性归一化操作,并对非线性归一化操作结果
进行线性归一化操作;
[0060]
对线性归一化操作结果进行压缩;
[0061]
解压缩模块,用于从主机端获取所述第i个维度的压缩数据后,对第i个维度的压缩数据依次进行解包和共享指数浮点数解压缩,并基于解压缩数据进行fft计算,以得到第i+1个维度的fft计算结果;其中,所述对第i个维度的压缩数据进行共享指数浮点数解压缩,包括:
[0062]
对所述第i个维度的解包数据进行解压缩;
[0063]
对解压缩数据进行反线性归一化操作,并对反线性归一化操作结果进行反非线性归一化操作;
[0064]
输出模块,用于在i+1《n的情况下,令i=i+1,并返回至所述对第i个维度的fft计算结果进行共享指数浮点数压缩,并将第i个维度的压缩数据拷贝至所述主机端;在i+1=n的情况下,将第i+1个维度的fft计算结果作为fft实现结果;其中,n表示fft计算的总维度。
[0065]
一种计算机装置,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述任一项所述方法的指令。
[0066]
一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现上述任一项所述的方法。
[0067]
本发明与现有的double精度大规模fft相比,至少具有以下优势:
[0068]
(1)本发明基于共享指数浮点数压缩技术,通过减少通信量来优化大规模fft的通信,提升大规模fft的计算性能。以时间表示fft计算性能为例,double精度与采用共享指数浮点数压缩技术的6字节浮点数进行混合精度fft计算的计算性能相比于double精度的计算性能,其平均加速比为1.23;double精度与采用共享指数浮点数压缩技术的4字节浮点数进行混合精度fft计算的计算性能相比于double精度的计算性能,其平均加速比为1.62。
[0069]
(2)本发明基于共享指数浮点数压缩技术,在存储浮点数时,通过占用浮点数的符号位和指数部分来保留更多的尾数,提升大规模fft的计算精度。double精度与采用共享指数浮点数压缩技术的4字节浮点数进行混合精度fft计算的计算精度优于double精度与float精度进行混合精度fft计算的计算精度,double精度与采用共享指数浮点数压缩技术的6字节浮点数进行混合精度fft计算的计算精度能达到10-14
。
附图说明
[0070]
图1是基于浮点数压缩技术的大规模三维fft的计算框架。
[0071]
图2是基于浮点数压缩技术的大规模三维fft的计算性能。
[0072]
图3是基于浮点数压缩技术的大规模三维fft的计算精度。
具体实施方式
[0073]
下面结合附图及实施例对本发明进行详细说明。
[0074]
本发明的技术方案为利用混合精度优化技术来优化大规模fft中的通信性能,具体技术方案是通过自定义浮点数数据结构,利用一种共享指数浮点数压缩技术,实现对浮点数进行压缩存储,并采用双重归一化技术来提升精度。本发明研究将double类型浮点数
与低精度类型的浮点数进行混合精度计算,且假设低精度的浮点数占用m(m《sizeof(double))个字节。
[0075]
浮点数的二进制存储中,尾数部分保留了浮点数的有效值,其存储的尾数越多代表浮点数的精度越高,为了保留更多的尾数,本发明提出一种浮点数压缩技术来压缩浮点数,多个浮点数共享一个指数,每个浮点数只需存储尾数部分的内容。每个浮点数通过占用符号位和指数部分来保留更多的尾数,进一步提高浮点数精度。
[0076]
在浮点数的二进制存储中,尾数的表示范围为1.0≤1+mantissa《2.0,如果将浮点数映射到[1.0,2.0)区间,即可省去符号位和指数部分,所有二进制位都可用于存储尾数部分。在大规模fft中,不管是原始输入数据还是中间的计算结果都是浮点数,可通过min-max scaling线性归一化的变形方式,将这些浮点数映射到[a,b](1.0≤a&&b《2.0)区间,实现对浮点数的压缩存储。另外,对于多维大规模fft,每个维度的fft计算本质上是一种累加操作,即使原始输入数据的差距很小,但是随着各维fft的计算,其fft变换结果的数据差距会很大,并且同时包含正负数据,数据间隔的增大导致min-max scaling线性归一化方法引入舍入误差,直接导致混合精度大规模fft计算精度的损失,并随着计算规模的增大,其损失的计算精度也会增大。
[0077]
针对上述问题,本发明根据大规模fft算法特点以及实验平台的体系结构特点,设计和实现了基于浮点数压缩技术的大规模fft实现方法。其中,本发明提出一种双重归一化技术,并利用双重归一化技术来实现共享指数浮点数压缩技术。双重归一化技术是指同时采用线性归一化和非线性归一化进行归一化操作,其中线性归一化用于浮点数的区间映射,实现浮点数的压缩存储;非线性归一化用于减小浮点数的数据间隔。对于压缩操作,先进行非线性归一化,再进行线性归一化,其中非线性归一化选取“log”函数的变形方式,线性归一化选取min-max scaling的变形方式。具体的转换公式如公式(1)所示:
[0078][0079]
对于解压缩操作,先进行反线性归一化,再进行反非线性归一化,其中反线性归一化选取min-max scaling-1
方式,反非线性归一化选取“exp”函数的变形方式,具体的转换公式如公式(2)所示:
[0080][0081]
其中,min表示所有浮点数中的最小值,max表示所有浮点数中的最大值。从公式(1)和(2)中可知,之间的相互转换可对应浮点数的压缩和解压缩操作。
[0082]
下面以大规模三维fft的异构众核计算为例,对本发明进行详细说明。图1中清晰地表示了主机端和设备端各自负责的任务。主机端主要负责任务启动、初始化、内存分配和mpi通信等操作,设备端负责所有核心计算,具体实施方式如下:
[0083]
(1)将数据从主机内存拷贝到设备内存(h2d),其浮点数的数据类型为double;
[0084]
(2)调用设备端double类型的软件库进行x维的fft计算;
[0085]
(3)对x维的fft计算结果数据进行“log”函数非线性归一化操作,将所有浮点数的数据间隔映射到较小的区间;
[0086]
其中,本实施例的“log”函数非线性归一化操作包括:
[0087]
a、针对x维的fft计算结果数据对应的浮点数数组中的一元素x,判断浮点数x是否大于零;
[0088]
b、在浮点数x大于零的情况下,获取浮点数x的变形值y=log(x+1);
[0089]
c、在浮点数x不大于零的情况下,获取浮点数x的变形值y=-log(-x+1);
[0090]
d、基于浮点数x的变形值y,得到非线性归一化操作结果。
[0091]
(4)对“log”函数操作后的数据进行“getminmax”操作,即分别找出数据块中最小的和最大的浮点数;
[0092]
(5)对“log”函数操作后的数据进行“min-max scaling”线性归一化操作,将浮点数映射到[a,b](1.0≤a&&b《2.0)区间,并将double类型的浮点数压缩成采用共享指数浮点数压缩技术的m字节浮点数,其阶码部分和符号位都用于存储尾数(图中用“d2bytem-e0”代表),最后进行“打包”操作,将非连续存储的数据打包成连续存储的数据块;
[0093]
其中,本实施例的“min-max scaling”线性归一化操作包括:
[0094]
a、设置区间的边界值a和边界值b;
[0095]
b、计算步骤(3)得到的变形值y的变形值其中,min表示非线性归一化操作结果中最小的变形值y,max表示非线性归一化操作结果中最大的变形值y;
[0096]
c、基于所有变形值y的变形值x
′
,得到线性归一化操作结果。
[0097]
(6)将打包后的数据由设备内存拷贝回主机内存(d2h),其浮点数的数据类型为采用共享指数浮点数压缩技术的m字节浮点数,其压缩率为8/m,减少了数据传输量;
[0098]
(7)每组列通信域中的进程进行mpi_alltoall(v)通信,使每个进程在本地得到y维的数据,其通信的浮点数的数据类型为采用共享指数浮点数压缩技术的m字节浮点数,其压缩率为8/m,减少了通信量;
[0099]
(8)将通信后的数据从主机内存拷贝到设备内存(h2d),其浮点数的数据类型为采用共享指数浮点数压缩技术的m字节浮点数,其压缩率为8/m,减少了数据传输量;
[0100]
(9)对数据块进行“解包”操作,将数据进行重新排列,并将采用共享指数浮点数压缩技术的m字节浮点数解压缩成double类型的浮点数(图中用“bytem-e02d”代表),并对数据进行“min-max scaling-1”反线性归一化操作;
[0101]
其中,本实施例的“min-max scaling-1”反线性归一化操作包括:
[0102]
a、获取区间的边界值a和边界值b;
[0103]
b、计算步骤(5)中变形值x
′
的变形值其中,min表示步骤(3)中非线性一化操作结果中最小的变形值y,max表示步骤(3)中非线性归一化操作结果中最大的变形值y;
[0104]
c、基于所有变形值x
′
的变形值y
″
,得到反线性归一化操作结果。
[0105]
(10)对(9)中的数据进行“exp”函数反非线性归一化操作,将所有浮点数映射成真实值,得到计算y维fft的数据;
[0106]
其中,本实施例的“exp”函数反非线性归一化操作包括:
[0107]
a、判断步骤(9)中的变形值y
″
是否大于零;
[0108]
b、在变形值y
″
大于零的情况下,获取所述变形值y
″
的变形值x
″
=ey
″‑
1;
[0109]
c、在变形值y
″
不大于零的情况下,获取所述变形值y
″
的变形值x
″
=1-e-y
″
;
[0110]
d、基于所有变形值x
″
,得到所述解压缩数据(y维fft的数据)。
[0111]
(11)调用设备端double类型的软件库进行y维的fft计算;
[0112]
(12)对y维的fft计算结果数据进行“log”函数非线性归一化操作,将所有浮点数的数据间隔映射到较小的区间;
[0113]
(13)对“log”函数操作后的数据进行“getminmax”操作,即分别找出数据块中最小的和最大的浮点数;
[0114]
(14)对“log”函数操作后的数据进行“min-maxscaling”线性归一化操作,将浮点数映射到[a,b](1.0≤a&&b《2.0)区间,并将double类型的浮点数压缩成采用共享指数浮点数压缩技术的m字节浮点数,最后进行“打包”操作,将非连续存储的数据打包成连续存储的数据块;
[0115]
(15)将打包后的数据由设备内存拷贝回主机内存(d2h),其浮点数的数据类型为采用共享指数浮点数压缩技术的m字节浮点数,其压缩率为8/m,减少了数据传输量;
[0116]
(16)每组行通信域中的进程进行mpi_alltoall(v)通信,使每个进程在本地得到z维的数据,其通信的浮点数的数据类型为采用共享指数浮点数压缩技术的m字节浮点数,其压缩率为8/m,减少了通信量;
[0117]
(17)将通信后的数据从主机内存拷贝到设备内存(h2d),其浮点数的数据类型为采用共享指数浮点数压缩技术的m字节浮点数,其压缩率为8/m,减少了数据传输量;
[0118]
(18)将采用共享指数浮点数压缩技术的m字节浮点数解压缩成double类型的浮点数,并对数据进行“min-max scaling-1”反线性归一化操作;
[0119]
(19)对(18)中的数据进行“exp”函数反非线性归一化操作,将所有浮点数映射成真实值,得到计算z维fft的数据;
[0120]
(20)调用设备端double类型的软件库进行z维的fft计算;
[0121]
(21)将z维的fft计算结果数据由设备内存拷贝回主机内存(d2h)。
[0122]
实验数据
[0123]
本发明基于“东方”超级计算机系统进行验证,将共享指数浮点数压缩技术应用于大规模fft中,优化大规模fft的通信性能。
[0124]
本测试包含计算性能和计算精度两方面的测试。在计算性能的测试中,选取了7组不同的数据规模和进程数进行实验,测试了16进程到1024进程的计算性能。所有数据均是由程序随机产生的(0,1)区间的浮点数。在计算精度的测试中,选取了12组不同的数据规模和进程数进行实验,测试了4进程到1024进程的计算精度。其中计算精度的计算采用公式||y
′‑
y||
rms
/||y||
rms
,其中,y
′
表示混合精度的大规模fft,y表示double精度的大规模fft,均方根rms的计算公式为
[0125]
申请人分别测试了double精度、double精度与采用共享指数浮点数压缩技术的6字节浮点数进行混合精度fft计算、double精度与采用共享指数浮点数压缩技术的4字节浮点数进行混合精度fft计算、double精度与float精度进行混合精度fft计算的大规模fft的计算性能和计算精度。
[0126]
计算性能的测试结果详见图2,从图中可以看出,double精度与采用共享指数浮点数压缩技术的6字节浮点数进行混合精度fft计算的计算性能相比于double精度的计算性能,其平均加速比为1.23;double精度与采用共享指数浮点数压缩技术的4字节浮点数进行混合精度fft计算的计算性能相比于double精度的计算性能,其平均加速比为1.62。
[0127]
计算精度的测试结果详见图3,从图中可以看出,double精度与采用共享指数浮点数压缩技术的4字节浮点数进行混合精度fft计算的计算精度优于double精度与float精度进行混合精度fft计算的计算精度,double精度与采用共享指数浮点数压缩技术的6字节浮点数进行混合精度fft计算的计算精度能达到10-14
。
[0128]
由此可清晰表明,本发明可以通过减少通信量来减少通信时间,并提高其并行效率。
[0129]
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
技术特征:
1.一种基于浮点数压缩技术的大规模fft实现方法,应用于设备端,其特征在于,所述方法包括:对第i个维度的fft计算结果进行共享指数浮点数压缩,并将压缩结果打包成第i个维度的压缩数据之后,拷贝至所述主机端;其中,所述第i个维度的压缩数据是连续存储的数据块,所述对第i个维度的fft计算结果进行共享指数浮点数压缩,包括:对第i个维度的fft计算结果进行非线性归一化操作,并对非线性归一化操作结果进行线性归一化操作;对线性归一化操作结果进行压缩;;从主机端获取所述第i个维度的压缩数据后,对第i个维度的压缩数据依次进行解包和共享指数浮点数解压缩,并基于解压缩数据进行fft计算,以得到第i+1个维度的fft计算结果;其中,所述对第i个维度的压缩数据进行共享指数浮点数解压缩,包括:对所述第i个维度的解包数据进行解压缩;对解压缩数据进行反线性归一化操作,并对反线性归一化操作结果进行反非线性归一化操作;在i+1<n的情况下,令i=i+1,并返回至所述对第i个维度的fft计算结果进行共享指数浮点数压缩,并将第i个维度的压缩数据拷贝至所述主机端;其中,n表示fft计算的总维度;在i+1=n的情况下,将第i+1个维度的fft计算结果作为fft实现结果。2.如权利要求1所述的方法,其特征在于,所述第i个维度的fft计算结果的浮点数数据类型包括:double类型和低精度浮点数类型;其中,所述低精度浮点数类型用于存储压缩的浮点数,每个浮点数只需存储符号位和尾数部分的内容。3.如权利要求1所述的方法,其特征在于,所述第i个维度的fft计算结果进行非线性归一化操作,包括:判断浮点数x是否大于零;其中,所述浮点数x是第i个维度的fft计算结果对应的浮点数数组中的一元素;在所述浮点数x大于零的情况下,获取所述浮点数x的变形值y=log(x+1);在所述浮点数x不大于零的情况下,获取所述浮点数x的变形值y=-log(-x+1);基于所述浮点数x的变形值y,得到非线性归一化操作结果。4.如权利要求3所述的方法,其特征在于,对非线性归一化操作结果进行线性归一化操作,包括:设置区间的边界值a和边界值b;计算所述变形值y的变形值其中,min表示非线性归一化操作结果中最小的变形值y,max表示非线性归一化操作结果中最大的变形值y;基于所有变形值y的变形值x
′
,得到线性归一化操作结果。5.如权利要求4所述的方法,其特征在于,所述对解包数据进行反线性归一化操作,包括:获取区间的边界值a和边界值b;计算所述变形值x
′
的变形值其中,min表示非线性归
一化操作结果中最小的变形值y,max表示非线性归一化操作结果中最大的变形值y;基于所有变形值x
′
的变形值y
″
,得到反线性归一化操作结果。6.如权利要求5所述的方法,其特征在于,所述对fft计算结果进行反非线性归一化操作,包括:判断一变形值y
″
是否大于零;在所述变形值y
″
大于零的情况下,获取所述变形值y
″
的变形值x
″
=ey
″‑
1;在所述变形值y
″
不大于零的情况下,获取所述变形值y
″
的变形值x
″
=1-e-y
″
;基于所述变形值y
″
的变形值x
″
,得到所述解压缩数据。7.一种基于浮点数压缩技术的大规模fft实现装置,其特征在于,所述装置包括:压缩模块,用于对第i个维度的fft计算结果进行共享指数浮点数压缩,并将压缩结果打包成第i个维度的压缩数据之后,拷贝至所述主机端;其中,所述第i个维度的压缩数据是连续存储的数据块,所述对第i个维度的fft计算结果进行共享指数浮点数压缩,包括:对第i个维度的fft计算结果进行非线性归一化操作,并对非线性归一化操作结果进行线性归一化操作;对线性归一化操作结果进行压缩;解压缩模块,用于从主机端获取所述第i个维度的压缩数据后,对第i个维度的压缩数据依次进行解包和共享指数浮点数解压缩,并基于解压缩数据进行fft计算,以得到第i+1个维度的fft计算结果;其中,所述对第i个维度的压缩数据进行共享指数浮点数解压缩,包括:对所述第i个维度的解包数据进行解压缩;对解压缩数据进行反线性归一化操作,并对反线性归一化操作结果进行反非线性归一化操作;输出模块,用于在i+1<n的情况下,令i=i+1,并返回至所述对第i个维度的fft计算结果进行共享指数浮点数压缩,并将第i个维度的压缩数据拷贝至所述主机端;在i+1=n的情况下,将第i+1个维度的fft计算结果作为fft实现结果;其中,n表示fft计算的总维度。8.一种计算机装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~6中任一项所述方法的指令。9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~6中任一项所述的方法。
技术总结
本公开涉及一种基于浮点数压缩技术的大规模FFT实现方法及装置,所述方法包括:对第i个维度的FFT计算结果进行共享指数浮点数压缩,并将压缩结果打包成第i个维度的压缩数据之后,拷贝至所述主机端;获取所述第i个维度的压缩数据后,对第i个维度的压缩数据依次进行解包和共享指数浮点数解压缩,并基于解压缩数据进行FFT计算,以得到第i+1个维度的FFT计算结果。本公开在压缩数据和解压缩数据时,在利用双重归一化技术来实现共享指数浮点数压缩技术,从而通过减少通信量来减少通信时间,并提高其并行效率。提高其并行效率。提高其并行效率。
技术研发人员:赵玉文 刘芳芳 马文静 李会元 彭远驰
受保护的技术使用者:中国科学院软件研究所
技术研发日:2023.04.28
技术公布日:2023/8/1
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/