APP下载

一种基于Kepler架构GPU的通信仿真加速方法

2015-02-28韩秉君黄诗铭

电信科学 2015年10期
关键词:运算量线程链路

韩秉君,黄诗铭,杜 滢

(1.中国信息通信研究院 北京100191;2.北京邮电大学 北京100876)

1 引言

随着通信领域的研究开始从4G技术向5G技术过渡,以大规模多天线阵列、超密集网络以及大带宽毫米波通信等为代表的一系列技术成为未来研究的重点。这些技术从天线数、用户数、总带宽和复杂度等维度将系统级仿真的总体运算量提升了1~3个数量级,进而给系统级仿真平台的搭建工作带来巨大挑战。

在计算量大增的情况下,为了使仿真总时间仍能被控制在可接受的范围内,仿真加速技术也成为未来构建系统级仿真平台的必选技术。传统仿真过程的总体运算量不大,采用加速技术的仿真平台往往仅能节省数小时至数天的运算时间,却要在硬件购置、代码开发、测试校准以及平台升级等方面花费更多时间和成本,总体来看收益有限;而在4G到5G的过渡时代,随着系统级仿真总体运算量的增大,采用加速技术的仿真平台有可能节约数周甚至数月的仿真时间,从而保证在总体运算量大增的情况下依旧能将仿真时间控制在可接受的范围内,具有较高的应用价值。

通常情况下,通信仿真中存在大量可并行处理的双精度浮点运算,非常适合采用GPU(graphics processing unit,图形处理器)进行加速。而CUDA(compute unified device architecture,统一计算设备架构)作为一种能够均衡硬件设备成本、开发维护成本和运行能耗成本的GPU并行计算架构,为通信系统级仿真加速提供了一种理想的技术手段。CUDA程序采用类C++语言开发,其最新版开发工具CUDA Toolkit 7.5已经针对主流开发环境如Visual Studio 2013实现较好整合,并针对目前主流的Kepler架构GPU提 供 了 动 态 并 行[1]、Hyper-Q[2]、统 一 内 存 寻 址、CuBLAS和CuFFT等一系列编程工具和函数库,显著降低了代码开发和维护的工作量。

目前,关于使用GPU加速通信仿真平台问题,一些文章从通信模块加速和GPU加速关键技术两方面提供了具有参考性的研究结果:在通信模块加速上,参考文献[3]提出了一种针对多径信道的GPU加速方法,参考文献[4]提出了一种针对OFDM系统蒙特卡罗仿真的GPU加速方法,参考文献[5]提出了一种针对LDPC(low density parity check code,低密度奇偶校验码)编码处理的加速方法,参考文献[6]提出了一种利用英伟达公司GPU加速FFT处理模块的方法;在GPU加速关键技术上,参考文献[7]介绍了利用MPI(multi point interface,多点接口)解决多GPU系统性能的方法,参考文献[8]介绍了动态管理多核多线程GPU资源的方法。

然而,GPU硬件和软件能力在近两年取得了长足进展,而目前尚未有关于如何利用这些进展加速系统级仿真平台的研究。因此,本文提出了一种在Kepler架构显卡下利用CUDA技术加速通信仿真中信道DFT[9](discrete Fourier transform,离散傅里叶变换)处理过程的方法。该方法的主要创新点是以接收用户为依据,将整个仿真中相互交错的通信链路拆解成一系列独立的“多发送用户到单接收用户”接收束,并基于这些接收束将DFT计算量分解为对同步和数据交互要求低、易于并行处理的子任务。最后,该方法一方面利用动态并行技术实现对不同接收束不同链路计算任务的并行处理,另一方面利用线程并行技术实现了对同一链路内不同采样点的DFT计算任务的并行处理,在控制开发复杂度的前提下达到较好的并行加速效果。

2 通信链路与并行任务模型

本节主要介绍了用于加速系统级仿真DFT过程的逻辑模型。该逻辑模型的核心是将收发设备之间彼此交错的信道拆分成便于函数级并行处理的接收束结构和便于线程级并行处理的天线—频点阵状结构,从而可以综合利用不同粒度并行技术达到较理想的加速效果。

2.1 接收束与分子级并行任务

一般说来,系统级仿真过程中的信道关系可以抽象为发送设备、接收设备以及发送和接收设备之间的通信链路,如图1所示。

图1 发送设备、接收设备及通信链路

图1 中,TE1,TE2,…,TEn表示n个发送设备,RE1,RE2,…,REm表示m个接收设备,表示TEi到REj的通信链路。在仿真中,不同收发设备间的通信链路处理过程通常是相互独立的,可以并行进行;而对于某一接收设备如RE1,则需要完整收集与其相连的所有通信链路,,,…,的处理结果后,才能继续分析该设备的接收性能。基于以上分析,本文从逻辑上提出了一种接收束结构,如图2所示。

