一种系统性能测试方法和装置与流程

文档序号:11846013阅读:287来源:国知局
一种系统性能测试方法和装置与流程

本发明涉及通信技术领域,特别涉及一种系统性能测试方法和装置。



背景技术:

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

作为对仿真总体运算量增加的应对措施,仿真加速技术也逐步成为未来构建系统级仿真平台的必选技术。传统仿真过程的总体运算量不大,采用加速技术的仿真平台往往仅能节省数小时至数天的运算时间,却要在硬件购置、代码开发、测试校准以及平台升级等方面花费更多时间和成本。



技术实现要素:

有鉴于此,本申请提供一种系统性能测试方法和装置,以解决性能测试速度低的问题。

为解决上述技术问题,本申请的技术方案是这样实现的:

一种系统性能测试方法,该方法包括:

获取所述m个接收设备和n个发送设备之间的m×n条通信链路用于进行性能测试处理所需的数据;所述用于进行性能测试处理所需的数据包括:预设使用GPU进行的性能测试处理所需的数据和预设使用CPU进行的性能测试处理所需的数据;其中,m和n为大于0的整数;

通过CPU以接收束结构为单元将每条通信链路对应的预设使用GPU进行的 性能测试处理所需的数据,通过多流传输的方式分批传输给GPU;所述接收束结构包括1个接收设备和n个发送设备之间的n条通信链路;

通过GPU将接收到的各批次的以接收束结构为单元的数据划分成为该接收束结构中的n条通信链路对应的n份数据,并针对所述n份数据并行进行性能测试处理;当针对任一批次的所有数据处理完成时,将针对该批次的所有数据的处理结果返回CPU;

通过CPU将GPU返回的任一批次的所有数据的处理结果,以及预设使用CPU进行的性能测试处理所需的数据进行性能测试处理。

由上面的技术方案可知,本申请中将系统性能的测试任务划分为多发送设备到单接收设备的接收束结构,并利用GPU同时处理一个或多个接收束结构为单元的数据,以使针对一个接收束结构单元对应的数据被同时返回CPU,能够使CPU针对该接收束结构单元对应的接收设备进行下一步相关性能处理。上述方法能够加快系统性能测试的速度。

附图说明

图1为本申请实施例中模拟的通信系统示意图;

图2为针对RE1的接收束结构示意图;

图3为本申请实施例中系统性能测试流程示意图;

图4为本申请具体实施例中不同通信链路对应的数据进行并行处理的示意图;

图5为本申请实施例中针对一条通信链路中的子链路示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。

本申请具体实施例中提供一种系统性能的测试方法,用于进行系统性能测试的设备,如服务器,PC机等。

参见图1,图1为本申请实施例中模拟的通信系统示意图。图1中TE1,TE2,…,TEn表示n个发送设备,RE1,RE2,…,REm表示m个接收设备,每个RE均可接收各TE发送的信号,每个TE均可向各RE发送信号,因此,RE和TE之间存在m×n个通信链路,以RE1为例,RE1到各TE的通信链路分别为:

该设备以接收束结构为单元划分m个接收设备和n个发送设备之间的m×n条通信链路,所述接收束结构包括1个接收设备和n个发送设备之间的n条通信链路。在发送m×n条通信链路对应的用于性能测试的相关数据时,可以使用n个接收束结构单元发送。其中,m和n为大于0的整数。

仍以图1中的RE1为例,参见图2,图2为承载RE1对应的通信链路的接收束结构的示意图。使用图2的结构发送RE1对应的通信链路对应的用于进行性能测试的数据时,包含了RE1对应的n条通信链路对应的数据,对于其他接收设备同样使用图2中的束状结构,只是承载的数据不同而已。

本申请提供的系统系能测试方法,可以应用于仿真系统的环境中,也可以应用于真实的系统环境中。

如果是真实的系统环境,直接获取所述m个接收设备和n个发送设备之间的m×n条通信链路用于进行性能测试处理所需的数据;如果是仿真系统环境,则本申请具体实现时,先配置m个接收设备和n个发送设备,用于模拟实际应用中m个接收设备和n个发送设备的通信,再获取所述m个接收设备和n个发送设备之间的m×n条通信链路用于进行性能测试处理所需的数据。

本申请具体实施例中针对一个系统的系统性能测试处理分成两部分处理,预设使用图形处理器(GPU)进行的性能测试处理由GPU实现完成,预设使用中央处理器(CPU)进行的性能测试处理由CPU实现完成。

