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

这个例子展示了如何使用gpu来显著加速模拟的误码率。涡轮编码构成了许多现代通信系统的主干。由于涡轮解码器涉及的大量计算和大量的试验需要一个有效的误码率模拟,涡轮解码器是一个理想的候选人GPU加速。有关Turbo码的更多信息,请参见“并行级联卷积编码:Turbo码”示例,该示例解释了数据处理链。

你必须有一个并行计算工具箱™使用Turbo解码器GPU实例许可证。

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

注意:此软件的供应不传达一个牌照,也不意味着连接使用由法国电信,Telediffusion法国和/或狮德ECOLES德电讯所拥有的任何的Turbo码专利除非使用该软件的设计目的的任何权利,仿真和分析。在这个软件从Turbo码技术生成的代码并不打算和/或适用于任何商业产品实现或合并。s manbetx 845

请联系法国电信获取有关涡轮代码许可计划的信息,地址如下:法国电信R&D - PIV/TurboCodes 38-40, rue du General Leclerc 92794 issi -les- moulineaux Cedex 9, France。

启动TurboDecoderBERsim GUI

TurboDecoderBER_GPU

仿真概述

在里面模拟选项按钮组选择CPU选项仅CPU模拟。的简单的图形选项对CPU版本做了非常温和的改变,用GPU实现替换基于CPU的Turbo解码器(comm.gpu.TurboDecoder)。

优化的GPU选项使用comm.gpu.TurboDecoder对象,并运行在GPU上BPSK调制和解调代码,用gpuArray重载。此选项还使用了GPU加速的AWGN信道。作为GPU计算最佳实践,数据的多个帧中的每个呼叫到系统object®的步骤的方法进行处理。

只要有可能,你应该在GPU上一起(或并行)处理多帧数据。一般来说,GPU的计算能力远远超过处理一帧数据所需要的能力。让GPU在一个函数调用中处理多帧数据,更有效地利用GPU的处理能力。要使用多帧处理,将创建一个随机消息,该消息的长度是帧大小的整数倍。该涡轮编码器编码这长,多帧矢量在一个时间帧。(没有真正的优势,多帧处理上的CPU,和CPU涡轮编码器没有多帧模式。)然后使用gpuArray函数将数据发送到GPU。其余的数据处理链写像以前一样,因为没有帧的概念为通道,调制器或解调器。为了让Turbo解码器在多帧模式下运行,将NumFrames属性设置为多帧数据向量中的帧数(默认为1)。Turbo解码器在对step方法的单个调用中独立并行地解码每一帧(特别地,它不将数据视为一个长帧)。

代码差异

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

误码率性能

您可以绘制任何代码的三个版本的误码率曲线。绘制一个点所需错误的数量可以在错误字段的最低数量来改变。输入错误的所需数量,然后点击开始模拟按钮。单击相同的按钮提前停止模拟。

CPU和GPU简单的版本完全匹配的误码率曲线。这表明Turbo解码器的GPU版本的一模一样的误码率在更高速度的CPU版本。在某些情况下,因为它运行在平行的多帧的优化的GPU版本可能有一个稍微不同的误码率。因此,它可以运行几帧多于必要通过错误的最小数目。

结果

作为模拟运行它显示通过每秒主模拟循环在图例处理的消息的位数。这使模拟如何快速运行的代码的每个版本的一些措施。长期模拟已建成使用的英特尔®至强®X5650处理器和NVIDIA®GPU K20C的计算机上。这些模拟表明了简单的图形大于2倍CPU版本与优化的GPU版本比快6倍CPU版。