Параллельное недвоичное LDPC-декодирование на графическом процессоре

УДК 621.3.049.77

Радиотехника и связь

ПАРАЛЛЕЛЬНОЕ НЕДВОИЧНОЕ LDPC-ДЕКОДИРОВАНИЕ НА ГРАФИЧЕСКОМ

ПРОЦЕССОРЕ

А.В. Башкиров, Ю.В. Дьячков, М.В. Хорошайлова

В данной работе предлагается массивно-параллельная реализация недвоичного LDPC-декодера на основе графического процессора (GPU) для достижения большей гибкости и масштабируемости. Реализация отображает алгоритм декодирования Min-Max для графических процессоров параллельной архитектуры. Здесь описаны методология, разделяющая задачу декодирования на гетерогенной платформе, состоящей из центрального процессора и графического процессора. Экспериментальные результаты показывают, что реализация декодера на основе графического процессора позволяет достигнуть высокой пропускной способности, обеспечивая при этом большую гибкость и масштабируемость. Предложенная архитектура была реализована с использованием OpenCL. Эта реализация является гибкой и может быть легко настроена путем корректировки параметров для поддержки различных типов кода, длины кодов. Использован 1 / 2 (620; 310) (3; 6) - регулярный GF(32) код LDPC, который широко используется в проведении соответствующих исследований и показывает хорошую производительность коррекции ошибок. Представленный метод в полной мере использует графические процессоры вычислительной мощности для ускорения недвоичных алгоритмов LDPC-декодирования. Приведенные экспериментальные результаты показывают, что предложенный недвоичный низкоплотностный декодер на основе реализации графического процессорного устройства может достичь большой производительности, гибкости и масштабируемости

Ключевые слова: недвоичный LDPC-декодер, алгоритм декодирования Min-Max, параллельная архитектура

Введение. Недвоичные низкоплотностные коды (LDPC) относятся к классу кодов исправляющих ошибки, построенных в поле Галуа GF(q) для q>2. В качестве расширений двоичных кодов LDPC, недвоичные LDPC коды могут обеспечить лучшую производительность при коррекции ошибок, когда длина кода короткая или средняя, при более высокой сложности декодирования.

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

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

Башкиров Алексей Викторович - ВГТУ, канд. техн. наук, доцент, тел. 8-952-543-99-88, e-mail: kipr@vorstu.ru Дьячков Юрий Владимирович - ВГТУ, канд. техн. наук, доцент, тел. 8-951-555-30-50, e-mail: kipr@vorstu.ru Хорошайлова Марина Владимировна - ВГТУ, аспирант, тел. 8-920-415-15-65, e-mail: pmv2205@mail.ru

тральный процессор на основе моделирования будет очень медленным в высших порядках полей GF(q), особенно, когда изучаются свойства вероятности ошибок кодов. Блок графического процессора может обеспечить массивно-параллельные вычисления сообщения с многоядерной архитектурой, которая может ускорить процесс моделирования декодирования LDPC в GF(q). Многие реализации на основе графического процессора были предложены для двоичного LDPC декодирования. Тем не менее, из-за резко возросшей сложности алгоритмов декодирования при более высоких порядках поля, реализация недвоичного LDPC декодирования на графическом процессоре по-прежнему остается сложной задачей. В этой статье представлена реализация недвоичного LDPC декодера на графическом процессоре.

Алгоритмы недвоичного LDPC-декодирования. Недвоичный LDPC код может быть представлен с использованием матрицы проверки четности Н, которая представляет собой q разряженную с M строками и N столбцами, элементы которых определяются в поле Галуа состоящего из q элементов (GF(q)={0,1,...,q-1}). Матрица Н может быть представлена в виде графа Таннера. Пусть M(n) обозначает набор проверочных узлов, соединенных с переменным узлом n. Пусть N(m) обозначает набор переменных узлов, соединенных с проверочным узлом m. Вес строки для проверочного узла обозначается как dc.

Алгоритм декодирования распространения доверия (ВР) может быть представлен для GF(q) поля для декодирования недвоичных LDPC кодов. Чтобы уменьшить сложность, были предложены приближенные алгоритмы такие как развернутый алгоритм min-sum (EMS), алгоритм Min-Max и ите-

