主要内容

使用gpu加速Turbo编码误码率模拟

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

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

本例说明了Turbo编码误码率模拟的两种GPU加速方法。基线系统包括随机消息生成、TurboEncoder(通信. turboencoder)、使用MATLAB®代码的BPSK调制、AWGN通道(通信. awgnchannel)、使用MATLAB代码的BPSK解调、TurboDecoder(通信. turbodecoder)和最后的误码率计算(通信. errorrate)。

注意:本软件的提供不传递许可或暗示使用法国电信、法国电信和/或电信集团拥有的任何Turbo码专利的任何权利,但用于设计、模拟和分析目的的软件除外。本软件中由Turbo码技术生成的代码不打算和/或不适合在任何商业产品中实现或合并。2022世界杯八强谁会赢?

请通过以下地址联系法国电信获取Turbo码授权计划的信息:法国电信R&D - PIV/TurboCodes 38-40, rue du General Leclerc 92794 issye -les- moulineaux Cedex 9, France。

启动TurboDecoderBERsim GUI

TurboDecoderBER_GPU

仿真概述

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

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

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

代码的差异

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

错误率性能

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

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

结果

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

Baidu
map