主要内容

利用gpu加速Turbo编码误码率仿真

这个例子展示了如何使用gpu来极大地加速误码率模拟。Turbo码是现代通信系统的骨干。由于Turbo译码器涉及大量的计算和大量的试验需要一个有效的误码率模拟,Turbo译码器是一个理想的GPU加速候选人。看到并行级联卷积编码:Turbo码例如,它解释了数据处理链,以获得更多关于Turbo码的信息。

您必须拥有并行计算工具箱™许可证才能使用Turbo Decoder GPU示例。

这个例子说明了两种GPU加速Turbo编码误码率仿真的方法。基线系统由随机消息生成、Turbo编码器(comm.TurboEncoder)、BPSK调制使用MATLAB®代码、AWGN信道(comm.AWGNChannel)、BPSK解调使用MATLAB代码、Turbo译码器(comm.TurboDecoder)和误码率计算(comm.ErrorRate)组成。

注意:这个软件供应不传达许可证也不意味着任何涡轮码专利使用权法国电信旗下法国无线电广播和/或Groupe des高中des电信除了连接使用的软件设计的目的,仿真和分析。在本软件中由Turbo代码技术生成的代码不打算和/或适合于在任何商业产品中实现或合并。下载188bet金宝搏

法国电信研发中心- PIV/TurboCodes 38-40, rue du General Leclerc 92794 Issy-les-Moulineaux Cedex 9,法国。

启动TurboDecoderBERsim GUI

TurboDecoderBER_GPU

模拟概述

模拟选项按钮组选择CPU选项只用于CPU模拟。的简单的图形选项通过将基于CPU的TurboDecoder (comm.TurboDecoder)替换为GPU实现(comm.gpu.TurboDecoder),对CPU版本进行了非常温和的更改。

优化的图形选项使用comm.gpu.TurboDecoder对象,并使用gpuArray重载在GPU上运行BPSK调制和解调代码。该选项还使用gpu加速AWGN通道。作为GPU计算的最佳实践,每次调用System object®的step方法都会处理多帧数据。

你应该尽可能在GPU上处理多帧数据(或并行)。一般来说,GPU的计算能力远远超过处理一帧数据所需的能力。让GPU在一个函数调用中处理多帧数据可以更有效地利用GPU的处理能力。要使用多帧处理,将创建一个长度为帧大小整数倍的随机消息。Turbo编码器一次一帧地编码这么长的多帧向量。(CPU上的多帧处理没有真正的优势,CPU Turbo Encoder也没有多帧模式。)数据通过gpuArray功能发送到GPU。数据处理链的其余部分按照前面的方式写入,因为信道、调制器或解调器没有帧的概念。要让Turbo Decoder在多帧模式下运行,可以将NumFrames属性设置为多帧数据向量中的帧数(默认为1)。Turbo Decoder在对步进方法的单个调用中独立并并行地解码每一帧(特别是,它不将数据视为一个长帧)。

代码的差异

要查看两个GPU实现所需的原始CPU源代码中的变化,请单击适当的GPU单选按钮(或简单的图形优化的图形),然后点击显示代码差异按钮。这将启动比较工具来查看GPU加速所需的变化。

误码率性能

您可以为代码的三个版本中的任何一个绘制误码率曲线。绘制单个点所需的错误数可以在最小错误数字段中更改。输入所需的错误数并单击开始模拟按钮。单击相同的按钮可以提前停止模拟。

CPU与Simple GPU版本的误码率曲线匹配准确。这表明Turbo Decoder的GPU版本在更高的速度下实现了与CPU版本完全相同的误码率。在某些情况下,优化的GPU版本可能会有稍微不同的误码率,因为它并行运行多个帧。因此,它可能运行几帧超过必要的传递最小错误数。

结果

当模拟运行时,它显示情节图例中通过主模拟循环每秒处理的消息比特数。这可以在一定程度上衡量模拟对于每个代码版本的运行速度。长时间的模拟已经在使用Intel®Xeon®X5650处理器和NVIDIA®K20c GPU的计算机上完成。这些模拟表明简单的图形是它的2倍CPU版本和优化的图形版本比版本快6倍CPU的版本。