Научная статья на тему 'Повышение скорости работы декодера в системах передачи данных за счет использования параллельных вычислений'

Повышение скорости работы декодера в системах передачи данных за счет использования параллельных вычислений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
93
11
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОД ХЭММИНГА / ДЕКОДИРОВАНИЕ / OPEN МР / CUDA / ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ / HAMMING CODE / DECODING / OPENMP / PARALLEL COMPUTING

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гринченко Наталья Николаевна, Королева Елена Павловна, Хизриева Наталья Илесовна

В данной статье описаны многопоточные и однопоточные реализации алгоритма декодирования информации, производится сравнение их эффективности, оценивается выигрыш от использования параллельных вычислений

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Гринченко Наталья Николаевна, Королева Елена Павловна, Хизриева Наталья Илесовна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

INCREASING OF DECODER SPEED IN DATA TRANSFER SYSTEMS DUE TO THE USE OF PARALLEL CALCULATIONS

This article describes the multithreaded and singlethreaded implementation of the information decoding algorithm, a comparison of their effectiveness, estimated gain from the use of parallel computing.

Текст научной работы на тему «Повышение скорости работы декодера в системах передачи данных за счет использования параллельных вычислений»

УДК 004.42

ПОВЫШЕНИЕ СКОРОСТИ РАБОТЫ ДЕКОДЕРА В СИСТЕМАХ ПЕРЕДАЧИ ДАННЫХ ЗА СЧЕТ ИСПОЛЬЗОВАНИЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ

Н.Н. Гринченко, Е.П. Королева, Н.И. Хизриева

В данной статье описаны многопоточные и однопоточные реализации алгоритма декодирования информации, производится сравнение их эффективности, оценивается выигрыш от использования параллельных вычислений.

Ключевые слова: код Хэмминга, декодирование, Open MP, CUDA, параллельные вычисления.

В настоящее время системы передачи данных распространяются повсеместно от линий передачи данных вычислительной машины до систем спутниковой связи. В таких системах необходимо обеспечивать контроль и исправление ошибок, так как это позволяет снизить стоимость всей системы. Также наличие такого контроля позволяет расширить зону покрытия беспроводных сетей и повысить надежность передачи сообщений по каналам связи.

Существует два метода контроля ошибок - обнаружение и обнаружение с исправлением. Выбор метода зависит от характеристик канала связи. Чаще всего в системах передачи данных необходимо обеспечить заданное качество передачи. Самым распространенным способом для этого является улучшение существующего оборудования. Однако, по выводам Клода Шеннона: «построение слишком качественных линий связи является излишним расточительством, и обеспечить требуемое качество связи проще с использованием кодов обнаружения и коррекции ошибок» [1].

Искажение передаваемой информации в системе передачи данных, представленной Шенноном на рис. 1, связано с передачей данных по зашумленному каналу связи. Следовательно, изучив виды шумов и алгоритмы обнаружения и исправления ошибок, можно повысить надежность всей системы передачи данных.

Г

Источник Кодер Модулятор

данных канала

1 ,S(t)

Физический

канал

| 1 ,R(t)

Приемник Декодер Л Демодулятор

данных канала и детектор

Рис. 1. Схема системы передачи данных Шеннона

Одной из основных проблем при моделировании таких систем является кодирование больших объемов данных. Для этого используют вычислительные ресурсы GPU, так как это позволяет распараллелить вычисления при генерации, кодировании, декодировании и передаче каждого отдельного сообщения независимо друг от друга.

Существует огромное количество алгоритмов помехоустойчивого кодирования, однако в данной работе рассмотрена работа с кодами Хэмминга, являющимся одним из самых распространенных.

В системе передачи данных необходимо генерировать некоторое количество сообщений, заданное пользователем, а также имитировать помехи в канале связи с помощью инвертирования битов сообщений с требуемой вероятностью. Также необходимо подсчитывать количество обнаруживаемых ошибок.

