Используя графические процессоры, чтобы ускорить симуляции частоты ошибок по битам турбокодирования

В этом примере показано, как можно использовать графические процессоры, чтобы существенно ускорить симуляции частоты ошибок по битам. Турбокоды формируют магистраль многих современных систем связи. Из-за интенсивного объема расчета, вовлеченного в Турбо Декодер и значительный объем испытаний, требуемых для допустимой симуляции частоты ошибок по битам, Турбо Декодер является идеальным кандидатом на ускорение графического процессора. Смотрите "Параллельное Конкатенированное Сверточное Кодирование: Турбокоды" пример, который объясняет цепь обработки данных, для получения дополнительной информации о Турбокодах.

У вас должна быть лицензия Parallel Computing Toolbox™, чтобы использовать Турбо Декодер пример графического процессора.

Этот пример иллюстрирует два подхода для ускорения графического процессора симуляции частоты ошибок по битам Турбокодирования. Базовая система состоит из случайной генерации сообщения, Турбо Энкодер (comm.TurboEncoder), модуляция BPSK с помощью кода MATLAB®, канал AWGN (comm.AWGNChannel), демодуляция BPSK с помощью кода MATLAB, Турбо Декодер (comm.TurboDecoder), и наконец расчет частоты ошибок по битам (comm.ErrorRate).

Уведомление: Предоставление этого программного обеспечения не передает лицензию, ни подразумевает любое право использовать любые патенты на Турбокоды, принадлежавшие France Telecom, Telediffusion de France и/или Groupe des Ecoles des Telecommunications кроме связи с использованием программного обеспечения в целях проекта, симуляции и анализа. Код, сгенерированный от технологии Турбокодов в этом программном обеспечении, не предназначается и/или не подходит для реализации или объединения ни в каких коммерческих продуктах.

Свяжитесь с France Telecom для получения информации о Турбокодах, Лицензирующих программу в следующем адресе: R&D France Telecom - PIV/TurboCodes 38-40, сожалейте о du генерале Леклерке 92794 Исси-ле-Мулино Cedex 9, Франция.

Запустите графический интерфейс пользователя TurboDecoderBERsim

TurboDecoderBER_GPU

Обзор симуляции

В Simulation options группа кнопок выбирает CPU опция для центрального процессора только симуляция. Simple GPU опция вносит очень скромные изменения в версию ЦП, заменяя основанный на центральном процессоре Турбо Декодер (comm.TurboDecoder) с реализацией графического процессора (comm.gpu.TurboDecoder).

Optimized GPU опция использует объект comm.gpu.TurboDecoder и запускает код модуляции и демодуляции BPSK по графическому процессору, с помощью gpuArray перегрузки. Эта опция также использует ускоренный графическим процессором канал AWGN. Как графический процессор, вычисляя лучшую практику, несколько кадров данных обрабатываются в каждом вызове Системного метода шага object®.

Необходимо обработать несколько кадров данных вместе (или параллельно), когда это возможно, на графическом процессоре. В общем случае графический процессор имеет, намного больше вычисляет степень, чем необходимый, чтобы обработать один кадр данных. Предоставление графического процессора нескольких систем координат данных к процессу в одном вызове функции более эффективно использует вычислительную мощность графического процессора. Чтобы использовать обработку сверхкадра, случайное сообщение создается, который целочисленное кратное формат кадра в длине. Турбо Энкодер кодирует это долго, сверхкадр векторизовали одну систему координат за один раз. (Нет никакого действительного преимущества для обработки сверхкадра на центральном процессоре, и Турбо Энкодер центрального процессора не имеет режима сверхкадра.) Данные затем отправляются в графический процессор с помощью функции gpuArray. Остальная часть цепи обработки данных записана как прежде, потому что нет никакого понятия структурирования для канала, модулятора или демодулятора. Чтобы запустить Турбо Декодер в режиме сверхкадра, установите свойство NumFrames, равное количеству систем координат в векторе данных сверхкадра (значение по умолчанию - одно). Турбо Декодер декодирует каждую систему координат независимо и параллельно в одном вызове метода шага (в частности, это не обрабатывает данные как одну длинную систему координат).

Различия кода

Чтобы видеть изменения в исходном исходном коде центрального процессора, необходимом для двух реализаций графического процессора, нажмите на соответствующий переключатель GPU (любой Simple GPU или Optimized GPU) и затем нажмите Show Code Differences кнопка. Это запускает инструмент сравнения, чтобы просмотреть изменения, необходимые для ускорения графического процессора.

Эффективность коэффициента ошибок

Можно построить кривую частоты ошибок по битам для любой из трех версий кода. Количество ошибок, требуемых построить одну точку, может быть изменено в поле Minimum Number of Errors. Введите желаемый номер ошибок и нажмите Start Simulation кнопка. Нажмите ту же кнопку, чтобы остановить симуляцию рано.

Кривые частоты ошибок по битам для центрального процессора и Простой версии графического процессора соответствуют точно. Это указывает, что версия графического процессора Турбо Декодера достигает точно той же частоты ошибок по битам как версия ЦП на намного более высокой скорости. В некоторых случаях Оптимизированная версия графического процессора может иметь немного отличающуюся частоту ошибок по битам, потому что она запускает несколько систем координат параллельно. Поэтому это может запустить несколько систем координат, более, чем необходимых, чтобы передать Минимальное Количество Ошибок.

Результаты

Когда симуляция запускается, она отображает количество битов сообщения, обработанных через основной цикл симуляции в секунду в легенде графика. Это дает некоторую меру того, как быстро симуляция запускается для каждой версии кода. Долгие симуляции были завершены на использующем компьютеры процессор Intel® Xeon® X5650 и графический процессор NVIDIA® K20c. Те симуляции показали что Simple GPU больше чем в 2 раза быстрее, чем CPU версия и что Optimized GPU версия в 6 раз быстрее, чем CPU версия.