因此,获取的进行性能测试所需的数据包括:预设使用GPU进行的性能测试处理所需的数据和预设使用CPU进行的性能测试处理所需的数据。

在具体应用中,实施者可以将能够进行大规模进行并行计算的性能测试处 理预设为使用GPU进行的性能测试处理,如计算信道大尺度衰落参数,计算信道小尺度衰落参数,计算接收机收到的某发射机信号强度,计算接收机的信干噪比(SINR),计算接收机的误包率或误码率等;其他性能测试,如逻辑处理相关的计算:处理系统的资源调度,处理系统的重传过程,关闭或开启某一发射机或接收机,接收机选择主服务基站等,即不适合进行大规模并行计算的性能测试处理预设为使用CPU进行的性能测试处理。

下面结合附图,详细说明本申请具体实施例中如何实现系统性能测试。

参见图3,图3为本申请实施例中系统性能测试流程示意图。具体步骤为:

步骤301,设备获取所述m个接收设备和n个发送设备之间的m×n条通信链路用于进行性能测试处理所需的数据。

步骤302,该设备通过CPU以接收束结构为单元将每条通信链路对应的预设使用GPU进行的性能测试处理所需的数据,通过多流传输的方式分批传输给GPU。

所述接收束结构包括1个接收设备和n个发送设备之间的n条通信链路。

在Kepler架构下,CUDA提供了全新的动态并行和Hyper-Q技术,从而使CUDA程序能够更加便利的实现多个GPU函数之间的并行。关于动态并行,简单的讲,传统的CUDA程序只支持由CPU函数启动GPU函数,而在Kepler架构显卡下,动态并行技术允许一个GPU函数启动另一个GPU函数,该技术减少了CPU和GPU之间不必要的信息交互,在简化编程代码复杂度的同时提升了程序的效率。

关于Hyper-Q,简单的讲,在使用流的形式在CPU和GPU之间拷贝数据时,传统架构显卡中不同流之间的数据要在硬件队列中排队,而Hyper-Q允许GPU能够同时并发执行最多32个活动的任务,并且增加了硬件队列的数量,从而极大提升了数据拷贝效率和程序的运行速度。

因此实现本申请的具体实施例时,可以使用Kepler GPU,但是本申请对此并不做限制。

步骤302实现时,每个流传输的接收束结构单元的个数为预设值,所述预设 值根据GPU的性能确定。每批次传输的流的个数也由CPU个数、GPU个数,以及GPU性能确定。无论设备支持几个CPU,几个GPU,针对一个CPU和一个GPU之间流的传输,根据该GPU的性能确定。

步骤303,该设备通过GPU将接收到的各批次的以接收束结构为单元的数据划分成为该接收束结构中的n条通信链路对应的n份数据,并针对所述n份数据并行进行性能测试处理;当针对任一批次的所有数据处理完成时,将针对该批次的所有数据的处理结果返回CPU。

GPU接收到1批次发送的流时,将该批次的流中的以接收束结构为单元的数据划分为n份数据,每份数据相当于该接收束结构对应的接收设备与其中一个发送设备之间的通信链路对应的数据。

各CPU可以为同一CPU,也可以为不同CPU,GPU可以为同一GPU,也可以为不同GPU,本申请具体实施例中不限制CPU和GPU的个数。

如果是一个GPU,该GPU串行处理各批次流;如果多个GPU,各GPU分别串行执行自身接收到的流。

以一个CPU向一个GPU发送一批次的流为例,参见图4,图4为本申请具体实施例中不同通信链路对应的数据进行并行处理的示意图。图4中该批次流发送了5个接收束结构单元,且n为10,即共10个发送设备,则划分后的通信链路对应50份数据。针对这50份数据进行并行处理。

当这50份数据均处理结束时,将处理结果一同发送给CPU,继续进行相关处理。

当通过GPU对任一通信链路上的数据进行预设使用GPU进行的性能测试处理包括DFT计算时,针对该通信链路上的数据启动p×q×v个线程并行进行DFT计算,p为该通信链路对应的发送设备当前发送信号的天线的天线数,q为该通信链路对应的接收设备当前接收信号的天线的天线数,v为针对该通信链路上的信号的频域的采样点的个数。