С обнаружением и исправлением ошибок справляется множество кодов, одним из самых известных является код Хэмминга. К таким кодам относятся линейные блоковые коды с параметрами (п, вида (2т - 1,2т - т -1), где т = п — к - число проверочных символов кода. Рассматриваемые коды обладают кодовым расстоянием ^тт = 3 и поэтому способны либо исправлять только одну, либо обнаружить две ошибки [2]. Также существуют укороченные и расширенные коды Хэмминга. Укороченные коды получаются при исключении какой-либо проверки (т.е. удалении одной строки проверочной матрицы), а расширенные получаются путем введения дополнительной проверки на четность всех символов кодового слова. В результате чего их минимальное расстояние увеличивается до dmin = 4, что позволяет данным кодам либо исправлять одну и обнаруживать две, либо только обнаруживать три ошибки.

Схема кодирования для кода Хэмминга (7,4) приведена на рис. 2, а схема декодирования представлена на рис. 3.

Рис. 2. Схема кодирования для кода Хэмминга (7, 4)

Рис. 3. Схема декодирования для кода Хэмминга (7, 4)

Для ускорения процессов кодирования и декодирования применяют различные технологии параллельных вычислений за счет использования вычислительных ресурсов GPU. Одними из самых распространенных являются технологии OpenMP и CUDA.

218

OpenMP (Open Multi-Processing) - стандарт для распараллеливания программ на Си-подобных языках и языках Фортран. Стандарт описывает совокупности директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью. OpenMP для организации параллельного выполнения кода использует директивы препроцессора, так называемые прагмы (#pragma). В случае, когда системы не поддерживают данную технологию, эти директивы будут просто игнорироваться и выполняться как однопоточный код.

CUDA (англ. Compute Unified Device Architecture) - программно-аппаратная архитектура параллельных вычислений, которая позволяет значительно увеличить вычислительную производительность за счет использования графических процессоров фирмы Nvidia.

В архитектуре CUDA используется модель памяти грид, кластерное моделирование потоков и SIMD-инструкции. Учёные используют данную технологию в различных областях, начиная от астрофизики, вычислительной биологии и химии, моделирования электромагнитных взаимодействий, заканчивая компьютерной томографией и многими другими областями. CUDA - кроссплатформенное программное обеспечение для Linux, Mac OS X и Windows и имеет возможность подключения к приложениям, которые используют OpenGL и Direct3D.

Программная модель Cuda условно разделена на две больших составляющих:

- последовательные участки программного кода выполняются на CPU (host-часть кода);

- параллельные участки кода выполняются на GPU (device-часть кода).

Для вычисления эффективности применения параллельных вычислений при реализации алгоритма декодирования сообщений, рассмотрены коды Хэмминга (7, 4), (15, 11), (31, 26) [3, 4]. В качестве модели шума при реализации алгоритмов используется аддитивный белый гауссовский шум, который характеризуется равномерной спектральной плотностью мощности, нормально распределёнными временными значениями и аддитивным способом воздействия на сигнал. Вероятность искажения бита закодированного сообщения будет задаваться пользователем, после чего будет генерироваться случайный вектор ошибки для каждого сообщения. Когда бит вектора ошибки будет равным единицы, будет происходить инвертирование соответствующего бита кодового слова.

Моделирование алгоритма включает следующие шаги:

а) генерация информационного сообщения U длины к;

б) кодирование информационного сообщения заданным кодом (п, к) — получение кодового слова С ;

в) генерация вектора ошибки Е и сложение его с кодовым словом С по модулю 2: Т = С+Е;

г) вычисление синдрома S от принятого искаженного кодового слова Y;

д) определение конфигурации ошибок по синдрому S ;

е) обновление статистики моделирования, то есть определение количества сгенерированных/ обнаруженных/ исправленных и необнаруженных ошибок.

После окончания моделирования выводится общая статистика, производится сравнение однопоточной и многопоточной реализаций.

Программная реализация кодирования кодом Хэмминга на языке С++ включает в себя три варианта моделирования:

1) на CPU с использованием одного вычислительного потока (однопоточный

С++);

2) многопоточная реализация с распараллеливанием на ядра CPU с помощью технологии OpenMP (параллельная обработка отдельных сообщений с помощью технологии OpenMP);

3) многопоточная реализация с распараллеливанием на ядра GPU с помощью технологии Cuda (параллельная обработка отдельных сообщений с помощью технологии Cuda).

В качестве исходных данных программа принимает количество проверочных разрядов кода, по которому исходя из теоретических сведений о кодах Хэмминга [5], определяются количество информационных разрядов и общее количество разрядов кодового слова.

Затем программа от пользователя получает количество генерируемых сообщений и вероятность битовой ошибки и режим моделирования (CPU, OpenMP или Cuda). После выбора режима начинается процесс моделирования.

Пример ввода исходных данных приведен на рис. 4.

Введите количество проверочных символов кода m > 2

Используется код Хэмминга (31,26)

Введите количество генерируемых сообщений

Введите вероятность битовой ошибки

Выберите режим вычислений (1 - CPU, 2-OpenMP, 3-GPU)

Рис. 4. Ввод исходных данных

Пример статистики, которую выводит программа по завершению моделирования, приведена на рис. 5.

Режим вычислений: CPU

Время моделирования: 13.3915 секунд

Заданная вероятность битовой ошибки: 0.1 Сгенерировано сообщений; 100000

Рис. 5. Статистика по результатам моделирования