图2 接收束结构

图2 中,从接收用户角度将图1中彼此交错的通信链路分为m个接收束。其中,每个接收束包含n个发送机、1个接收机以及它们之间的n条通信链路。在实际仿真过程中,因为调度等原因,在不同仿真时刻,一个接收束内处于发送状态的发射机可能是不同的,这要求处理接收束内不同链路的并行机制应具备足够弹性,以适应子任务规模的动态变化。考虑到接收束中每一条通信链路上的处理任务还可以继续拆分为更小的可并行子任务,因此将每条链路的处理任务称为分子级子任务。按照束状结构进行拆分后,不同链路上的分子级子任务所需的输入数据往往是相互独立的,不同分子级子任务的处理过程也不涉及数据共享和交互。这意味着并行处理这些分子级子任务时可以节约因数据共享和同步而造成的时间开销,以达到更好的加速效果。

2.2 天线—频点与原子级并行任务

对于信道束Bj,其中某一链路上的处理任务又可以从逻辑上进一步拆解成图3所示的多条子径上的处理任务。图3中为发送设备TEi的p个发送天线,表示接收设备REj的q个接收天线。第r个发送天线到第s个接收天线之间的子径用表示。

图3 通信链路中的子径

其中,x[n]是时域上的N个采样点,X[k]为转化后的频域上的采样值。根据欧拉公式,可以得到:

结合式(2)和式(3)可得:

从式(3)可以看出,无论是不同子径上的X[k],还是同一子径上不同采样点的X[k],其计算过程都是彼此无关的,这意味着并行进行不同X[k]计算时不会涉及数据共享和同步问题,能够简化代码开发难度并节省较多的时间开销。每一个X[k]的计算过程很难进行更细的拆分,因此将其称为原子级子任务。

3 不同子任务的CUDA处理

本节提出了一种基于Kepler架构GPU的DFT并行加速方法。具体而言,该方法首先利用线程级并行来加速某一通信链路内不同子径及不同频域采样点的DFT计算,又利用动态并行技术将以上不同通信链路的DFT处理过程进一步并行,以提高加速效果。

3.1 天线—子载波的线程级并行处理

线程是CUDA程序处理一个任务的最基本单元,CUDA程序通过启用多个线程并行处理一个大任务中的不同部分,以实现加速效果。CUDA的线程通过grid、block和thread 3个级别进行组织[10],每个线程都可以通过其所在的3级组织编号得到自己唯一的线程编号,该编号可以是一维、二维或三维的。CUDA加速的核心原理是将一个计算任务分解成若干个子任务,并根据线程编号设计每个线程和子任务的对应关系。程序执行过程中会根据任务需要启动合适数量的线程,这些线程根据其线程编号和预设对应关系自动并行处理其所对应的子任务,以达到加速效果。

因此,将任务分解并建立线程和分解后子任务的关系,是使用CUDA加速的最核心问题。对于第2.2节描述的某一通信链路的DFT处理过程,由于其不同子径和不同采样点的DFT形式均相同,每一采样点的求取过程运算量不大,且很难再进一步分解成可以并行执行的子任务,因此非常适合采用线程级并行加速。

以图3中通信链路为例,图3中发射天线有p个,接收天线有q个,假设每个子径有v个频域采样点需要求取,则该通信链路共需要进行p×q×v次DFT运算,这些DFT运算之间没有相关性,可以并行处理。因此,启动p×q×v个线程来一次性并行处理这些DFT运算,其线程号与任务映射关系如图4所示。

图4 线程号与DFT运算的映射关系

图4 中每一矩形均表示某一个线程与其所承担DFT子任务之间的对应关系,矩形中深色部分为该线程的线程编号,采用二维编号体系,形式为(Idx_x,Idx_y);浅色部分表示该线程所承担DFT子任务的三维索引,形式为(NAT,NAR,Nk),其3个维度分别代表发送天线号、接收天线号以及频域采样点号,表示线程号为(Idx_x,Idx_y)的线程负责处理第AT个发送天线与第AR个接收天线之间第k个频域采样点上的DFT运算。其中线程编号和子任务之间的关系如式(4)所示。

其中:

按照式(4)所述的逻辑,一共启用p×q×v个线程来并行处理对应的p×q×v个DFT运算。图4中根据线程编号将不同线程排列成一个矩形阵列。处于同一行的线程表明其处理的是同一子径上不同频域采样点的DFT,前q行的线程表明其处理的是第1个发射天线到所有q个接收天线之间子径的DFT,即图3中子径的DFT。以此类推,第p×q行表示处理的是第p个发送天线到第q个接收天线的DFT任务,即图3中子径。在进行DFT任务并行处理过程中,有几个原则需要进一步解释:首先,尽管CUDA支持对线程的三维编号,本部分依然将收发天线压缩成一维,主要是考虑经过如此方式压缩后,输入输出数据都可以比较方便地采用二维矩阵存储,后继处理也可以利用MKL、CuBLAS等矩阵运算工具,可以降低开发难度;第二,没有使用快速傅里叶变换(FFT)算法,主要是考虑在系统级仿真过程中,每一个子径的时域采样点数目通常不大,一般为20~30个,而仿真最终需要用的频域采样点数目也不确定,典型的20 Mbit/s带宽的LTE系统可能有50~1200个采样点,因此采用DFT实现会更灵活一些。

3.2 不同收发链路的函数级并行

图5 动态并行和Hyper-Q技术

如图5所示,在Kepler架构下,CUDA提供了全新的动态并行和Hyper-Q技术,从而使CUDA程序能够更加便利地实现多个GPU函数之间的并行。关于动态并行,传统的CUDA程序只支持由CPU函数启动GPU函数,而在Kepler架构显卡下,动态并行技术允许一个GPU函数启动另一个GPU函数,该技术减少了CPU和GPU之间不必要的信息交互,在简化编程代码复杂度的同时提升了程序的效率。关于Hyper-Q,当使用流的形式在CPU和GPU之间复制数据时,传统架构显卡中不同流之间的数据要在硬件队列中排队,而Hyper-Q允许GPU能够同时并发执行最多32个活动的任务,并且增加了硬件队列的数量[11],从而极大提升了数据复制效率和程序的运行速度。

由以上描述可以看出,动态并行和Hyper-Q技术能够根据任务量在显卡中启动相应数量的函数,并能够较为便捷地进行CPU/GPU之间数据交互,非常适合第2.1节提出的数目不定的不同通信链路的处理过程。因此,提出了如图6所示的分子级任务并行方案。图6中,所有接收束被分成了多个批次。首先,第一批接收束的输入参数借助多个流传入GPU中;第二,GPU通过动态并行技术,并行执行第一批接收束中的所有通信链路的DFT运算,其中每个通信链路的DFT处理过程如第3.1节所述;第三,通过多流技术,将处理结果传回CPU中;最后,重复以上步骤,直到所有批次的接收束都处理完成为止。

图6 不同通信链路的并行方法

关于接收束的并行加速方案,有如下几个细节需要特别解释:首先,并行方案中之所以对接收束分批次处理,主要是因为实际测试表明,当一次并行的任务量过大时,GPU函数的处理效率会变得极低,从而拉长仿真时间。而采用分批处理,能够规避这一问题。此外,进行多批次处理,也有利于将处理后的结果及时传回,从而使CPU在GPU处理下一批接收束时能够同步处理本次返回的接收束结果。第二,仿真中采用多流的原因是:实际测试表明,通过多个流的复用可以显著节省程序中的数据复制时间。

4 加速结果与分析

本节参照典型的19小区/57扇区20 Mbit/s带宽LTE下行链路提出了如下仿真参数[12],见表1。

表1 系统仿真参数

需要强调的是,传统的仿真平台为了节省仿真时间,对通信链路的处理过程进行了简化,而本实验过程假设所有通信链路都进行DFT处理,并以此为基础研究运算总量、每批次处理数量以及所用流数目对总仿真时间的影响。

首先,对比了采用CPU、Fermi架构GPU以及Kepler架构GPU处理系统全部57×570×4×2×50≈1 300万次DFT运算的总时间,见表2。表2中的CPU运算时间是在单核单线程条件下得到的,多核CPU运算时间近似为该时间/核数。从表2中数据可以看出,本文所提出的加速方法相对于CPU大约加速300倍,相对于上一代Fermi架构GPU大约加速3倍。此外,考虑到本文所提方法代码实现更简单,因此在实际应用过程中还能进一步节省开发、测试和维护时间。

表2 DFT运算时间

第二,研究了本文所提算法的加速效果和总体运算量的关系,如图7所示。可以看出,随着运算总量的增加,GPU运算总时间近似呈线性增长;在运算量较大的情况下,进行单位次数DFT运算的时间更小,其原因主要是加速过程中CPU-GPU间的数据复制、GPU线程管理等相对固定的时间开销在大计算量情况下得到了“分摊”,这也说明本文所提出的加速方法在运算量较大的情况下加速效果会更明显。

图7 加速效果与总体运算量关系

