Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень
Аналізується складність за кількістю однослівних операцій при реалізації операції ЦЗ (циклічної згортки) у паралельній моделі обчислень. Розглянуто методи обчислення ЦЗ, коли кожна точка згортки є багаторозрядним числом. Запропоновано швидкий метод обчислення ЦЗ такого виду на основі ШПФ невеликої д...
Збережено в:
Дата: | 2016 |
---|---|
Автори: | , |
Формат: | Стаття |
Мова: | Ukrainian |
Опубліковано: |
Інститут проблем штучного інтелекту МОН України та НАН України
2016
|
Назва видання: | Штучний інтелект |
Теми: | |
Онлайн доступ: | http://dspace.nbuv.gov.ua/handle/123456789/132054 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
Цитувати: | Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень / А.М. Терещенко, В.К. Задірака // Штучний інтелект. — 2016. — № 2. — С. 103-112. — Бібліогр.: 5 назв. — укр. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraineid |
irk-123456789-132054 |
---|---|
record_format |
dspace |
spelling |
irk-123456789-1320542018-04-11T03:03:32Z Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень Терещенко, А.М. Задірака, В.К. Теорія та засоби обчислювального інтелекту Аналізується складність за кількістю однослівних операцій при реалізації операції ЦЗ (циклічної згортки) у паралельній моделі обчислень. Розглянуто методи обчислення ЦЗ, коли кожна точка згортки є багаторозрядним числом. Запропоновано швидкий метод обчислення ЦЗ такого виду на основі ШПФ невеликої довжини. The complexity of number of single precision operations is analyzed in multidigit convolution computation in parallel computational model. Calculation methods of cyclic convolution elements are considered when every element is high precision value. The effective method based on FFT of small length of calculation of cyclic convolution is proposed. 2016 Article Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень / А.М. Терещенко, В.К. Задірака // Штучний інтелект. — 2016. — № 2. — С. 103-112. — Бібліогр.: 5 назв. — укр. 1561-5359 http://dspace.nbuv.gov.ua/handle/123456789/132054 519.6 uk Штучний інтелект Інститут проблем штучного інтелекту МОН України та НАН України |
institution |
Digital Library of Periodicals of National Academy of Sciences of Ukraine |
collection |
DSpace DC |
language |
Ukrainian |
topic |
Теорія та засоби обчислювального інтелекту Теорія та засоби обчислювального інтелекту |
spellingShingle |
Теорія та засоби обчислювального інтелекту Теорія та засоби обчислювального інтелекту Терещенко, А.М. Задірака, В.К. Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень Штучний інтелект |
description |
Аналізується складність за кількістю однослівних операцій при реалізації операції ЦЗ (циклічної згортки) у паралельній моделі обчислень. Розглянуто методи обчислення ЦЗ, коли кожна точка згортки є багаторозрядним числом. Запропоновано швидкий метод обчислення ЦЗ такого виду на основі ШПФ невеликої довжини. |
format |
Article |
author |
Терещенко, А.М. Задірака, В.К. |
author_facet |
Терещенко, А.М. Задірака, В.К. |
author_sort |
Терещенко, А.М. |
title |
Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень |
title_short |
Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень |
title_full |
Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень |
title_fullStr |
Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень |
title_full_unstemmed |
Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень |
title_sort |
швидке обчислення циклічної згортки багаторозрядних чисел на основі шпф у паралельній моделі обчислень |
publisher |
Інститут проблем штучного інтелекту МОН України та НАН України |
publishDate |
2016 |
topic_facet |
Теорія та засоби обчислювального інтелекту |
url |
http://dspace.nbuv.gov.ua/handle/123456789/132054 |
citation_txt |
Швидке обчислення циклічної згортки багаторозрядних чисел на основі ШПФ у паралельній моделі обчислень / А.М. Терещенко, В.К. Задірака // Штучний інтелект. — 2016. — № 2. — С. 103-112. — Бібліогр.: 5 назв. — укр. |
series |
Штучний інтелект |
work_keys_str_mv |
AT tereŝenkoam švidkeobčislennâciklíčnoízgortkibagatorozrâdnihčiselnaosnovíšpfuparalelʹníjmodelíobčislenʹ AT zadírakavk švidkeobčislennâciklíčnoízgortkibagatorozrâdnihčiselnaosnovíšpfuparalelʹníjmodelíobčislenʹ |
first_indexed |
2025-07-09T16:37:42Z |
last_indexed |
2025-07-09T16:37:42Z |
_version_ |
1837188059351744512 |
fulltext |
ISSN 1561-5359. Штучний інтелект, 2016, № 2
© А.М. Терещенко, В.К. Задірака 103
УДК 519.6
А.М. Терещенко, В.К. Задірака
Інститут кібернетики ім. В.М. Глушкова НАН України,
проспект Академіка Глушкова, 40, Київ, 03178
ШВИДКЕ ОБЧИСЛЕННЯ ЦИКЛІЧНОЇ ЗГОРТКИ
БАГАТОРОЗРЯДНИХ ЧИСЕЛ НА ОСНОВІ ШПФ
У ПАРАЛЕЛЬНІЙ МОДЕЛІ ОБЧИСЛЕНЬ
A.M. Tereshchenko, V.K.Zadiraka
VM Glushkov Institute of Cybernetics of NAS of Ukraine
40 Glushkov ave., Kyiv, Ukraine, 03187
FAST PROCEEDING OF CYCLIC CONVOLUTION OF
MULTIDIGIT VALUES BASED ON FFT IN PARALLEL
COMPUTATIONAL MODEL
Аналізується складність за кількістю однослівних операцій при реалізації операції ЦЗ (циклічної
згортки) у паралельній моделі обчислень. Розглянуто методи обчислення ЦЗ, коли кожна точка згортки є
багаторозрядним числом. Запропоновано швидкий метод обчислення ЦЗ такого виду на основі ШПФ не-
великої довжини.
Ключові слова: багаторозрядне множення, паралельна модель обчислень, циклічна згортка, ШПФ.
The complexity of number of single precision operations is analyzed in multidigit convolution
computation in parallel computational model. Calculation methods of cyclic convolution elements are considered
when every element is high precision value. The effective method based on FFT of small length of calculation of
cyclic convolution is proposed.
Key words: multidigit multiplication, parallel computational model, cyclic convolution, FFT.
Вступ
У багатьох задач цифрової обробки (ЦО) необхідно обчислювати циклічну
згортку (ЦЗ). Деякі задачі ЦО можна звести до задачі обчислення ЦЗ. Оптимізації
обчислення ЦЗ приділено багато уваги [1, 2]. При обчисленні згорток великої довжини
(більше 1024 точок) з використанням звичайної арифметики з плаваючою комою оди-
нарної (або подвійної) точності накопичується похибка заокруглення. Якщо похибка
заокруглення є великою, то вона впливає на результат обчислення так, що результат
обчислення втрачає достовірність [3]. Для уникнення похибки заокруглення, необхідно
оперувати більшою кількістю розрядів у кожній операції. Використання операцій з
більшою розрядністю значно уповільнює виконання багаторозрядної операції.
Сучасні процесори дозволяють виконувати операції над числами, довжина яких
не перевищує 64 біти (подвійна точність) на апаратному рівні. Роботи [4, 5] присвячені
оптимізації обчислення ЦЗ, але з точністю операцій процесора. Для отримання більшої
точності, необхідно використовувати спеціальну арифметику, реалізовану на
програмному рівні.
Окрім ЦО, згортка використовується для реалізації операцій багаторозрядної
арифметики [3]. При реалізації криптографічних операцій найбільше навантаження
лягає на операцію багаторозрядного множення. У роботах [4, 5] показано метод обчис-
лення операції множення на основі ЦЗ. Найбільш швидкий метод реалізації багатороз-
рядної операції множення базується на ШПФ (швидкому перетворенні Фур‘є).
Метод множення «у стовпчик» є ефективним при множенні багаторозрядних чисел з
кількістю слів 256M (де кожне слово має довжину у 32 біти). Метод ШПФ є
ефективним, починаючи з 256M . Операція множення двох чисел довжиною 256M
слів може бути реалізована на основі ШПФ довжиною 5122 M (метод Кулі-Туки).
ISSN 1561-5359. Штучний інтелект, 2016, № 2
104 © А.М. Терещенко, В.К. Задірака
При цьому треба враховувати, що при обчисленні ОШПФ (оберненого швидкого
перетворення Фур‘є) необхідно виконувати ділення на 5122 M . При діленні на 512
відбувається зсув на 9512log2 бітів. В операціях одинарної точності (32 біта)
мантиса займає 23 біти. Тобто, після ділення на 512 (або зсуву вправо на 9 бітів)
залишається 92314 значущих бітів, що говорить про те, що на початку обчислень
враховується тільки 7 значущих бітів, бо при кожному множенні довжина результату
подвоюється, а кожне подальше додавання може збільшувати результат на один біт.
Так, наприклад, при використанні 8 значущих бітів на початку обчислень після
першого множення результат буде займати 16 значущих бітів. Якщо обчислення
відбувається, наприклад, для обчислення ЦЗ довжиною 256 (8 бітів) точок, то після 8-ої
ітерації ШПФ кількість заповнених значущих бітів буде більшою, ніж 24.
При використанні операцій подвійної точності (64 біти) довжина мантиси складає
51 біт. Тобто, на початку обчислення ШПФ кількість значущих бітів не повинна
перевищувати 2)951(21 при множенні 256-слівного числа на основі ШПФ
довжиною 512. Зрозуміло, що при множенні чисел довжиною більшою, ніж 256 слів,
кількість значущих бітів повинна бути меншою, ніж 21, для уникнення переповнення.
Виходячи з попередніх міркувань, множення на основі ШПФ є найшвидшим
методом, але існує апаратне обмеження довжини множників у 537621256 бітів, які
можна перемножити на основі ШПФ, використовуючи операції подвійної точності. При
реалізації множення чисел більших, ніж 5376 бітів, на основі ШПФ, мантиса повинна
мати більше ніж 51 біт для уникнення переповнення. Виникає потреба використання
арифметики з точністю, більшою ніж подвійна, яку необхідно реалізовувати програмно.
На практиці це виглядає так, що багаторозрядне число ділиться на M секцій, де кожна
секція займає більше ніж 128 бітів. Довжина ШПФ, на основі якої виконується
обчислення, дорівнює числу секцій N . Можна використовувати різні методи
обчислення для кожного «рівня». Один метод використовувати для реалізації
багаторозрядної операції множення для M (множник з M секцій), а інший метод – для
оперування розрядами для N (кожна секція складається з N слів, кожне з яких має 32
біти). Метод на основі ШПФ буде найефективнішим при довжинах, більших ніж 256
секцій (для рівня M ) та 256 слів (для рівня N ). Для довжин, менших ніж 256, для
рівнів M та N метод на основі ШПФ програє методу множення «у стовпчик».
Загальноприйнято, що ШПФ треба використовувати, коли довжина ШПФ
перевищує 256 точок. У даній роботі показано, що використання ШПФ довжиною 16 є
ефективним при обчисленні ЦЗ великих чисел. Запропонований метод дає меншу
складність за кількістю однослівних операцій у порівнянні з методом «у стовпчик».
Одним з методів прискорення обчислення багаторозрядних операцій є їх
реалізація у паралельній моделі обчислення, окрім використання швидких методів, які є
ефективними у своїх діапазонах довжин багаторозрядних чисел. Може здаватися, що
при задіянні N паралельних процесорів, можна прискорити час виконання у N разів.
Але, на практиці, це зовсім не так. По-перше, не всі методи можна розпаралелити. Так,
деякі методи мають пов’язані кроки обчислення, коли наступний крок обчислення
оснований на результаті попереднього і не може бути виконаний незалежно від інших
кроків. По-друге, при більшій кількості задіяних процесорів необхідно враховувати
більше обмежень. Так, наприклад, розмір кеш-пам’яті є постійним і збільшення
кількості процесорів означає, що кожному процесору буде виділено менше кеш-
пам‘яті. При розбитті процесорів у групи, необхідно виконувати синхронізацію між
групами, що є дуже витратною операцією. При ще більшому збільшенні кількості
ISSN 1561-5359. Штучний інтелект, 2016, № 2
© А.М. Терещенко, В.К. Задірака 105
процесорів необхідно враховувати, що кожен паралельний процесор потребує енергію.
Далі у роботі багаторозрядними числами будемо називати числа, які займають
більше ніж два слова у пам’яті комп’ютера. Великі цілі числа є багаторозрядними чис-
лами. Далі у роботі використовується термін багаторозрядні числа без розділення на ве-
ликі цілі числа та числа з плаваючою комою з великою мантисою. Отримані у роботі
результати можуть бути використані як для оптимізації обчислень з великими цілими
числами, так і для реалізації операцій для отримання більшої кількості розрядів після коми.
Мета дослідження
Метою даної роботі є знаходження швидкого алгоритму обчислення циклічної
згортки багаторозрядних чисел у паралельній моделі обчислення. Швидкий алгоритм
має бути ефективним, використовувати максимально кеш-пам’ять та векторні операції і
задіяти невелику кількість паралельних процесорів для зменшення обсягу викори-
стання електроенергії при реалізації у паралельній моделі обчислень. Для цього прове-
дено аналіз складності реалізації операції циклічної згортки багаторозрядних чисел на
основі двох методів реалізації багаторозрядної операції множення: множення «у
стовпчик» та на основі ШПФ. Досліджено область диференційованої поведінки алго-
ритмів на основі двох методів. Показано, що запропонований метод на основі ШПФ
невеликої довжини є ефективним для умов, коли багаторозрядне число займає не
менше восьми слів.
Постановка задачі
Нехай багаторозрядні числа iX , iY , 1,0 Mi складаються з M секцій. Кожна i
секція є N -слівним числом, у свою чергу, де кожне число має довжину у -біт.
Необхідно побудувати швидкий алгоритм обчислення циклічної згортки довжиною M
секцій, де кожна секція є N -слівним числом, у паралельній моделі обчислень:
1
0
)(
M
i
jiij
M
YXR , 1,0 Mj , (1)
де jR – N2 -слівне число.
Наприклад, обчислення ЦЗ 444 YXR довжиною 4M розрядів можна
представити у наступному вигляді:
3210
21033
10322
03211
32100
RRRR
YYYYX
YYYYX
YYYYX
YYYYX
Рис. 1. Обчислення ЦЗ довжиною у 4 точки
Вираз (1) може бути обчислений, використовуючи метод «у стовпчик» при
реалізації багаторозрядної операції множення. Розглянемо складність такої реалізації у
паралельній моделі обчислень.
еалізація на основі множення «у стовпчик»
Знайдемо спочатку складність алгоритму множення двох N -слівних чисел YX
стандартним методом «у стовпчик». Для спрощення у наступному алгоритмі (і далі по
тексту) вважаємо, що знак переносу у 12 N слово не виникає. Множення «у
стовпчик» двох N -слівних чисел YX можна представити у вигляді наступної
ISSN 1561-5359. Штучний інтелект, 2016, № 2
106 © А.М. Терещенко, В.К. Задірака
формули:
12
0
)2(
N
k
k
krR ,
Nkyx
Nkyx
r N
Nkt
tkt
k
t
tkk
k 1
1
0
)(
)(
,
де R - N2 -слівне число.
Використаємо наступні позначення: 01 )(,)( sSLsSH – знаходження старшої
та молодшої частин двослівного числа 01 2 ssS .
Алгоритм 1. Множення N -слівних чисел YX стандартним методом «у
стовпчик» при задіянні N -паралельних процесорів без врахування знаків переносу.
На вході:
1
0
)2(
N
k
k
kxX ,
1
0
)2(
N
k
k
kyY , p – індекс процесора.
На виході:
12
0
)2(
N
k
k
krR – результат множення YX .
Крок 1. 0122 pp rr . // Ініціалізація
Крок 2. Для 0k по 1N
Крок 3. kp yxSS // Множення
Крок 4. )(SLrr kpkp , )(11 SHrr kpkp . // Додавання
Крок 5. Кінець циклу по k .
Примітка. Алгоритм 1 не є оптимальним за кількістю операцію запису у пам’ять.
Головною метою Алгоритму 1 є представлення загальної кількості операцій,
необхідних для реалізації багаторозрядної операції.
Лема 1. В Алгоритмі 1 при множенні двох N -слівних чисел стандартним
методом «у стовпчик» кожен з N паралельних процесорів виконає N однослівних
операцій множення та N2 однослівних операцій додавання.
Доведення. На кроках 2-5 необхідно виконати N ітерацій циклу. З врахуванням
того, що результатом множення двох однослівних чисел є двослівне число, необхідно
виконати у два рази більшу кількість однослівних операцій додавання. Лема доведена.
Далі розглянемо алгоритм, який обчислює циклічну згортку (1), при задіянні MN
паралельних процесорів. Алгоритм знаходить суми добутків N -слівних чисел
Mjii YX , 1,0 Mi , 1,0 Mj , на основі стандартного методу множення «у
стовпчик».
Алгоритм 2. Знаходження суми добутків N -слівних чисел на основі методу
множення «у стовпчик» при задіянні MN паралельних процесорів без врахування
знаків переносу.
На вході: iX , iY , 1,0 Mi ;
1,0 Mj – індекси ряду та стовпчика групи процесорів, яку можна
інтерпретувати у вигляді матриці.
На виході:
1
0
)(
M
i
jiij
M
YXR , 1,0 Mj .
ISSN 1561-5359. Штучний інтелект, 2016, № 2
© А.М. Терещенко, В.К. Задірака 107
Крок 1. 0jR . // Ініціалізація
Крок 2. Для 0i по 1M
Крок 3.
Mjiijj YXRR . // N -слівне множення
Крок 4. Кінець циклу по i . // на основі Алгоритму 1
Лема 2. В Алгоритмі 2 при знаходженні сум множень N -слівних чисел на основі
методу множення «у стовпчик» кожен з MN паралельних процесорів виконає MN
однослівних операцій множення та MN2 однослівних операцій додавання.
Доведення. Згідно з Лемою 1 при множення двох N -слівних чисел необхідно
виконати N однослівних операцій множень та N2 однослівних операцій додавання.
Таких ітерацій необхідно виконати M . Лема доведена.
Реалізація на основі ШПФ
У даній роботі пропонується обчислювати ЦЗ (1) великих чисел, використовуючи
метод множення на основі ШПФ, у паралельній моделі обчислень.
Розглянемо алгоритм множення N -слівних чисел YX на основі ШПФ довжини
N2 . Обчислення на основі ШПФ можна представити наступним чином:
))),(()),(((
2
1
2,22,2
*
2,2 ZYWZXWW
N
YXR NNNNNN , (2)
де NNW 2,2 та *
2,2 NNW ˗ матриці ДПФ та ОДПФ, які складаються з елементів
rk
N
i
rk
N eW N
2
2
2
2
, 12,0, Nrk ; Z складається з N нульових слів.
Лема 3. При множенні двох N -слівних чисел на основі ШПФ довжиною N2
кожен з N паралельних процесорів виконає N2log32 2 комплексних однослівних
операцій множення та N2log62 2 комплексних однослівних операцій
додавання/віднімання.
Доведення. У (2), для виконання одного ШПФ(ОШПФ) довжиною N2 ,
необхідно виконати N2log2 ітерацій ШПФ. На кожній ітерації «метелика»1
виконується N комплексних множень, результати яких додаються/віднімаються до/з
N2 комплексних елементів. Загалом, кожен паралельний процесор виконає N2log2
комплексних операцій множення та N2log2 2 комплексних операцій
додавання/віднімання при обчисленні одного ШПФ (ОШПФ). Усього необхідно
виконати два ШПФ та одне ОШПФ. Також, кожному з N процесорів необхідно
виконати додатково по дві поелементні комплексні операції множення. Лема доведена.
Представимо (1) для 0j у наступному вигляді з врахуванням (2):
1
0
2,22,2
*
2,20 )))),(()),(((
2
1(
M
i
iNNiNNNNj ZYWZXWW
N
R .
У попередньому виразі множник *
2,22
1
NNW
N
, що відповідає операції ОШПФ,
можна винести за знак суми, що значно спрощує обчислення.
1 «Метелик» – стандартна операція алгоритму ШПФ.
ISSN 1561-5359. Штучний інтелект, 2016, № 2
108 © А.М. Терещенко, В.К. Задірака
1
0
2,22,2
*
2,20 ))),(()),(((
2
1 M
i
iNNiNNNNj ZYWZXWW
N
R . (3)
Окрім (3), можна отримати ще більше спрощення при реалізації операції
багаторозрядного множення на основі ШПФ при обчисленні (1), якщо передобчислити
всі ДПФ jX̂ , jŶ , 1,0 Mj . Використовуючи передобчислені ДПФ jX̂ , jŶ ,
1,0 Mj , можна швидко знайти суми добутків ДПФ
1
0
)ˆˆ(ˆ
M
i
jiij
M
YXR ,
1,0 Mj , а потім на їх основі обчислювати елементи ЦЗ jNNj RW
N
R ˆ
2
1 *
2,2 ,
1,0 Mj . На прикладі обчислення ЦЗ довжини чотири, пропонується одним з кроків
виконувати наступне обчислення:
3210
21033
10322
03211
32100
ˆˆˆˆ
ˆˆˆˆˆ
ˆˆˆˆˆ
ˆˆˆˆˆ
ˆˆˆˆˆ
RRRR
YYYYX
YYYYX
YYYYX
YYYYX
Рис. 2. Обчислення ДПФ елементів ЦЗ довжиною у 4 точки
На рис. 2 0X̂ , 1X̂ , 2X̂ , 3X̂ , 0̂Y , 1̂Y , 2̂Y , 3̂Y , 0R̂ , 1R̂ , 2R̂ , 3R̂ є ДПФ відповідних
елементів ЦЗ 0X , 1X , 2X , 3X , 0Y , 1Y , 2Y , 3Y , 0R , 1R , 2R , 3R (див. рис. 1). У кожному
стовпчику елементи 0̂Y , 1̂Y , 2̂Y , 3̂Y циклічно повторюються. Тому замість 16 ШПФ, у
яких використовуються 0̂Y , 1̂Y , 2̂Y , 3̂Y , їх достатньо передобчилити 1 раз. Таким чином,
для обчислення ЦЗ (1) довжини 4 (рис. 1) на основі ШПФ (рис. 2) необхідно
передобчислити 8 ДПФ jX̂ , jŶ , 3,0j , та обчислити 4 ОШПФ jNNj RW
N
R ˆ
2
1 *
2,2 ,
3,0j . Загалом, необхідно виконати 12 ШПФ(ОШПФ) замість 32 ШПФ (16
багаторозрядних множень) та 4 ОШПФ.
Розглянемо загальний випадок, коли необхідно обчислити M сум, у яких
використовуються iX ,
MjiY , 1,0 Mi , 1,0 Mj :
1
0
2,22,2
*
2,2 ))),(()),(((
2
1 M
i
jiNNiNNNNj ZYWZXWW
N
R
M
,
1,0 Mj . (4)
Лема 4. При знаходженні сум (4) співмножників N -слівних чисел на основі
ШПФ довжини N2 , кожен з MN паралельних процесорів виконає NM 2log32 2
комплексних однослівних операцій множення та NM 2log232 2 комплексних
однослівних операцій додавання/віднімання у послідовній моделі обчислень.
Доведення. У (4) необхідно передобчислити M2 ШПФ для iX , iY , 1,0 Mi ,
та обчислити M ОШПФ довжини N2 . Згідно з Лемою 3, при задіянні процесорів,
ISSN 1561-5359. Штучний інтелект, 2016, № 2
© А.М. Терещенко, В.К. Задірака 109
кожен з процесорів N при обчисленні одного ШПФ (ОШПФ) виконає N2log2
комплексних операцій множення та N2log2 2 комплексних операцій додаван-
ня/віднімання. Також, кожен з N процесорів виконає додатково по два поелементних
комплексних множення при реалізації багаторозрядної операції множення на основі
ШПФ. Таких додаткових обчислень необхідно виконати M . Лема доведена.
Порівняння методів
Далі порівняємо складності обчислення ЦЗ (1) за кількістю однослівних операцій
при реалізації багаторозрядної операції множення на основі методу множення «у
стовпчик» (Лема 2) з реалізацією (4) на основі ШПФ (Лема 4) для одного процесора в
багатопроцесорній моделі обчислень. Знайдемо агреговані коефіцієнти кількості
операцій додавання/віднімання та множення.
Агрегований коефіцієнт для Леми 4 може бути виражений наступним чином:
)),(),(2(2),(4),( 4
*
4
*
44 NMONMONMONMO , (5)
де ),(*
4 NMO , ),(4 NMO ˗ загальна кількість комплексних однослівних операцій
множення та додавання/віднімання у Лемі 4.
Коефіцієнт 4 у доданку ),(4 *
4 NMO та коефіцієнт 2 у доданку ),(2 *
4 NMO у
співвідношенні (5) позначають, що для реалізації однієї операції множення над
комплексними числами необхідно чотири однослівні операції множення над дійсними
числами (алгоритм Винограда дозволяє це зробити за три операції) та дві комплексні
операції додавання. Двійка перед скобками у доданку )),(),(2(2 4
*
4 NMONMO
означає, що комплексні числа мають дійсну та уявну частини, тому для їх реалізації
необхідно використати у два рази більшу кількість операцій над дійсними числами.
Вважаємо, що однослівні операції додавання та множення над дійсними числами
займають однаковий час за швидкодією. Після розкриття дужок, отримуємо наступний
вираз:
),(2),(8),( 444
* NMONMONMO .
Після використання Леми 4, отримаємо наступне співвідношення:
)2log232(2)2log32(8),( 225 NMNMNMO .
Після спрощення, отримуємо наступний агрегований коефіцієнт:
NMNMO 2log3620),( 24 .
Агрегований коефіцієнт Леми 2 дорівнює MNNMO 3),(2 , вважаючи, що час
виконання операцій множення та додавання/віднімання на сучасних комп’ютерах
однаковий.
Знайдемо умови, при яких запропонований метод на основі ШПФ (Лема 4) є
більш ефективним, ніж метод, заснований на методі множення «у стовпчик» (Лема 2),
тобто ),(),( 24 NMONMO .
NM
MN
NMO
NMO
k
2log3620
3
),(
),(
2
42
4
2
.
ISSN 1561-5359. Штучний інтелект, 2016, № 2
110 © А.М. Терещенко, В.К. Задірака
Таблиця 1. Значення коефіцієнту прискорення ),(42 NMk
N
M 4 8 16 32 64 128 256
1 0,09375 0,14634 0,24000 0,40678 0,70588 1,24675 2,23256
2 0,16216 0,26087 0,43636 0,75000 1,31507 2,34146 4,21978
3 0,21429 0,35294 0,60000 1,04348 1,84615 3,31034 6,00000
4 0,25532 0,42857 0,73846 1,29730 2,31325 4,17391 7,60396
5 0,28846 0,49180 0,85714 1,51899 2,72727 4,94845 9,05660
6 0,31579 0,54545 0,96000 1,71429 3,09677 5,64706 10,37838
7 0,33871 0,59155 1,05000 1,88764 3,42857 6,28037 11,58621
8 0,35821 0,63158 1,12941 2,04255 3,72816 6,85714 12,69421
16 0,44860 0,82759 1,53600 2,86567 5,37063 10,10526 19,08075
32 0,51337 0,97959 1,87317 3,58879 6,88789 13,24138 25,49378
36 0,52174 1,00000 1,92000 3,69231 7,11111 13,71429 26,48276
37 0,52358 1,00452 1,93043 3,71548 7,16129 13,82101 26,70677
64 0,55331 1,07865 2,10411 4,10695 8,02089 15,67347 30,64339
128 0,57571 1,13609 2,24234 4,42651 8,73969 17,25843 34,08599
256 0,58761 1,16717 2,31849 4,60570 9,14966 18,17751 36,11462
512 0,59374 1,18336 2,35854 4,70084 9,36942 18,67477 37,22226
1024 0,59685 1,19162 2,37909 4,74990 9,48331 18,93374 37,80196
Аналізуючи табл. 1, бачимо, що при обчисленні циклічної згортки довжини M
багаторозрядних чисел довжиною N слів, запропонований метод є ефективним,
починаючи зі згорток, довжиною у 37M точок та багаторозрядних чисел з 8N (у
256832 бітів) слів на початку обчислень.
Цікаво, що коефіцієнт прискорення у паралельній моделі повністю співпадає з
коефіцієнтом прискорення у послідовній моделі за однакових умов (однакових M , N ).
Зазвичай, коефіцієнти прискорення для різних моделей обчислень відрізняються.
Висновок
У даній роботі проаналізовано складність обчислення ЦЗ (циклічної згортки)
багаторозрядних чисел за кількістю однослівних операцій (множення, додавання та
віднімання) у паралельному модулі обчислень. На основі ЦЗ можна побудувати
швидкий алгоритм багаторозрядної операції множення. Розглянуто два методи
обчислення циклічної згортки з реалізацією багаторозрядної операції множення на
основі множення «у стовпчик» та на основі ШПФ. Надано алгоритми реалізації
операції множення на основі двох методів у паралельній моделі обчислень.
Запропоновано швидкий метод на основі ШПФ, який дозволяє реалізувати обчислення
циклічної згортки багаторозрядних чисел зі складністю, меншою, ніж складність на
основі методу множення «у стовпчик». Розглянуто умови, при яких ШПФ є швидким.
Показано, що використання ШПФ довжиною 16 є вже ефективним при обчисленні ЦЗ,
починаючи з довжин згортки у 37 точок, де кожна точка є багаторозрядним числом у 8
слів (256 біт) на початку обчислень. Програмна реалізація на GPU (графічних
прискорювачах) для ядра (паралельного процесора) на основі ШПФ довжиною 16
дозволяє виконати обчислення з використанням векторних операцій довжиною 16, що
дозволяє будувати ще більш швидкі алгоритми.
При реалізації алгоритму на основі ШПФ, знаки переносу між машинними
словами необхідно враховувати тільки на етапі обчислення ОШПФ, що є перевагою, у
ISSN 1561-5359. Штучний інтелект, 2016, № 2
© А.М. Терещенко, В.К. Задірака 111
порівнянні з реалізацією алгоритму на основі множення «у стовпчик», коли знаки
переносу необхідно враховувати на всіх етапах обчислення ЦЗ багаторозрядних чисел.
Це також дає перевагу при реалізації у паралельній моделі обчислень, де операції
врахування знаку переносу можуть займати більший час, ніж всі інші операції загалом.
Довжини багаторозрядних множників при реалізації множення на основі ШПФ
обмежені довжиною машинного слова, яку може обробляти процесор за одну команду.
Запропонований метод дозволяє будувати алгоритми множення ще більших
багаторозрядних чисел на основі ШПФ, яка використовується для обчислення
циклічної згортки, що саме реалізує багаторозрядну операцію множення у паралельній
моделі обчислень.
Література
1. David A. Pitassi. Fast convolution using the Walsh transform. – Applications of Walsh Functions, 1971,
Proceeding, pp.130–133, April, 1971.
2. Davis W. F. A class of efficient convolution algorithms // Applicat. Walsh Functions. – 1972. – March. –
pp.318–329.
3. Задірака В., Олексюк О. Комп′ютерна арифметика багаторозрядних чисел. – К.: Наук. думка, 2003. – 263 с.
4. Терещенко А. Н. Оптимизация метода Питасси вычисления свертки // Искусственный интеллект. –
2009. – № 1 – С. 204–212.
5. Терещенко А. Н., Мельникова С. С., Гнатив Л. А., Задирака В. К., Кошкина Н. В. Реализация
операции умножения с использованием преобразования Уолша // Международный научно-
технический журнал Проблемы управления и информатики. – 2010. – № 2. – С. 102–126.
Literatura
1. David A. Pitassi. Fast convolution using the Walsh transform. – Applications of Walsh Functions, 1971,
Proceeding, pp.130–133, April, 1971.
2. Davis W. F. A class of efficient convolution algorithms // Applicat. Walsh Functions. – 1972. – March. –
pp.318–329.
3. Zadiraka V., Oleksyk О. Multidigit computational arithmetic. – К.: Science opinion, 2003. – 263 p.
4. Tereshchenko A. N. Optimization of Pitassi method of convolution calculation // Artificial intellect. – 2009.
– N 1 – P. 204–212.
5. Tereshchenko А. N., Melnikova S. S., Hnatyv L. A., Zadiraka V. K., Koshkina N. V. Calculation of multiplication,
using walsh transform // Journal of automation and information sciences. – 2010. – N 2. – P. 102–126.
RESUME
A.M. Tereshchenko, V.K.Zadiraka
Fast proceeding of cyclic convolution of multidigit values based on FFT in parallel
computational model
In this paper the complexity of calculation of the circular convolution of multidigit values in
terms of single precision operations (multiplication, addition and subtraction) in parallel
computational model is analyzed. Based on the circular convolution the fast algorithm of
multidigit multiplication could be built. Two circular convolution calculation methods with
the implementation of multidigit multiplication based on multiplication "in the column" and
based on FFT e considered. Provided algorithms implement multidigit multiplication
operation based on two methods in parallel computational model. A rapid method based on
FFT calculation allows implementing the calculation of cyclic convolution of multidigit
values with complexity less than complexity of method based on multiplication "in the
column." The conditions under which the FFT is fast are considered. It is shown that using
FFT length of 16 is effective in calculating circular convolution starting from the length of 37
points, where each point is a multidigit value of the length of 8 words (256 bits) in the
beginning of computation. Software implementation on GPU based on FFT length of 16
allows using GPU vector operations of the length of 16 that speeds up algorithm sharply.
ISSN 1561-5359. Штучний інтелект, 2016, № 2
112 © А.М. Терещенко, В.К. Задірака
On implementing the algorithm based on FFT the carry flag between machine words is taken
into account only at the stage of calculating IFFT, which is an advantage compared to the
algorithm based on multiplication "in the column" when the carry flag is considered at all
stages of computation. It also gives advantage of implementing on parallel computational
model when operation for taking care of carry flag may take more time than all the other
operations in general.
The lengths of multidigit multipliers in the implementation of multiplication based on FFT
limited by the length of the machine word processor that can process in a single command.
The proposed method broadens this restriction and allows building algorithms based on FFT
for much bigger numbers.
Надійшла до редакції 04.09.2016
|