В соответствии со структурой системы передачи данных по Шеннону, программа реализует работу всех основных ее составляющих:

- источника данных (генерация случайной последовательности битов заданной длины с использованием генератора псевдослучайных чисел с биномиальным распределением - с равной вероятностью 0 и 1),

- кодера (кодирование исходной битовой последовательности в соответствии с заданным кодом Хэмминга),

- канала передачи данных (помещение ошибки в кодовой слово с заданной вероятностью с помощью генератора псевдослучайных чисел с равномерным распределением)

- декодера (получение информации было ли искажено кодовое слово).

Результаты моделирования с различным количеством генерируемых сообщений приведены в табл. 1, табл. 2, табл. 3 (для оценки эффективности рассматривается время кодирования в секундах). Моделирование всех кодов производилось при вероятности битовой ошибки 0.1. Моделирование с использованием технологии Cuda проводилось на видеокарте Nvidia GeForce GT 630M с характеристиками:

- 96 ядер,

- тактовая частота 800мГц,

- интерфейс памяти 128-bit DDR3/GDDR5).

220

Таблица 1

Моделирование кода Хэмминга (7, 4)

Количество генерируемых сообщений

1000 10000 100000 1000000

CPU 0.04 0.35 3.3 32

OpenMP 0.03 0.2 1.85 18.2

Cuda 0.06 0.15 1.13 27.4

Таблица 2

Моделирование кода Хэмминга (15,11)

Количество генерируемых сообщений

1000 10000 100000 1000000

CPU 0.07 0.65 6.5 63.8

OpenMP 0.05 0.42 3.85 37.1

Cuda 0.07 0.16 1.1 27.7

Таблица 3

Моделирование кода Хэмминга (31, 26)

Количество генерируемых сообщений

1000 10000 100000 1000000

CPU 0.14 1.3 12.9 128.2

OpenMP 0.09 0.79 7.8 78

Cuda 0.07 0.19 1.3 29.7

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

Разработанный программный код может использоваться в качестве инструмента для изучения алгоритмов помехоустойчивого кодирования и систем передачи данных.

Список литературы

1. Шеннон К. Э. Математическая теория связи // Работы по теории информации и кибернетике / Пер. С. Карпова. М.: ИИЛ, 1963. 830 с.

2. Золотарёв В.В., Овечкин Г.В. Помехоустойчивое кодирование. Методы и алгоритмы: Справочник. М.: Горячая линия-Телеком, 2004. 126 с.

3. Improving performance of multithreshold decoder for self-orthogonal codes / A. Baranchikov, N. Grinchenko, G. Ovechkin // Proceedings of 5th Mediterranean Conference on Embedded Computing, MECO 2016. 2016. Bar, Montenegro.

221

4. Improving performance of multithreshold decoder over binary erasure channel / N. Grinchenko, A. Gromov, G. Ovechkin // Proceedings of 6th Mediterranean Conference on Embedded Computing, MECO 2017 - Including ECYPS 2017. 2017. Bar, Montenegro.

5. Золотарев В.В., Овечкин Г.В. Применение многопороговых декодеров в оптических линиях связи // Сб. тр. научн.-техн. конф. «Актуальные проблемы современной науки и производства». 2018. Рязань.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Гринченко Наталья Николаевна, канд. техн. наук, доцент, grinchenko nnamail.ru, Россия, Рязань, Рязанский государственный радиотехнический университет,

Королева Елена Павловна, аспирант, ap.korolevaahk.ru, Россия, Рязань, Рязанский государственный радиотехнический университет,

Хизриева Наталья Илесовна, студент-магистрант, программист, je-sussternagmail. com, Россия, Рязань, Рязанский государственный радиотехнический университет

INCREASING OF DECODER SPEED IN DATA TRANSFER SYSTEMS DUE TO THE USE OF PARALLEL CALCULATIONS

N.N. Grinchenko, E.P. Koroleva, N.I. Khizrieva

This article describes the multithreaded and single-threaded implementation of the information decoding algorithm, a comparison of their effectiveness, estimated gain from the use of parallel computing.

Key words: Hamming code, decoding, OpenMP, CUDA, parallel computing.

Grinchenko Natalya Nikolaenva, candidate of technical science, docent, grinchen-ko nn a mail. ru, Russia, Ryazan, Ryazan State Radio Engineering University,

Koroleva Elena Pavlovna, postgraduate, ap.korolevaa hk.ru, Russia, Ryazan, Ryazan State Radio Engineering University,

Khizrieva Natalia Ilesovna, magister, programmer, jesussiern a gmail. com, Russia, Ryazan, Ryazan State Radio Engineering University

i Надоели баннеры? Вы всегда можете отключить рекламу.