рационные алгоритмы декодирования мягкой (жесткой) надежности на основе мажоритарной логики (ISRB-MLG ( HRB-MLG)). Среди этих алгоритмов, алгоритм EMS и алгоритм Min-Max имеют одинаковую производительность BER, но алгоритм Min-Max имеет меньшую сложность. Алгоритм ISRB-MLGD (IHRB-MLGD) значительно упрощает обработку проверочного узла, так что эффективен для реализации СБИС. Тем не менее, алгоритмы ISRB-MLGD и IHRB-MLGD страдают от потери производительности BER. Поэтому, принимая во внимание производительность коррекции ошибок и сложность декодирования, алгоритм MinMax является лучшим выбором для реализации графического процессора. Кроме того, мы можем легко расширить вычислительные ядра Min-Max для поддержки других алгоритмов, таких как алгоритм EMS, поэтому декодер также имеет большую гибкость.

Алгоритм декодирования Min-Max. Обозначим Ln (a) и Ln (a) как априорную и апостериорную информацию переменного узла n относительно символа a в GF(q), соответственно. Пусть Rmn (a) и

Qmn (a) обозначим сообщение проверочного узла и

сообщение переменного узла через символ a. Предположим, что xn - n-й символ в принятом кодовом слове и sn является наиболее вероятным символом для xn. Min-Max алгоритм описан в алгоритме 1.

Алгоритм 1: Алгоритм декодирования Min-Max

Инициализация: Ln (a) = /n(Pr(cn = sn | канал) / Pr(cn = a | канал));

Qmn (a) = L„ (a); Итерации:

Вычисление проверочного узла R (a) = min I max Q ,(a ,));

(an') n'e n (m) еЛ (a) VeN (m )\{n} '

A(a) = \a , | h a + V h ,a, = Or;

^ s n I mn ^^ mn n >

[ n'eN(m)\{n} J

Вычисление переменного узла Q (a) = L (a) + VR , (a);

^m,n ^ ' n ^ ' / , m ,n \ / ?

m'eM (n)\{m}

Q = min Q (a);

aeGF (q) ^ m ,n V ''

Q (a) = Q (a) - Q ; Предварительное декодирование:

~n (a) = Ln (a) + V Rmn (a);

meM

Cn = argmin

aeGF

Если проверочное уравнение выполнено или число итераций достигнуто максимума, прекратить декодирование; В противном случае, вернуться к итерации.

Обработка проверочного узла содержит большую часть вычислений алгоритма Min-Max, который

имеет сложность o(dc • q2 ) для каждого проверочного узла. Как показано на рис. 1 Ln (a) и Ln (a) могут быть представлены в виде 2-D axn массива; (a) и Qmn (a) могут быть представлены в виде

3-D axn*m массива. Благодаря специальной 2-D и 3-D структуре, способ организовать эти массивы в память существенно влияет на производительность.

Модель программирования OpenCL. Цель данной работы заключается в реализации высокопараллельного и гибкого декодера, который поддерживает различные типы кодов, различные длины кода и может работать на различных устройствах, таких как процессоры и графические процессоры. Поэтому выбирана модель программирования Open Compute Language (OpenCL) для осуществления параллельного недвоичные LDPC декодера. Модель OpenCL широко используется для программирования гетерогенных платформ, состоящих из центральных процессоров, графических процессоров и других устройств. Для массивно параллельной программы, разработанной для графического процессора, обработки параллельных данных эксплуатируется с OpenCL, выполнив в параллельных потоках. Модель OpenCL использует модель программирования Single Instruction Multiple Threads (SIMT). Если задача выполняется несколько раз независимо друг от друга над различными данными, которые могут быть отображены в ядро, и выполняются параллельно на многих сообщения.

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

Параллельная реализация недвоичного LDPC-декодера.

А. Сложность анализа недвоичного LDPC декодирования. Учитывая свойства алгоритма, графический процессор на основе гетерогенной платформы очень подходит для реализации недвоичных LDPC алгоритмов декодирования. Для декодирования двоичного кода LDPC, более сотни кодовых слов, как правило, декодируются одновременно в полной мере использовать вычислительные ресурсы графический процессор, чтобы подтолкнуть предел декодирования пропускной способности. Тем не менее, мульти декодирования кодового слова страдает длительным латентным, которые препятствуют реализации графический процессор от

приложений реального времени. Распространяется и на более высокие GF(q) поля, вычисление ядра недвоичных LDPC кодов становятся более сложным по сравнению с теми в двоичном случае ( о{ёс • q2) против 0^с) для вычисления проверочного узла; предположим, dc число ненулевых элементов, соединенных с проверочным узлом в матрице Н). Мш-Мах ядра способны более обеспечить достаточное количество вычислений, чтобы сохранить все занятые вычислительные блоки. Кроме того, недвоичный алгоритм декодирования LDPC имеет более высокий коэффициент вычисления доступа к памяти. Чем выше это соотношение, тем меньше времени накладных расходов тратится на передачу данных. Эти особенности делают недвоичный алгоритм LDPC декодирования хорошим кандидатом на реализацию графического процессора.

u<q-l> . . . LHJq-l)

