论文部分内容阅读
现代数字信号处理系统中,经常需要将数字信号在不同采样率之间进行转换,以满足不同情况的需求,这就是重采样技术。随着信息技术的快速发展,数字信号的处理、编码、传输和存储等工作量越来越大。如何快速地对大量数字信号进行重采样处理,已经成为当今数字信号处理领域的重要问题之一。GPU (Graphics Processing Unit,图形处理器)的快速发展为这个问题带来了一个新的解决方案。近年来,由于芯片集成技术的发展,以及并行计算体系结构的创新性发展,GPU的计算能力已经达到了同时期CPU(Central Processing Unit,中央处理器)的百倍,甚至更多。因此,GPU为高性能计算提供了一个高效的平台,基于GPU的并行算法的研究也成了高性能计算领域的热点问题。由于传统GPU的硬件结构限制,编程人员很难有效地利用GPU的资源进行通用计算,而英伟达(NVIDIA)公司推出的CUDA (Compute Unified Device Architecture,统一计算设备架构)则改变了这一现状。CUDA可以利用GPU强大的计算能力进行通用计算,并且以C语言为基础,对C语言进行了扩展,使编程人员能够非常容易地编写可以在GPU上运行的程序。本文从研究CUDA平台的架构出发,深入探讨了如何利用CUDA平台实现了重采样算法的并行化,使其拥有比基于CPU的串行算法更高的执行效率。本文的主要工作包括:(1)利用Sinc插值的方法实现了基于CPU的重采样串行算法。(2)将串行算法中可以并行的部分进行归纳以及改写,然后放到GPU上执行,实现对重采样算法的并行化。(3)利用Matlab编写重采样程序,对串行算法和并行算法的计算结果做正确性验证,并将串行算法与并行算法的执行时间进行对比实验。实验结果表明,基于GPU的重采样并行算法所消耗的时间要远远低于基于CPU的串行算法。最后,根据实验结果,指出在GPU上实现高性能并行计算的瓶颈,并给出一些对应的优化策略。