主要内容

使用gpu加速Turbo编码比特误码率仿真

这个例子展示了如何使用gpu极大地加速比特误码率仿真。涡轮码形式许多现代通信系统的支柱。因为高强度的计算量参与Turbo译码器和大量的试验需要一个有效的比特误码率仿真,GPU加速的Turbo译码器是理想的人选。看到并行级联卷积编码:涡轮码例子,解释了数据处理链,在涡轮码的更多信息。

你必须有一个并行计算工具箱™许可使用涡轮解码器GPU的例子。

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

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

请联系法国电信涡轮码信息许可程序在以下地址:法国电信研发- PIV / TurboCodes 38-40,勒克莱尔将军街92794 Issy-les-Moulineaux Cedex 9日,法国。

启动TurboDecoderBERsim GUI

TurboDecoderBER_GPU

仿真的概述

模拟选项按钮组选择CPU只选择一个CPU仿真。的简单的图形选项是非常温和的改变CPU版本代替CPU-based Turbo译码器(comm.TurboDecoder) GPU实现(comm.gpu.TurboDecoder)。

优化的图形选择使用comm.gpu。TurboDecoder对象,BPSK调制和解调的代码运行在GPU,使用gpuArray过载。这个选项也使用GPU-accelerated AWGN信道。作为一个GPU计算最佳实践,处理多个数据帧在每次调用一个系统对象™的步骤方法。

你应该处理多个帧的数据一起(或同时)尽可能在GPU上。一般来说,GPU的计算能力远远超过必要处理一帧的数据。让GPU多个帧的数据在一个函数调用过程更有效地利用GPU的处理能力。使用多帧处理,就会创建一个随机的消息,是一个整数的多个帧的长度。涡轮编码器编码这么久,多帧矢量一帧。(没有真正利用多帧处理在CPU上,和CPU涡轮编码器没有多帧模式。)数据然后使用gpuArray函数发送到GPU。其余的数据处理链写成之前,因为没有通道的概念框架,调制器和解调器。Turbo译码器在多帧模式下运行,设置NumFrames属性等于多帧的帧数的数据向量(默认是其中之一)。涡轮解码器解码每一帧独立并行,在单个调用步骤方法(特别是,它不将数据视为一个长帧)。

代码的差异

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

误码率性能

你可以画出的比特误码率曲线的三个版本的代码。错误的数量需要绘制一个点可以更改最小数量的错误。输入所需的数量的错误和点击开始模拟按钮。点击相同的按钮停止仿真早期。

的比特误码率曲线简单CPU和GPU版本完全匹配。这表明GPU版本的Turbo译码器实现完全相同的比特误码率作为CPU版本以更高的速度。在某些情况下,优化的GPU版本可能有稍微不同的比特误码率因为它并行运行多个帧。因此,它可能会多几帧通过最小数量的错误。

结果

在仿真运行时它显示数量的信息比特每秒通过主仿真循环处理的情节传奇。这给了一定的仿真运行的速度为每一个版本的代码。长在电脑上模拟已经完成使用Intel®Xeon®X5650处理器和一个NVIDIA®K20c GPU。这些模拟显示简单的图形超过2倍CPU版本,优化的图形版本是6倍CPU的版本。