Рис. 1. Структура данных Ln

Время выполнения алгоритма Min-mаx на центральном процессоре_

Название блока Время Процентное соотношение

LLR 0,353 мс 0,08%

CNP 431,336 мс 91,64 %

VNP 30,462 мс 6,43 %

Предварительное декодирование 0,876 мс 1,86 %

Измерения времени работы основных блоков в Min-Max алгоритме проводились при запуске серийного справочного C код на центральном процессоре. Профилирования результатов в таблице показывают, что средства обработки проверочного узла (CNP) и обработки переменного узла (VPN),

занимают большую часть времени обработки (91,64% и 6,43%, соответственно).

Б. Представление алгоритма на параллельной архитектуре. Благодаря тщательному анализу алгоритма декодирования Мш-Мах, представляем работу потока итерационного процесса декодирования, как показано на рис. 2, включая СРи^Ри задачи секционирования, операции запуска ядра и передачи памяти. Основная программа запущена на хост-процессоре, который обрабатывает инициализации контекста ОрепСЬ, планирование ядра и синхронизацию, управление итерациями декодирования, управления памятью и так далее. Для уменьшения передачи накладных расходов памяти между центральным процессором и ГПУ, помещаем большую часть вычислений на ГПУ и сохраняем все промежуточные сообщения в памяти устройства. Таким образом, нужно только две передачи памяти: одна для передачи принимаемых данных символа в ОЗУ устройства ГПУ в начале, а другая, чтобы получить декодированные символы обратно в конце процесса декодирования.

Стоит отметить, что предлагаемая работа поток представляет собой общую архитектуру, которая может быть использована для реализации различных недвоичных LDPC алгоритмов декодирования, в том числе алгоритма Мш-Мах. Только необходимы некоторые небольшие изменения в ядре СЫР для поддержки других алгоритмов.

В качестве примера, на рис. 3 показана информацию о отображении С№ и ядер на ГПУ параллельной архитектурой. Поскольку все сообщения являются векторами в недвоичном поле, можем порождать q рабочие элементы за рабочую группу, чтобы вычислить каждое сообщение СЫР или УЫР, так что эти q рабочие элементы могут имеют точно такой же путь вычисления и доступ к памяти шаблона. Это может помочь компилятору объединить операции для рабочих элементов в инструкции SIMТ, чтобы воспользоваться ГПУ параллельной архитектурой.

Для дальнейшего повышения параллельности в рабочей группе в полной мере используется блок вычислений, можно сохранить общее число рабочих элементов без изменений, но назначить рабочие группы по-другому. Например, чтобы запустить ядро СЫР, до сих пор появляться М ^ элементов в работе в общей сложности. Но можно назначить С • Q рабочие элементы для каждой рабочей группы и использовать [М / С] рабочие группы (предположим, что С выбрано целым числом).

I__J

Рис. 2. Ядро разделения и поток программы

а) процесс расчета проверочного узла q рабочих пунктов

К рабочих групп б) процесс расчета переменного узла

Рис. 3. Отображение CNP и VNP для OpenCL ядер.

row in col

4 2 7 1 5 2 4 3

3 4 3 6 3 7 6 1

col in row

4 2 7 3