该设备为当前发送设备上发送信号的天线分配序列号;为当前接收设备上接收信号的天线分配序列号;

当针对启动的每个线程使用二维索引,针对每个DFT计算使用三维索引时,若线程索引为(Idx_x,Idx_y),则该线程索引对应的DFT计算索引(NAT,NAR,Nk);

其中,NAT为发送设备的发送天线的序列号,NAR为接收设备的接收天线的序列号,Nk为频域采样点的编号。

针对线程索引与DFT计算索引的对应关系,本申请还提出如下映射方式:

若线程索引为(Idx_x,Idx_y),则该线程索引对应的DFT计算索引(NAT,NAR,Nk);

其中,NAT为发送设备的发送天线的序列号,NAR为接收设备的接收天线的序列号,Nk为频域采样点的编号。

参见图5,图5为本申请实施例中针对一条通信链路中的子链路示意图。图5中,以RE1和TE2之间的通信链路为例,当前以RE1的3根天线和TE2上的2根天线为例,即p为2,q为3。

若线程索引为(0,0),则由上述公式获得DFT计算索引为(1,1,0);如果线程索引为(5,10),则由上述公式获得DFT计算索引为(2,3,10)。

在DFT计算时,会根据信道模型生成某一子链路对应的信号的时域离散采样点。这些时域离散采样点通常需要利用DFT转为频域采样值后才能继续进行下一步处理。DFT的计算公式如下:

<mrow> <mi>X</mi> <mo>[</mo> <mi>k</mi> <mo>]</mo> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>n</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mi>x</mi> <mo>[</mo> <mi>n</mi> <mo>]</mo> <msup> <mi>e</mi> <mrow> <mi>j</mi> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mi>k</mi> <mi>N</mi> </mfrac> <mi>n</mi> </mrow> </msup> </mrow>

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

<mrow> <msup> <mi>e</mi> <mrow> <mi>j</mi> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mi>k</mi> <mi>N</mi> </mfrac> <mi>n</mi> </mrow> </msup> <mo>=</mo> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mi>k</mi> <mi>N</mi> </mfrac> <mi>n</mi> <mo>)</mo> </mrow> <mo>+</mo> <mi>j</mi> <mi>sin</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mi>k</mi> <mi>N</mi> </mfrac> <mi>n</mi> <mo>)</mo> </mrow> </mrow>

由以上两个公式可得:

<mrow> <mi>X</mi> <mo>[</mo> <mi>k</mi> <mo>]</mo> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>n</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mi>x</mi> <mo>[</mo> <mi>n</mi> <mo>]</mo> <mrow> <mo>(</mo> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mi>k</mi> <mi>N</mi> </mfrac> <mi>n</mi> <mo>)</mo> </mrow> <mo>+</mo> <mi>j</mi> <mi>sin</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mi>k</mi> <mi>N</mi> </mfrac> <mi>n</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mrow>

从该公式可以看出,无论是不同子径上的X[k],还是同一子径上不同采样点的X[k],其计算过程都是彼此无关的,可以并行处理;因此,本申请的具体实施例中的上述划分是完全合理、可行的。

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

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

在进行DFT任务并行处理过程中,尽管CUDA支持对线程的三维编号,本部分依然将收发天线压缩成一维,主要是考虑经过如此方式压缩后,输入输出数据都可以比较方便的采用二维矩阵存储,后继处理也可以利用MKL、CuBLAS等矩阵运算工具,可以降低开发难度。

步骤304,该设备通过CPU将GPU返回的任一批次的所有数据的处理结果,以及预设使用CPU进行的性能测试处理所需的数据进行性能测试处理。

本申请提供的实施例中对接收束结构单元对应的通信链路相关的数据分批次处理,能够提高GPU的处理效率,并且进行多批次处理,也有利于将处理后的结果及时传回CPU,从而使CPU在GPU处理下一批接收束时能够 同步处理本次返回的结果。并且采用多流技术传输,即通过多个流的复用可以显著节省程序中的数据拷贝时间。

综上所述,本申请通过将系统性能的测试划分为多发送设备到单接收设备的接收束结构,并利用GPU同时处理一个或多个接收束结构为单元的数据,以使针对一个接收束结构单元对应的数据被同时返回CPU,能够使CPU针对该接收束结构单元对应的接收设备进行下一步相关性能处理。上述方法能够在降低性能测试的复杂度的基础上,加快系统性能测试的速度。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1