В этом примере показано, как можно использовать графические процессоры для резкого ускорения моделирования частоты битовых ошибок. Турбокоды составляют магистраль многих современных систем связи. Из-за интенсивного объема вычислений в турбодекодере и огромного количества испытаний, необходимых для моделирования допустимой частоты битовых ошибок, турбодекодер является идеальным кандидатом для ускорения GPU. Дополнительные сведения о турбокодах см. в примере «Параллельное конкатенированное сверточное кодирование: турбокоды», в котором описывается цепочка обработки данных.
Для использования примера GPU Turbo Decoder необходимо иметь лицензию Parallel Computing Toolbox™.
Этот пример иллюстрирует два подхода к ускорению GPU при моделировании частоты битовых ошибок турбокодирования. Базовая система состоит из генерации случайных сообщений, турбокодера (comm.TurboEncoder), модуляции BPSK с использованием кода MATLAB ®, канала AWGN (comm.AWGNChannel), демодуляции BPSK с использованием кода MATLAB, турбодекодера (comm.TurboDecoder).
Примечание: Поставка данного программного обеспечения не передает лицензии и не подразумевает какого-либо права на использование каких-либо патентов Turbo codes, принадлежащих France Telecom, Telediffusion de France и/или Groupe des Ecoles des Telecommunications, за исключением случаев использования программного обеспечения в целях проектирования, моделирования и анализа. Код, генерируемый технологией Turbo codes в этом программном обеспечении, не предназначен и/или не подходит для реализации или включения в какие-либо коммерческие продукты.
Пожалуйста, свяжитесь с France Telecom для получения информации о программе лицензирования Turbo Codes по адресу: France Telecom R&D - PIV/TurboCodes 38-40, rue du General Leclerc 92794 Issy-les-Moulineaux Cedex 9, France.
TurboDecoderBER_GPU

В Simulation options группа кнопок выберите CPU параметр для моделирования только ЦП. Simple GPU вносит очень скромные изменения в версию CPU, заменяя турбодекодер на базе CPU (comm.TurboDecoder) реализацией GPU (comm.gpu.TurboDecoder).
Optimized GPU использует объект comm.gpu.TurboDecoder и запускает код модуляции и демодуляции BPSK на GPU, используя перегрузки gpuArray. Эта опция также использует канал AWGN с ускорением GPU. В качестве передовой практики вычислений GPU при каждом вызове метода шага системного объекта ® обрабатывается множество кадров данных.
По возможности на GPU следует обрабатывать несколько кадров данных вместе (или параллельно). В общем, ГП имеет гораздо больше вычислительной мощности, чем необходимо для обработки одного кадра данных. Предоставление GPU множества кадров данных для обработки в одном функциональном вызове более эффективно использует вычислительную мощность GPU. Для использования многокадровой обработки создается случайное сообщение, которое является целым числом, кратным размеру кадра по длине. Турбокодер кодирует этот длинный многокадровый вектор по одному кадру за раз. (Нет реального преимущества для многокадровой обработки на CPU, и CPU Turbo Encoder не имеет многокадрового режима.) Затем данные отправляются в графический процессор с помощью функции gpuArray. Остальная часть цепочки обработки данных записывается, как и прежде, потому что нет понятия кадрирования для канала, модулятора или демодулятора. Чтобы турбодекодер работал в режиме мультикадра, установите свойство NumFrames равным количеству кадров в векторе данных мультикадра (по умолчанию - один). Турбодекодер декодирует каждый кадр независимо и параллельно в одном вызове ступенчатого способа (в частности, он не рассматривает данные как один длинный кадр).
Для просмотра изменений исходного кода CPU, необходимых для двух реализаций GPU, нажмите соответствующую радиокнопку GPU (либо Simple GPU или Optimized GPU) и нажмите кнопку Show Code Differences кнопка. При этом запускается инструмент сравнения для просмотра изменений, необходимых для ускорения графического процессора.
Можно построить график частоты битовых ошибок для любой из трех версий кода. Количество ошибок, необходимых для построения одной точки, можно изменить в поле Минимальное количество ошибок. Введите требуемое количество ошибок и нажмите кнопку Start Simulation кнопка. Нажмите ту же кнопку, чтобы остановить моделирование раньше.
Кривые частоты битовых ошибок для версии CPU и Simple GPU точно совпадают. Это указывает на то, что версия GPU турбодекодера достигает точно такой же частоты битовых ошибок, что и версия CPU с гораздо большей скоростью. В некоторых случаях оптимизированная версия GPU может иметь несколько отличающуюся частоту битовых ошибок, поскольку она выполняет несколько кадров параллельно. Поэтому для передачи минимального количества ошибок может быть выполнено несколько кадров больше, чем необходимо.
При выполнении моделирования в легенде графика отображается количество битов сообщения, обрабатываемых через основной цикл моделирования в секунду. Это позволяет определить скорость выполнения моделирования для каждой версии кода. Продолжительное моделирование выполнялось на компьютере с процессором Intel ® Xeon ® X5650 и графическим процессором NVIDIA ® K20c. Эти моделирования показали, что Simple GPU более чем в 2 раза быстрее, чем CPU и что Optimized GPU версия в 6 раз быстрее, чем CPU версия.