3 1 5 4

3 6 2 6

4 3 7 1

н=

4 2 7 3

3 1 5 4

3 6 2 6

4 3 7 1

cl_short2 col_in_row[M][dv];

col_in_row[row][index].s[8]= col number; col_in_row[row][index].s[l]= H[row][col];

cl_short2 row_in_col[N][dc];

row_in_col [col][index],s[0]= row number; row_in_col [col][index].s[l]= H[row][col];

Рис. 4. Эффективное представление матрицы Н

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

ризонтального и вертикального сжатия матрицы Н генерирует очень эффективный структуры данных. Используя тип данных вектора в OpenCL, как показано на рисунке, можно еще больше повысить эффективность сжатых представлений. Так как R™^) и Q™^) сообщения также имеют разреженные структуры, они также могут быть сжаты аналогичным образом.

Г. Ускоренный алгоритм вперед-назад в CNP. Оригинальный Min-Max алгоритм имеет сложность O(qdc )при обработке проверочного узла (CNP). Как показано в алгоритме 2, алгоритм вперед-назад (FBA) способен уменьшить сложность O(dc • q2). Пусть

N(m) = {n0,n1,...,n(d _jj} множество переменных узлов, подключенных к проверочному узлу m.

Алгоритм 2: Алгоритм вперед-назад

Для проверочного узла m, вычисляются передние метрики

Fo(a) = öm^tfCo a);