第三,研究了1200个采样点条件下加速效果和处理批次的关系,如图8所示。可以看出,如果采用单批次处理,GPU处理完全部DFT运算大约耗时7.8 s,而改为8批次处理后,耗时降为大约1.2 s,两者相差6倍以上。该研究结果说明在使用CUDA技术加速通信仿真平台时,应将每次交给GPU的计算任务控制在合适范围内,否则可能会影响最终的加速效果。

图8 加速效果和处理批次的关系

最后,研究了加速效果和输入输出流数目的关系,如图9所示。可以看出,随着输入输出流数目的增加,运算时间呈现出明显的递减趋势。当流数超过16时,仿真时间基本稳定。该研究结果说明输入输出流的数目会对加速效果构成较大影响,应尽量选择尽可能多的流进行输入输出,以避免数据传输成为加速瓶颈。

5 结束语

图9 加速效果与输入输出流个数的关系

本文提出了一种基于Kepler架构GPU的系统级仿真DFT加速方法。该方法利用动态并行和Hyper-Q等技术,使DFT处理过程相对于单核单线程CPU程序加速300倍,具有较好的应用价值。此外,该方法中提出的从接收用户角度将加速任务分为多个接收束的思想,对于处理DFT之外的加速任务同样有着重要的参考意义。

总之,该方法为解决仿真时间随计算量增加而恶性膨胀的“仿真时间瓶颈”问题提供了切实可行的应对方向及技术手段,是保证4G/5G大规模仿真预研工作顺利开展的基础性技术。未来将基于接收束的思想,研究如何利用CUDA技术加速通信仿真中接收机信噪比计算的方法以及基于迭代容器的更加灵活的CPU、GPU接口,以构造更易用的通信仿真基础模块。

1 NVIDIA Corporation.CUDA toolkit documentation v7.5.http://docs.nvidia.com/cuda/pdf/CUDA_C_Programming_Guide.pdf,2015

2 NVIDIA Corporation.Nvidia kepler GK110 next-generation CUDA compute architecture.http://www.nvidia.com/content/PDF/kepler/NV_DS_Tesla_KCompute_Arch_May_2012_LR.pdf,2012

3 Abdelrazek A F,Kaschub M,Blankenhorn C,et al.A novel architecture using NVIDIA CUDA to speed up simulation of multi-path fast fading channels.Proceedings of the 69th IEEE Vehicular Technology Conference,Barcelona,Spain,2009

4 Laguna-Sanchez G A,Prieto-Guerrero A,Rodriguez-Colina E.Speedup simulation for OFDM over PLC channel using a multithreading GPU.Proceedings of IEEE Latin-American Conference on Communications(LATINCOM),Belem,Brazil,2011

5 Potluri S,Wang H,Bureddy D,et al.Optimizing MPI communication on multi-GPU systems using CUDA inter-process communication.Proceedings of the 26th IEEE International on Parallel and Distributed Processing Symposium Workshops &phD Forum(IPDPSW),Shanghai,China,2012:1848~1857

6 Wu J,JaJa J,Balaras E.An optimized FFT-based direct Poisson solver on CUDA GPUs.IEEE Transactions on Parallel and Distributed Systems,2014(1):550~559

7 Beermann M,Monro E,Schmalen H,et al.High speed decoding of non-binary irregular LDPC codes using GPUs.Proceedings of IEEE Workshop on Signal Processing System(SiPS),Taipei,China,2013

8 Rodriguez A,Valverde J,Torre E,et al.Dynamic management of multikernel multithread accelerators using dynamic partial reconfiguration.Proceedings of the 9th International Symposium on Reconfigurable and Communication-Cenric Systems-on-Chip(ReCoSoC),Montpellier,France,2014

9 Proakis J G.Digital Signal Processing,4th Revised Edition.London:Pearson Prentice Hall,2009:105~129

10 Noga A,Topa T.Kernel execution strategies for GPU-accelerated version of method of moments.Proceedings of the 20th International Conference on Microwaves,Radar,and Wireless Communication(MIKON),Gdansk,Poland,2014

11 Wilt N,The CUDA Handbook.Upper Saddle River:Addison-Wesley,2013

12 Bilel B R,Navid N.Cunetsim:a GPU based simulation testbed for large scale mobile networks.Proceedings of International Conference on Communications and Information Technology(ICCIT),Hammamet,Tunisia,2012

猜你喜欢

运算量线程链路
天空地一体化网络多中继链路自适应调度技术
基于C#线程实验探究
基于星间链路的导航卫星时间自主恢复策略
基于国产化环境的线程池模型研究与实现
用平面几何知识解平面解析几何题
减少运算量的途径
浅谈linux多线程协作
让抛物线动起来吧,为运算量“瘦身”
基于3G的VPDN技术在高速公路备份链路中的应用
高速光纤链路通信HSSL的设计与实现