УДК 004.042
Аксенов Сергей Владимирович
Национальный исследовательский Томский политехнический университет
Россия, Томск Кандидат технических наук, доцент E-Mail: [email protected]
Мальчуков Андрей Николаевич
Национальный исследовательский Томский политехнический университет
Россия, Томск Доцент/к.т.н.
E-Mail: [email protected]
Мыцко Евгений Алексеевич
Национальный исследовательский Томский политехнический университет
Россия, Томск Магистрант E-Mail: [email protected]
Применение технологии параллельных вычислений OpenMP для поиска образующих полиномов
Аннотация: В работе рассматривается вопрос применения технологии параллельных вычислений OpenMP для задачи поиска образующих полиномов. Задача поиска образующих полиномов для создания блоковых полиномиальных кодов достаточно трудоёмка. Например, для поиска образующего полинома, на основе которого строится помехоустойчивый код (m = 32, t = 3), необходимо две недели непрерывной работы программы на процессоре Intel XEON 5150 с частотой ядра 2.66 ГГц и объёмом оперативной памяти 1 Гб. В статье приведено описание алгоритма поиска образующих полиномов, на основе которых строятся коды более эффективные, чем коды Боуза-Чоудхури-Хоквингема. В статье рассмотрен алгоритм поиска образующих полиномов и проанализирован с точки зрения возможности применения технологии параллельных вычислений OpenMP. Описана программная реализация алгоритма поиска образующих полиномов с применением технологии параллельных вычислений OpenMP. Для сравнения быстродействия программных реализаций с применением и без применения OpenMP поставлен компьютерный эксперимент. Результаты поставленного компьютерного эксперимента по исследованию быстродействия последовательной и распараллеленной реализаций алгоритма поиска полиномов показали, что применение технологии OpenMP позволяет при определенных входных параметрах (m=9, t=2) повысить быстродействие до 20-24 раз. В среднем применение OpenMP увеличивает быстродействие алгоритма до 3 раз.
Ключевые слова: Образующий полином; параллельные вычисления; алгоритм поиска; расстояние по Хэммингу; потоки; помехоустойчивый код; OpenMP.
Идентификационный номер статьи в журнале 86TVN613
Sergei Aksenov
National Research Tomsk polytechnic university
Russia, Tomsk E-Mail: [email protected]
Andrei Malchukov
National Research Tomsk polytechnic university
Russia, Tomsk E-Mail: [email protected]
Evgeniy Mytsko
National Research Tomsk polytechnic university
Russia, Tomsk E-Mail: [email protected]
Using of parallel computing technology OpenMP to search for the generator polynomials
Abstract: The paper deals with the application of parallel computing technology OpenMP for search tasks forming polynomials. Forming the task of finding polynomials to create polynomial block codes is quite laborious. For example for generating polynomial , on which basis the fail-safe code (m = 32 , t = 3) , you need two weeks of continuous work program on the processor Intel XEON 5150 with a core clock of 2.66 GHz and RAM 1 GB. The article describes the search algorithm forming polynomials , which are constructed on the basis of codes more efficient than Bose-Chaudhuri-Hocquenghem codes. The article describes the ability to form the polynomials and analyzed in terms of the possibility of using parallel computing technology OpenMP. The computer program to search generating polynomial using parallel computing technology OpenMP. Computer experiment was delivered to compare the performance of software implementations with and without the use OpenMP. Results supplied computer experiment to study the performance of sequential and parallelized implementations of the search algorithm polynomials showed that the use of OpenMP technology allows under certain input parameters (m = 9 , t = 2) to increase the speed of 20-24 times. On average, using of OpenMP algorithm enhances performance up to 3 times.
Keywords: Generator polynomial; parallel сomputing; search algorithm; Hamming distance; threads; error controlled code; OpenMP.
Identification number of article 86TVN613
Введение
При построении блоковых помехоустойчивых кодов (БЧХ-кодов, Рида-Соломона) используются полиномы Жегалкина. Полиномы, участвующие в построении кода, называются образующие полиномы. Выбор образующего полинома под конкретную задачу зависит от двух основных параметров блокового помехоустойчивого кода - длина блока данных т и количество исправляемых кодом независимых ошибок t. Отдельные коды, такие как коды Боуза-Чоудхори-Хоквингема (БЧХ-коды) [4], имеют чёткие рекомендации выбора образующего полинома, но такие коды ограничены фиксированной длиной кодового слова (р - любое натуральное число) [6]. Остальные длины кодовых слов получаются путём укорачивания более длинных кодовых слов за счёт уменьшения разрядности информационного блока при сохранении количества контрольных разрядов. Укорачивание БЧХ-кодов вводит лишнюю избыточность, которая не несёт в себе дополнительных корректирующих возможностей, а лишь уменьшает эффективность кода [2,5].
Для поиска образующих полиномов, более эффективных, чем укороченные БЧХ-коды, необходимы большие вычислительные затраты. Это связано с тем, что мы знаем только необходимые начальные условия для поиска, такие как минимальные вес образующего полинома, минимальная длина кодового слова, а значит и минимальная длина образующего полинома. Для того, чтобы найти подходящий полином необходимо перебрать все полиномы, подходящие под выше озвученные необходимые условия и если среди них не найдётся полином, который пройдёт проверки на достаточные условия для образующего полинома, то поиск продолжится среди полиномов, длина которых на единицу больше, чем предыдущих. Среди достаточных условий образующего полинома для заданных значений т и X - являются два основных условия: 1) строящийся на основе этого образующего полинома код должен иметь расстояние Хэмминга не меньшее, чем ^=2Х+1; 2) остатки от деления всех комбинаций ошибок на образующий полином в рамках заданной X должны быть уникальными.
Для проверки на достаточные условия каждого претендента на образующий полином необходимо провести множество итерационных вычислений, что требует больших временных и вычислительных затрат. Например, для вычисления образующего полинома для п=32, 1=3 на процессоре 1Пе1 XEON 5150 с частотой ядра 2.66 ГГц и объёмом оперативной памяти 1 Гб [9] потребовалось 2 недели.
В данной работе рассматривается применение технологий параллельных вычислений для уменьшения времени, требуемого в задаче поиска образующего полинома.
1. Описание алгоритма поиска образующего полинома
Алгоритм поиска образующих полиномов заключается в полном переборе всех полиномов - претендентов, что является ресурсоемкой задачей. Таким образом, для увеличения быстродействия алгоритма поиска следует применить технологии параллельных вычислений.
Ниже представлен алгоритм поиска образующих полиномов [7].
Начало.
Шаг 1. Задаются т - разрядность информационного блока и X - желаемая корректирующая способность кодека.
Шаг 2. Вычисляется минимальная длина контрольного блока (старшая степень образующего полинома) по формуле для поиска «границы Хэмминга» [8]:
/=0
где к - старшая степень образующего полинома, X - количество независимых ошибок, исправляемых кодом, п - разрядность кодового слова.
Шаг 3. Выбирается начальное значение веса полинома н = йт.. Минимальное расстояние кода, исправляющего X независимых ошибок, вычисляется по формуле [7]: ^т=2Х+1.
Шаг 4. Выбирается полином из множества, состоящего из полиномов со старшей степенью, равной к, и весом, равным н.
Шаг 5. Строится помехоустойчивый полиномиальный код на основе выбранного образующего полинома и генерируются все кодовые слова.
Шаг 6. Вычисляется минимальное кодовое расстояние построенного кода (путём нахождения минимального веса среди всех кодовых слов, за исключением нулевого слова).
Шаг 7. Если вычисленное кодовое расстояние удовлетворяет заданным требованиям, то переходим на шаг 8, иначе переходим на шаг 10.
Шаг 8. Вычисляются синдромы ошибок путем деления всех комбинаций ошибок на образующий полином.
Шаг 9. Если все синдромы ошибок уникальны для построенного кода, то полином принимается в качестве образующего полинома и переходим на шаг 11, иначе переходим на шаг 9.
Шаг 10. Если проверены все полиномы из множества (множество задано на шаге 4), то переходим на шаг 11, иначе переходим на шаг 4.
Шаг 11. Если вес н равен к, увеличиваем к на единицу и переходим на шаг 4, иначе увеличиваем вес н и переходим на шаг 4.
Шаг 12. Образующий полином сохраняется в файл.
2. Анализ алгоритма поиска
Для поиска образующего полинома задаются входные параметры, такие как: разрядность информационного блока (т) и количество исправляемых независимых ошибок (1). Выходным значением является образующий полином в двоичном представлении.
При анализе алгоритма поиска образующего полинома было установлено, что при больших значениях входного параметра т значительное время работы алгоритма занимает вычисление расстояния Хэмминга помехоустойчивого кода, а также при увеличении значений входного параметра 1 увеличивается время проверки синдромов на уникальность. В данном случае этап проверки синдромов на уникальность реализован таким образом, что в нем можно удачно применить технологию распараллеливания вычислений ОрепМР.
3. Применение технологии OpenMP для поиска образующего полинома
Данную технологию можно применять к отдельным блокам, функциям, циклам программы. Ниже на рис. 1 представлена схема распараллеливания алгоритма с применением ОрепМР [1,3,10] для этапа проверки синдромов ошибок кратности 1 на уникальность.
Подсчет количества синдромов для кратности ошибок t
I
Выделение памяти под все синдромы
I I I I
Формирование комбинации ошибок для
I Г| I
Подсчет количества синдромов (iters) для данной комбинации
III!
Выделение памяти для синдромов
I I I !ч
Для x от 0 до Iters
1 1 1 1
Деление комбинации ошибок на образующий полином
1 1 1 1
Сдвиг комбинации ошибок
1 1 1 1
Запись синдрома в общий массив синдромов ошибок
Проверка общего массива синдромов на уникальность
Рис. 1. Блок-схема этапа проверки синдромов на уникальность с применением ОрепМР
В последовательном алгоритме данный этап требует значительных вычислительных затрат, в виду того, что на данном шаге происходит многократное деление полиномов, являющихся комбинациями ошибок, на образующий полином. В параллельной области данного алгоритма число потоков задается равное кратности ошибок 1.
Таким образом, засчёт применения технологии параллельного программирования можно добиться увеличения быстродействия алгоритма поиска образующего полинома. Для получения временной статистики было произведено по 20 запусков алгоритма на процессоре Іпіеі ХБОК 5150 2.660Ь2 [9] с различными входными параметрами т (8-24) и 1 (2-4). Средние значения полученных результатов были занесены в таблицу 2.
Таблица 2
Результаты распараллеливания алгоритма поиска образующего полинома
т, 1 Последовательный алгоритм,с Распараллеленный (ОрепМР), с
8,2 0,0127 0,0036
9,2 0,087 0,0036
10,2 0,01 0,0076
11,2 0,0604 0,008
12,2 0,05587 0,01171
13,2 0,0224 0,02075
14,2 0,1518 0,1295
15,2 0,1942 0,1588
16,2 0,3068 0,3042
17,2 0,4673 0,4475
18,2 0,7635 0,7333
19,2 1,3515 1,3455
20,2 2,652 2,6362
21,2 5,4034 5,3894
22,2 99,14786 98,5872
23,2 151,9052 152,2207
24,2 179,3876 178,3392
8,3 0,0164 0,01
9,3 0,0767 0,0099
10,3 0,0281 0,0105
11,3 0,0741 0,0133
12,3 0,0918 0,0164
13,3 0,3802 0,2611
14,3 1,3676 1,2753
15,3 1,6144 1,4696
16,3 1,6741 1,5749
17,3 16,3593 16,0144
18,3 17,0114 16,5854
19,3 85,4211 84,1132
20,3 272,7466 266,3312
21,3 279,999 275,767
22,3 294,6304 291,4553
23,3 412,4652 407,7394
24,3 696,4012 685,2149
8,4 1,6563 0,2782
9,4 3,7411 1,1878
10,4 5,6612 1,2657
11,4 10,8321 2,4947
12,4 35,8081 6,8514
13,4 52,8787 7,9978
14,4 132,7579 40,019
15,4 166,8613 41,6786
16,4 301,4198 140,5304
17,4 440,3622 230,8759
18,4 493,577 236,1132
19,4 569,6034 232,2966
20,4 659,76 240,7785
21,4 739,9808 239,1995
22,4 12172,68 11142,87
23,4 37390,24 35506,16
24,4 38618,16 36553,96
Для того, чтобы убедиться в достоверности результатов была составлена таблица доверительных интервалов (таблица 3).
Таблица 3
Доверительные интервалы
т, 1 Последовательный алгоритм, с Распараллеленный (ОрепМР), с
8,2 (0,0122;0,0133) (0,0035;0,0036)
9,2 (0,069;0,105) (0,0035;0,0036)
10,2 (0,0083;0,0117) (0,0073;0,008)
11,2 (0,0442;0,0766) (0,0077;0,0083)
12,2 (0,0411;0,0706) (0,0114;0,0119)
13,2 (0,0176;0,0273) (0,0197;0,0217)
14,2 (0,1441;0,15951) (0,1288;0,1302)
15,2 (0,1871;0,2012) (0,1582;0,1595)
16,2 (0,3059;0,3077) (0,3035;0,3049)
17,2 (0,4602;0,4744) (0,4446;0,4505)
18,2 (0,7557;0,7713) (0,732;0,7345)
19,2 (1,3616;1,3815) (1,357;1,414)
20,2 (2,4631;2,481) (2,6308;2,6415)
21,2 (5,3904;5,4163) (5,3065;5,4722)
22,2 (99,1152;99,1804) (98,1356;99,0388)
23,2 (151,7935;152,0169) (151,0551; 153,3862)
24,2 (179,0663;179,7089) (177,1312; 179,5472)
8,3 (0,016;0,0167) (0,0093;0,0107)
9,3 (0,0596;0,0938) (0,0092;0,0105)
10,3 (0,028;0,0281) (0,0099;0,0111)
11,3 (0,0639;0,0843) (0,0125;0,0141)
12,3 (0,0788;0,1049) (0,0157;0,0172)
13,3 (0,3768;0,3837) (0,2603;0,262)
14,3 (1,3605;1,3747) (1,2699;1,2808)
15,3 (1,6046;1,6243) (1,4669;1,4723)
16,3 (1,6733;1,6748) (1,5514; 1,5984)
17,3 (16,2955; 16,4231) (15,8829; 16,146)
18,3 (16,9563;17,0665) (16,5309;16,64)
19,3 (85,2101 ;85,6321) (83,8728;84,3536)
20,3 (271,6662;273,8271) (265,952;266,7104)
21,3 (279,559;280,4389) (274,5417;276,9923)
22,3 (293,5874;295,6734) (289,2895;293,621)
23,3 (412,4363;412,4941) (406,6997; 408,779)
24,3 (695,0729;697,7295) (684,3299;686,0998)
8,4 (1,6528;1,6597) (0,2764;0,2801)
9,4 (3,7146;3,7676) (1,1853;1,1903)
10,4 (5,5593;5,7631) (1,2518;1,2795)
11,4 (10,6758;10,9886) (2,4896;2,4998)
12,4 (35,3801;36,236) (6,8293;6,8735)
13,4 (52,3321;53,4253) (7,983;8,0126)
14,4 (131,9155; 133,6002) (39,8697;40,1682)
15,4 (165,3077;168,4149) (41,0962;42,261)
16,4 (299,6312;303,2084) (138,5129;142,5479)
17,4 (436,6333;444,091) (229,7739;231,978)
18,4 (491,1455;496,0084) (234,7984;237,4279)
19,4 (564,6224;574,5843) (231,5952;232,9979)
20,4 (656,1702;663,3498) (238,4526;243,1043)
21,4 (739,9389;740,0227) (237,3489;241,0501)
22,4 (12149,38;12195,98) (11105,67;11180,07)
23,4 (37354,89;37425,59) (35498,79;35513,52)
24,4 (38562,61;38673,71) (36383,68;36724,23)
Для того, чтобы наглядно показать разницу по времени вычисления между последовательным и параллельным вариантами алгоритма были построены графики ускорений параллельного алгоритма относительно последовательного при различных входных параметрах (рис. 2, 3, 4).
Таким образом, по рис. 2 видно, что для кратности исправляемых ошибок равной двум, с помощью применения технологии параллельного программирования удалось добиться увеличения быстродействия алгоритма при т = 8 и т = 9 до 20-24 раз. Однако в данном случае при входном параметре т > 13 ускорение относительно последовательного алгоритма сохраняется на уровне единицы. При 1 = 3 (рис. 3) коэффициент ускорения алгоритма с ОрепМР достигает 5 - 7, однако при т > 14 сохраняется на уровне единицы. Для кратности исправляемых ошибок равной четырем (рис.4) коэффициент ускорения варьируется от 1 до 6.5.
Средний коэффициент ускорения алгоритма с применением ОрепМР относительно последовательного варианта для всех входных параметров составляет 2,89.
Рис. 2. Ускорение алгоритма с применением ОрепМР относительно последовательного
алгоритма при t = 2
/ \
Название диаграммы 8,3
9,5
10,3
II,3
12,3
13,3
14,3
15,3
16,3
V__________________________________________________________________________у
Рис. 3. Ускорение алгоритма с применением ОрепМР относительно последовательного
алгоритма при t = 3
Рис. 4. Ускорение алгоритма с применением ОрепМР относительно последовательного
алгоритма при t = 4
Заключение
Алгоритм поиска образующих полиномов программно реализован, используя технологии параллельных вычислений ОрепМР. Результаты поставленного компьютерного эксперимента по исследованию быстродействия последовательной и распараллеленной реализаций алгоритма поиска полиномов показали, что применение технологии ОрепМР позволяет при определенных входных параметрах (т=9, 1=2) повысить быстродействие до 2024 раз. В среднем применение ОрепМР увеличивает быстродействие алгоритма до 3 раз.
ЛИТЕРАТУРА
1. Антонов А. С. Параллельное программирование с использованием технологии ОпенМП //Издательство московского университета, 2009. - 78 С.
2. Белицкая Л.А. Исправление одиночных ошибок в многофазных кодах// Известия Томского политехнического университета. - 2006. - Т. 309. - № 2. - С. 212-213.
3. Богачев К.Ю. Основы параллельного программирования: учебное издание - М.: Бином. Лаборатория знаний. , 2003. - 343 с.
4. Боуз Р.К., Рой-Чоудхури Д.К. Об одном классе двоичных групповых кодов с исправлением ошибок. - В кн.: Кибернетика. М., 1964. - С.112-118.
5. Каменский С.В., Меньщиков К.И. Исследование некоторых алгоритмов кодирования и декодирования кодов Рида-Соломона. // Труды Международной конференции "Информационные системы и технологии". 2003. - Т. 1. - С. 169171.
6. Логвиненко Н.Ф. Оптимизация длин кодовых блоков и пакетов в системах защиты от ошибок с переспросом. // Управляющие системы и машины, 1995. -№3 - С. 20-23.
7. Мальчуков А.Н. Алгоритм поиска образующих полиномов для системы проектирования кодеков помехоустойчивых кодов //Современные техника и технологии: Труды ХИВ Международной научно-практической конференции студентов, аспирантов и молодых ученых - Томск, 24-28 марта 2008. - Томск: ТПУ, 2008. - С. 340-341.
8. Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования: методы, алгоритмы, применение: учебное пособие: пер. с англ. - М.: Техносфера, 2006. -320 с.
9. СКИФ-1. Центер оф суперцомпутинг. 2013. URL: http://cluster.tpu.ru/?q=node/26 (data obrashhenija: 15.10.2013)
10. OpenMP na primere kompiljatora GCC. 2013. URL: http://www.ibm.com/developerworks/ru/library/au-aix-openmp-framework/ (data obrashhenija: 15.10.2013)
Рецензент: Авдеева Диана Константиновна, директор, д.т.н., ООО «Медприбор» (г.
Томск).
REFERENCES
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Antonov A. S. Parallel'noe programmirovanie s ispol'zovaniem tehnologii OpenMP //Izdatel'stvo moskovskogo universiteta, 2009. - 78 S.
Belickaja L.A. Ispravlenie odinochnyh oshibok v mnogofaznyh kodah. // Izvestija Tomskogo politehnicheskogo universiteta. - 2006. - T. 309. - № 2. - S. 212-213. Bogachev K.Ju. Osnovy parallel'nogo programmirovanija : uchebnoe izdanie - M.: Binom. Laboratorija znanij. , 2003. - 343 s.
Bouz R.K., Roj-Choudhuri D.K. Ob odnom klasse dvoichnyh gruppovyh kodov s ispravleniem oshibok. - V kn.: Kibernetika. M., 1964. - S.112-118.
Kamenskij S.V., Men'shhikov K.I. Issledovanie nekotoryh algoritmov kodirovanija i dekodirovanija kodov Rida-Solomona. // Trudy Mezhdunarodnoj konferencii "Informacionnye sistemy i tehnologii". 2003. - T. 1. - S. 169-171.
Logvinenko N.F. Optimizacija dlin kodovyh blokov i paketov v sistemah zashhity ot oshibok s peresprosom. // Upravljajushhie sistemy i mashiny, 1995. - №3 - S. 20-23. Mal'chukov A.N. Algoritm poiska obrazujushhih polinomov dlja sistemy proektirovanija kodekov pomehoustojchivyh kodov //Sovremennye tehnika i tehnologii: Trudy XIV Mezhdunarodnoj nauchno-prakticheskoj konferencii studentov, aspirantov i molodyh uchenyh - Tomsk, 24-28 marta 2008. - Tomsk: TPU, 2008. - S. 340-341.
Morelos-Saragosa R. Iskusstvo pomehoustojchivogo kodirovanija: metody, algoritmy, primenenie: uchebnoe posobie: per. s angl. - M.: Tehnosfera, 2006. - 320 s.
SKIF -1. Center of supercomputing. 2013. URL: http://cluster.tpu.ru/?q=node/26 (data obrashhenija: 15.10.2013)
OpenMP na primere kompiljatora GCC. 2013. URL: http://www.ibm.com/developerworks/ru/library/au-aix-openmp-framework/ (data obrashhenija: 15.10.2013)