前言:想要写出一篇引人入胜的文章?我们特意为您整理了计算机网络下小波变换的问题研讨范文,希望能给你带来灵感和参考,敬请阅读。
经试验证实,在CUDA背景下,可有效提高并行小波算法的计算速度,以及对小波变换谐波的分析速度,进而提高了实际应用价值。2007年,nVIDIA公司公开了此种CUDA并行小波分解算法,该项技术同原本的仅借助于CUP进行计算的计算方式优势明显,其可对标准C语言进行扩展,省略了将计算映射到图形应用程序接口才能计算的步骤和工作,如此节省计算时间的同时,也为其深入研发提高了基础保证,为实现低成本、高性能、易维护的数据并行处理目的打下了坚实的基础。
Mallat小波分解算法的最关键问题,即将待处理的数据和滤波器进行卷积。一般情况下,小波变换中所使用的滤波器系数相对较少,通常为紧支撑函数,所以在卷积计算时,只需要对原序列中的子序列进行相应计算即可,这就为分组计算的实现创造了条件。鉴于上述情况,在CUDA环境中,仅从数据分组和并行化卷积和二次抽取即可实现Mallat的并行计算。
1将处理数据分组
在CUDA中会使用多的种类型存储器,比如传统的共享存储器,以及以往不曾使用,或使用率非常低的全局存储器。传统的共享存储器具有运算速度快的特点,但其容量却十分有限,在对数据进行全局读取计算时极易造成性能损失。为弥补这一缺点,使用容量大,但速度相对较慢的全局存储器可有效弥补共享存储器的不足,故研究不但较好地利用了共享存储器读写速度快的优点,而且采用的数据分组处理方式避免了性能损失的发生。在计算时,先将主机存储器中的处理数据载入显卡中的全局存储器中,再将每512个处理数据序列分成一组(不包含第一组),且每组开头重叠保留前组末端个(N—2)数据,N为滤波器系数个数,另外对边界进行零延拓。在卷积计算时,程序需要同时运行N个Block对数据进行处理。而每个Block中又要同时运行512个线程,故每次可处理[512—(NFilter—2)]N个数据。在计算时,有时会发生数据分组数大于Block数的情况,此时所有数据无法一次完成处理,这种情况下第一批数据处理后,按上述步骤重复处理即可。另外,通常情况下滤波器系数少,且要反复使用,所以为提高读取速度可载入共享内存。
2并行计算卷积和二次抽取
并行计算第N组数据卷积的计算原理如下图所示,另外为减少计算次数、提高计算速度可同时进行二次抽取。下面以滤波器系数是4个为例来阐述计算原理。组数据并行卷积原理如下图所示。因为每组开头重叠保留前组末端个(N—2)数据,所以要向前组重叠保留2个数据,如图中的数据序号-1和-2。对该组数据计算并进行二抽取,计算起于0序号,如此仅需用奇数序号T3、T5、T7、……线程计算卷积即可,如图中箭头。而且每个线程只需进行N次乘法及(N—1)次加法即可实现细粒度的并行计算,有效抑制了单个CPU处理器性能弱的缺陷。
在CUDA技术背景下的并行小波分解算法技术,可有效提高谐波分析的计算速度,以及小波理论的应用性。而且,该算法的线性加速能力大大节省了用户的设备支出成本。本文实现的计算机网络下的并行小波算法通过实验证明通用性较强,对小波包等形式的小波同样有效,因此值得推广使用。(本文作者:熊庆帅 单位:曲阜师范大学日照校区计算机科学学院网络工程系)