F(«) = min (max (^(aX Qm,n(a"))) ;

a'+hm ni -a =a 4 4 ' ''

Вычисляются задние метрики

B(d ,(a) = Q (hm1 a);

(dc_i)V ' )C-m,n(dc_1^ m,n( dc _1) />

B(a) = ,+min (max (B,+1(a) Qm,n,(a'))) ;

a'+hm n'a =a

Сообщение, вычисленное проверочным узлом

Rmja) = Bi(hm,no a);

R (a) = F \h a);

m,n( dc_1) V ^ (dc_2) \ m,n( dc _1) / '

R (a) = min (max(F Ah a),B Ah a))).

m,n,- V ' a'+ a"=a _ m,nt _i i+1 V m,ni+i 'ff

Рис. 5 (а) показывает, как алгоритм вперед-назад переходит к реализации OpenCL. Расчеты

показаны для одного проверочного узла. Все элементы q работают в рабочей группе по-прежнему следуют по тому же пути исполнения, что является очень эффективным для реализации ГПУ. На рис. 5 (б) показаны детали решетчатой структуры передних вычислительных шагов. Прямые сообщения F¡ (о) (для и i=0,1,...,dc-1) на этапе i всегда нужно читать F1-1(а) сообщения от стадии 1-1 после их перемежения. Эта операция вызывает перемежение, значительное снижение производительности из-за конфликтов доступа в глобальной памяти.

Вычисления вперед а) алгоритм вперд-назад

Барьер локальной синхронизации памяти 6) использование локальной памяти для ускорения алгор1пма ИВА

Рис. 5. Алгоритм вперед-назад и ГПУ реализа-

ция

Результаты экспериментов. Предложенная архитектура была реализована с использованием OpenCL. Эта реализация является гибкой и может быть легко настроена путем корректировки параметров для поддержки различных типов кода, длины кодов, а также различныех устройств, таких как процессоры и графические процессоры. Реализация оценивается на двух процессорных платформах: двухъядерный процессор Intel i7-640LM работает на 2,93 ГГц и четырёхъядерный процессор AMD Phenom II X4-940 работает на 2.9 ГГц. Также проведены эксперименты на ГПУ NVIDIA GTX470 с 448 потоковыми процессорами, работает на 1.215 ГГц и с 1280MB памяти устройства GDDR5. Соответ-

ствующий OpenCL SDK устанавливается для каждой платформы. Использованы 1 /2 (62Q; 31Q) (3; б) - регулярный GF(32) код LDPC, который широко используется в проведении соответствующих исследований и показывает хорошие результаты коррекции ошибок. OpenCL события и функции, такие как clFinish (), clWaitForEvents () и clGetEventProfilingInfo () используются для измерения времени выполнения.

Заключение. Эта статья представляет собой исследование и описание новой параллельной реализации недвоичного LDPC декодера на ГПУ. По свое сути, массовый параллелизм недвоичного LDPC-декодера является более подходящим для реализации графического процессора, чем для двоичных кодов LDPC. Представленный метод в полной мере использует графические процессоры вычислительной мощности для ускорения недвоичных алгоритмов LDPC декодирования. Экспериментальные результаты показывают, что предложенный недвоичный LDPC декодер на основе реализации ГПУ может достичь большой производительности, гибкости и масштабируемости.

Литература

1. R. Gallager, «Low-density parity-check codes,» IRE Transactions on Information Theory, vol. 8, no. 1, 19б2.

2. J. Lin, J. Sha, Z. Wang, and L. Li, "Efficient decoder design for nonbinary quasicyclic LDPC codes," IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 57, no. 5, pp. 1Q71-1Q82, May 2Q1Q.

3. Башкиров, А.В. Модель масштабируемого LDPC-декодера низкой мощности с использованием алгоритмического синтеза высокого уровня [Текст] / А.В. Башкиров, Л.Н. Коротков, М.В. Хорошайлова // Вестник Воронежского государственного технического университета. - 2Q16. -Т. 12. - № 1. - С. б5-б9.

4. Башкиров, А.В. Реализация LDPC-декодера на массивно-параллельных вычислительных устройствах [Текст] / А.В. Башкиров, А..Ю. Савинков, М.В. Хоро-шайлова // Вестник Воронежского государственного технического университета. - 2Q15. - Т. 11. - № б.- С. 97-99.

Воронежский государственный технический университет

PARALLEL NON-BINARY LDPC-DECODING ON THE GRAPHICS PROCESSOR

A.V. Bashkirov, Ph.D., assistant professor of design and manufacture of radio, Voronezh State Technical University, Voronezh, Russian Federation, e-mail: kipr@vorstu.ru

Yu.V. Diachkov, Ph.D., assistant professor of design and manufacture of radio, Voronezh State Technical University, Voronezh, Russian Federation, e-mail: kipr@vorstu.ru

M.V. Horoshaylova, postgraduate of design and manufacture of radio, Voronezh State Technical University, Voronezh, Russian Federation, pmv2205@mail.ru

In this paper we propose a massively parallel implementation of the non-binary LDPC decoder based on the gras-Graphical processor (GPU) to achieve greater flexibility and scalability. Implementation displays algo-rhythm Min-Max decoding GPU parallel architecture. It describes the methodology of separating the decoding task on a heterogeneous platform consist-

ing of a CPU and graphically gras-processor. Experimental results show that the decoder implementation based graphics processor achieves high throughput while providing more flexibility and scalability. The proposed architecture was implemented using OpenCL. This implementation is flexible and can be easily adjusted by adjusting the parameters to support different types of code, code length. Used half (620; 310) (3; 6) - regular GF (32) LDPC code, which is widely used in related research, and shows good performance error correction. Pre-representation method takes full advantage of graphics processors to speed up the processing power of non-binary LDPC decoding algorithms. The experimental results show that the proposition-adjoint non-binary low-density decoder based on the implementation of the graphics processor ustroytvo can achieve high performance, flexibility and scalability.

Key words: non-binary LDPC decoder decoding algorithm Min-Max, parallel architecture

References

1. Gallager R. Low-density parity-check codes,» IRE Transactions on Information Theory, vol. 8, no. 1, 1962.

2. Lin J., Sha J., Wang Z., Li L. Efficient decoder design for nonbinary quasicyclic LDPC codes, IEEE Transactions on Circuits and Systems I: Regular Papers, , May 2010.

3. Bashkirov A. V. Model macshtabiruemogo LDPC - decoder nizkoy mochnosti s ispolzovaniem algoritmicheskogo sinteza vusokogo yrovnj [Model Low power LDPC-scalable decoder using the highlevel algorithmic synthesis] Voronezh, VSTU 2016. 65-69 pp.

4. Bashkirov A. V. Realizachij LDPC - decoder na massivno-parallelnix vichislitelnix ystroystvah [Implementation of the LDPC-decoder on the massively parallel computing devices] Voronezh, VSTU 2015. 97-99 pp.