Код документа: RU2666285C1
Изобретение относится к вычислительной технике и предназначено для выполнения операции умножения чисел, представленных в модулярно-логарифмическом формате с плавающей точкой на гибридных многоядерных процессорах.
Известен способ организации выполнения операции умножения двух чисел в модулярно-позиционном формате представления с плавающей точкой на универсальных многоядерных процессорах (A.C. RU №2509345, БИ №7, 10.03.2014), в котором операция умножения t-разрядных позиционных мантисс сомножителей заменяется n параллельно выполняемыми операциями умножения q-разрядных знакопозиций чисел в системе счисления в остаточных классах. Недостаток данного способа состоит в том, что не определено, каким образом выявляются ситуации переполнения диапазона представления модулярных мантисс при выполнении операции умножения и выполняется процедура масштабирования мантисс, таким образом, способ (A.C. RU №2509345, БИ №7, 10.03.2014) может быть использован для выполнения операции умножения не для всех операндов из заявленного диапазона представления.
Наиболее близким к заявленному способу является способ организации выполнения операции умножения двух чисел в модулярно-позиционном формате (Исупов К.С., Мальцев А.Н. Способ представления чисел с плавающей точкой большой разрядности, ориентированный на параллельную обработку //Вычислительные методы и программирование: новые вычислительные технологии. 2014. Т. 15, №4. С. 631-643), в котором масштабирование мантиссы осуществляется методом, использующим таблицы поправочных коэффициентов с применением интервально-позиционных характеристик. Недостаток данного способа состоит в том, что необходимо хранить таблицы поправочных коэффициентов большого размера, а также использовать вычислительные устройства с плавающей точкой для вычисления интервальной позиционной характеристики.
Техническим результатом применения способа организации выполнения операции умножения двух чисел в модулярно-логарифмическом формате представления с плавающей точкой на гибридных многоядерных процессорах является оптимизация выполнения операции умножения в
Описание способа организации выполнения операции умножения двух чисел в модулярно-логарифмическом формате представления с плавающей точкой на гибридных многоядерных процессорах: реализация способа осуществляется посредством подачи набора электрических, нейронных либо других сигналов на устройства управления каждого вычислительного ядра многоядерного гибридного процессора, которые, в соответствии с данными сигналами, формируют управляющие команды для операционных устройств соответствующих вычислительных ядер.
В позиционных двоичных форматах с плавающей точкой стандарта IEEE-754 любое вещественное число представляется трехэлементным набором:
где М - рациональная мантисса, е - порядок числа, emin=2-2ν-1 и emax=2ν-1-1, S-знак числа.
Величина чисел, записанных в таком формате, выражается формулой -1S⋅М⋅2е. Машинными представлениями чисел вида (1) являются (ν+t+1)-разрядные двоичные векторы (Srν-1…r2r1dt…d2d1), где разряды с d1 по dt отводятся под представление рациональных двоичных мантисс М=dtdt-1…d2d1, разряды с r1 по rν отводятся под представление целочисленных двоичных порядков е, записанных в форме с избытком Е=rνrν-1…r2r1=е+emax, разряд S выражает знак числа.
Определим целочисленную мантиссу М'=dtdt-1…d2d1 как t-разрядное неотрицательное целое двоичное число, такое, что М=М'⋅21-t. Определим перемещенный порядок λ как целое двоичное число со знаком, такое, что λ=е-t+1, где е - ν-разрядный порядок числа, представленного в двоичном формате (1).
Зададим n целочисленных положительных q-разрядных оснований системы остаточных классов p1,р2, …, pn, таких, что ∀i1, i2∈{1, 2, …, n), i1≠i2:
Целочисленную мантиссу М'=dtdt-1…d2d1 преобразуем в систему остаточных классов с заданными основаниями р1, p2, …, pn, получая тем самым модулярную мантиссу
где mi∈[0, рi-1], i=1, 2, …, n - q-разрядные цифры (модулярные разряды) модулярной мантиссы
Определим ранг модулярной мантиссы как значение R, такое, что выполняется условие:
где
R∈[0,n-1] и вычисляется по формуле:
где
При условии, что 2q-1
i<2q, где q - разрядность оснований р1, р2, …, рn, величина
Определим верхнюю и нижнюю границы величины ранга модулярного числа как
где
Согласно теоретико-числовой теореме Эйлера мультипликативную инверсию
где ϕ(pi) - функция Эйлера, равная количеству целых чисел в диапазоне [1, рi], взаимно простых с рi.
Пример. Вычислим значения мультипликативных инверсий Pi по модулям рi для системы с основаниями: р1=11, р2=13, р3=15:
Определим логарифмическую характеристику числа как значение двоичного логарифма от этого числа. Тогда логарифмическая характеристика модуля числа, представленного в формате [М, е, S], вычисляется следующим образом:
log2(М'⋅21-t⋅2е)=log2(М')+е-t+1=log2(М')+λ.
Определим интервальную логарифмическую характеристику мантиссы числа как целочисленный интервал [Lmin, Lmах], нижняя и верхняя границы Lmin, Lmах которого представлены r-разрядными двоичными числами без знака и вычисляются следующим образом:
Lmin=[log2(М')⋅2r-h-1],
Lmах=Lmin+1
где
Диапазон представления нижней и верхней границ Lmin, Lmах интервальной логарифмической характеристики:
где
Таким образом, число с плавающей точкой вида (1) можно преобразовать к следующему модулярно-логарифмическому формату:
где 〈m1, m2, …, mn〉 - набор знакопозиций (модулярных разрядов) модулярной мантиссы
Диапазон допустимых значений модулярных мантисс
Примеры преобразования позиционных чисел с плавающей точкой в модулярно-логарифмический формат: пусть числа представлены в 10-разрядном двоичном формате вида (1), в котором под смещенный порядок Е, отводится четыре бита (максимальный порядок еmax=24-1-1=7, соответственно е=Е-7), под дробную часть мантиссы - пять бит (т.е. t=6, причем целая часть d6 рациональной мантиссы М в явном виде не записана) и под знак числа - один бит.Пусть для представления модулярных мантисс в модулярно-логарифмическом формате [〈m1, m2, …, mn〉, λ, Lmin, Lmax, σ] используется три основания: р1=11, р2=13, р3=15. Диапазон представления чисел Р=11⋅13⋅15=2145. Разрядность оснований q=4, разрядность интервальной логарифмической характеристики r=5.
Пример 1: необходимо перевести число X=3.312510=[1.65625, 1, 0]=-10⋅1.65625⋅21, представленное в двоичном формате [М, е, S], в модулярно-логарифмический формат [〈m1, m2, …, mn〉, Lmin, Lmax, λ, σ].
С учетом принятых характеристик двоичного формата [М, е, S], число X будет записано в памяти ЭВМ в виде двоичного вектора 〈0100010101〉. Для его преобразования в модулярно-логарифмический формат (2) необходимо выполнить следующие действия:
1. Выделить составные части числа X: знак числа S=0, дробная часть рациональной мантиссы d5…d2d1=101012, смещенный (избыточный) порядок Е=10002=8.
2. Восстановить целую часть d6 мантиссы М=d6d5…d2d1:d6=1, т.к. Е>0, следовательно, М=1.101012.
3. Определить порядок е: е=Е-еmax=8-7=1, т.к. Е>0.
4. Определить знак σ, перемещенный позиционный порядок λ и целочисленную мантиссу М': σ=1, λ=е-t+1=1-6+1=-4, М'=d6d5…d2d1=1101012=53.
5. Найти модулярную мантиссу
6. Вычислить интервально-логарифмическую характеристику мантиссы Lmin, Lmах: Lmin=[log2(53)⋅25-3-1]=11, Lmax=11+1=12.
В результате получается число X, представленное в модулярно-логарифмическом формате с плавающей точкой: X=[〈9, 1, 8〉, 11, 12, -4, 1].
Пример 2: необходимо перевести число X=0.0278320312510=[1.78125, -5, 1]=-11⋅1.78125⋅2-5 из двоичного формата [М, е, S] в модулярно-логарифмический формат [〈m1, m2, …, mn〉, Lmin, Lmax, λ, σ].
С учетом принятых характеристик двоичного формата [М, е, S], число X будет записано в памяти ЭВМ в виде двоичного вектора 〈1000111001〉. Для его преобразования в модулярно-логарифмический формат (2) необходимо выполнить следующие действия:
1. Выделить составные части числа X: знак числа S=1, дробная часть d5…d2d1=110002, смещенный порядок Е=00012=1.
2. Восстановить целую часть d6 мантиссы М=d6d5…d2d1:d6=1, т.к. Е>0, следовательно, М=1.110012.
3. Определить порядок е. е=еmin=1-7=-6, т.к. Е=0.
4. Определить знак σ, перемещенный порядок λ и целочисленную мантиссу М': σ=-1, λ=e-t+l=-6-6+1=-11, М'=d6d5…d2d1=1110012=57.
5. Найти модулярную мантиссу
6. Вычислить интервально-логарифмическую характеристику мантиссы Lmin, Lmax: Lmin=log2(57)⋅25-3-1]=11, Lmax=11+1=12.
В результате получается число X, представленное в модулярно-логарифмическом формате с плавающей точкой: X=[〈2, 5, 12〉, 11, 12, -11, -1].
Алгоритм 1. Вычисление ранга числа, представленного в модулярно-логарифмическом формате.
Пусть
1. Вычислить значение минимальной величины ранга Rmin модулярной мантиссы
2. Вычислить значение максимальной величины ранга Rmax модулярной мантиссы
3. Если Rmin=Rmax, то R=Rmin, иначе выполнить сравнение: если
Пример: необходимо вычислить ранги чисел A=53 и B=57. Используется три основания: р1=11, р2=13, р3=15. Р=р1⋅р2⋅р3=2145 - произведение оснований (верхний предел допустимого диапазона представления модулярных мантисс).
Значения верхних и нижних границ
Значения мультипликативных инверсий
Вычислим значение ранга первого числа.
1. Вычислим значение минимальной величины ранга Rmin модулярной мантиссы:
2. Вычислим значение максимальной величины ранга Rmax модулярной мантиссы:
3. Так как Rmin=Rmax, то RA=Rmin=1. Вычислим значение ранга второго числа.
Вычислим значение ранга второго числа.
1. Вычислим значение минимальной величины ранга Rmin модулярной мантиссы:
2. Вычислим значение максимальной величины ранга Rmax модулярной мантиссы:
3. Так как Rmin=Rmax, то RB=Rmin=1.
Алгоритм 2. Деление модулярной мантиссы числа, представленного в модулярно-логарифмическом формате, на число 2x (масштабирование степенью двойки).
Пусть
1. Вычислить α. Если x>q-1, то вычислить значение
2. Вычислить значение ранга R для модулярного числа в соответствии с алгоритмом 1.
3. Вычислить остаток от деления модулярного числа на рn+1=2q-1:
где
Если 0<α
4. Вычислить значение
5. Вычислить значение
где
6. Если
7. Шаги 2-6 выполнить j раз для α=q-1.
Пример. Необходимо разделить числа А=53 и В=57 на число 21. Используется три основания: р1=11, р2=13, р3=15. Р=р1⋅р2⋅р3=2145 - произведение оснований (верхний предел допустимого диапазона представления модулярных мантисс),
Значения мультипликативных инверсий
Значения мультипликативных инверсий
Значения остатков от деления
Вычисляем значение
1. α=x=1, так как x=1 2. Вычисляем ранг числа A=53 соответствии с алгоритмом 1. RA=1. 3. Вычисляем остаток от деления модулярного числа на 24-1=8:
Вычисляем остаток от деления модулярного числа на р4=21
4. Вычитаем из модулярного числа
5. Умножаем на мультипликативные инверсии двойки по соответствующим модулям:
6. Прибавляем к
Вычисляем значение
1. α=х=1, так как х=1 2. Вычисляем ранг числа В=57 соответствии с алгоритмом 1. RB=1. 3. Вычисляем остаток от деления модулярного числа на 24-1=8:
Вычисляем остаток от деления модулярного числа на р4=21
4. Вычитаем из модулярного числа
5. Умножаем на мультипликативные инверсии двойки по соответствующим модулям:
6. Прибавляем к
Алгоритм 3. Выполнение операции умножения с плавающей точкой в модулярно-логарифмическом формате. Для того чтобы найти произведение
1. Проверить результат на равенство 0. Если σС=σА⋅σВ=0, что означает равенство нулю одного из операндов или обоих операндов сразу, то
Если оба операнда ненулевые, то перейти к следующему шагу.
2. Присвоить знак произведению σС=σА⋅σВ. Определить верхнюю и нижнюю границы интервальной логарифмической характеристики результата
3. Проверить выход результата за границы диапазона представления чисел. Если
4. Проверить выход мантиссы результата за границы диапазона представления модулярных мантисс и выполнить умножение модулярных мантисс.
4.1. Если
4.1.1. Вычислить значения поправочных коэффициентов L1 и L2:
Если |L1|≤|L2| и L2≥0, то zА=L1, zВ=0.
Если |L1|≤|L2| и L2<0, то zА=0, zВ=L1.
Если |L1|>|L2|и |L1+L2|2=1, то
Если |L1|>|L2|и |L1+L2|2=0, то.
4.1.2. Вычислить значения скорректированных мантисс
Если
Если
Если
Если
Если
Если
Если
Если
Если
4.1.3. Скорректировать значение порядка результата λC=λC+L1.
4.1.4. Скорректировать значение верхней и нижней границы интервальной логарифмической характеристики результата если
4.2. Выполнить умножение модулярных мантисс
4.3. Если
4.3.1. Вычислить значение поправочного коэффициента
4.3.2. Вычислить значение скорректированной мантиссы
4.3.3. Вычислить значение порядка результата λC=λC-zC.
4.3.4. Выполнить коррекцию значений верхней и нижней границы интервальной логарифмической характеристики результата
4.4. Если
4.4.1. Вычислить значение поправочного коэффициента
4.4.2. Вычислить значение скорректированной мантиссы
Если
Если
Если
4.4.3. Вычислить значение порядка результата λС=λС+zС.
4.4.4. Выполнить коррекцию значений верхней и нижней границы интервальной логарифмической характеристики результата
В результате выполнения данных операций получается произведение
Пусть
1. Множитель
- в первое модулярное ядро гибридного многоядерного процессора загружают разрядные двоичные представления первых знакопозиций
- параллельно с этим во второе модулярное ядро гибридного многоядерного процессора загружают q-разрядные двоичные представления вторых знакопозиций
- и т.д.;
- параллельно с этим в n-ое модулярное ядро гибридного многоядерного процессора загружают q-разрядные двоичные представления n-ых знакопозиций
- параллельно с этим в первое универсальное вычислительное ядро загружают k-разрядные двоичные порядки λА и λВ, а также знаки σА и σВ чисел А и В соответственно;
- параллельно с этим во второе универсальное вычислительное ядро загружают r-разрядные значения нижних границ интервальных логарифмических характеристик
- параллельно с этим в третье универсальное вычислительное ядро загружают r-разрядные значения верхних границ интервальных логарифмических характеристик
- параллельно с этим в первое векторное вычислительное ядро загружают вектор s-разрядных констант коэффициентов
- параллельно с этим во второе векторное вычислительное ядро загружают вектор s-разрядных констант коэффициентов
- параллельно с этим в третье векторное вычислительное ядро загружают вектор разрядных констант остатков от деления
- параллельно с этим в управляющее ядро загружают k-разрядные двоичные порядки λА и λВ, r-разрядные значения нижних границ интервальных логарифмических характеристик
2. После того, как множитель
- в первом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
-параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим в первом универсальном вычислительном ядре процессора выполняется сложение λC=λА+λВ двоичных порядков λА и λВ, а также умножение σС=σА⋅σВ знаков σА и σВ чисел А и В соответственно;
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется сложение
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется сложение
- параллельно с этим в управляющем ядре вычисляются следующие значения поправочных коэффициентов:
3. После того, как получено промежуточное значение произведения
3.1. Если знак
3.2. Если знак
- в первом универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется обнуление
3.3. Если знак
- в первом универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим в первом модулярном вычислительном ядре процессора выполняется обнуление
-параллельно с этим во втором модулярном вычислительном ядре процессора выполняется обнуление
- и т.д.
- параллельно с этим в n-ом модулярном вычислительном ядре процессора выполняется обнуление
3.4. Если знак
- в первом универсальном вычислительном ядре процессора выполняется присвоение
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется обнуление
- параллельно с этим в первом модулярном вычислительном ядре процессора выполняется обнуление
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется обнуление
- и т.д.
- параллеьно с этим в n-ом модулярном вычислительном ядре процессора выполняется обнуление
3.5. Знак
- в первом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим во втором модулярном вычислительном ядре процессора
выполняется операция целочисленного умножения
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим в первом универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется коррекция
3.6. Если знак
3.6.1. Выполняется загрузка мультипликативных инверсий
- в первое модулярное ядро загружают ^-разрядные двоичные значения
- параллельно с этим во второе модулярное ядро загружают q-разрядные двоичные значения
- и т.д.;
- параллельно с этим в n-ое модулярное ядро загружают q-разрядные двоичные значения
- параллельно с этим в первом универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим в управляющем ядре вычисляется количество итераций j: j=0, если
3.6.2. Если
3.6.3. Вычисляются значения элементов вектора
- в первом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
3.6.4. После того, как получены значения элементов вектора
- в первое векторное вычислительное ядро загружают вектор q-разрядных элементов
- параллельно с этим во второе векторное вычислительное ядро загружают вектор q-разрядных элементов
- параллельно с этим в третье векторное вычислительное ядро загружают вектор q-разрядных элементов
3.6.5. После того, как элементы вектора
-в первом векторном вычислительном ядре вычисляют скалярное произведение векторов
- параллельно с этим во втором векторном вычислительном ядре вычисляют скалярное произведение векторов
- параллельно с этим в третьем векторном вычислительном ядре вычисляют скалярное произведение векторов
3.6.6. После того, как результаты скалярного произведения векторов переданы в управляющее ядро, в управляющем ядре вычисляется значение ранга
3.6.7. После того, как управляющее ядро передаст во все модулярные и все универсальные целочисленные ядра значения
- в первом модулярном вычислительном ядре процессора выполняется операция вычитания
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция вычитания
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция вычитания
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется коррекция
3.7. Если знак
3.7.1. Выполняется загрузка мультипликативных инверсий
- в первое модулярное ядро загружают q-разрядные двоичные значения
- параллельно с этим во второе модулярное ядро загружают q-разрядные двоичные значения
- и т.д.;
- параллельно с этим в и-ое модулярное ядро загружают q-разрядные двоичные значения
- параллельно с этим в первом универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим в управляющем ядре вычисляется количество итераций jА=0, если zА
3.7.2. Если |ZA|q-1>0, то действия 3.7.3-3.7.7 выполняются один раз для
3.7.3. Вычисляются значения элементов вектора
- в первом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
3.7.4. После того, как получены значения элементов вектора
- в первое векторное вычислительное ядро загружают вектор q-разрядных элементов
- параллельно с этим во второе векторное вычислительное ядро загружают вектор q-разрядных элементов
- параллельно с этим в третье векторное вычислительное ядро загружают вектор q-разрядных элементов
3.7.5. После того, как элементы вектора
- в первом векторном вычислительном ядре вычисляют скалярное произведение векторов
- параллельно с этим во втором векторном вычислительном ядре вычисляют скалярное произведение векторов
- параллельно с этим в третьем векторном вычислительном ядре вычисляют скалярное произведение векторов
3.7.6. После того, как результаты скалярного произведения векторов переданы в управляющее ядро, в управляющем ядре вычисляется значение ранга
3.7.7. После того, как управляющее ядро передаст во все модулярные и все универсальные целочисленные ядра значения
- в первом модулярном вычислительном ядре процессора выполняется операция вычитания
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция вычитания
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция вычитания
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется коррекция
3.7.8. Если |zB|q-1>0, то действия 3.7.9-3.7.13 выполняются один раз для α=|zB|q-1; затем если количество итераций jВ≥1, то действия 3.7.9-3.7.13 выполняются затем jВ раз для α=q-1.
3.7.9. Вычисляются значения элементов вектора
- в первом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
3.7.10. После того, как получены значения элементов вектора
- в первое векторное вычислительное ядро загружают вектор q-разрядных элементов
- параллельно с этим во второе векторное вычислительное ядро загружают вектор q-разрядных элементов
- параллельно с этим в третье векторное вычислительное ядро загружают вектор q-разрядных элементов
3.7.11. После того, как элементы вектора
- в первом векторном вычислительном ядре вычисляют скалярное произведение векторов
- параллельно с этим во втором векторном вычислительном ядре вычисляют скалярное произведение векторов
- параллельно с этим в третьем векторном вычислительном ядре вычисляют скалярное произведение векторов
3.7.12. После того, как результаты скалярного произведения векторов переданы в управляющее ядро, в управляющем ядре вычисляется значение ранга
3.7.13. После того, как управляющее ядро передаст во все модулярные и все универсальные целочисленные ядра значения
- в первом модулярном вычислительном ядре процессора выполняется операция вычитания
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция вычитания
- и т.д.
-параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция вычитания
- параллельно с этим во втором универсальном вычислительном ядре процессора выполняется коррекция
- параллельно с этим в третьем универсальном вычислительном ядре процессора выполняется коррекция
3.7.14. После того, как выполнена коррекция мантисс
- в первом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- параллельно с этим во втором модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
- и т.д.
- параллельно с этим в -ом модулярном вычислительном ядре процессора выполняется операция целочисленного умножения
В результате выполнения данных операций получается произведение
Для выполнения операции сложения двух целых q-разрядных двоичных чисел требуется устройство, состоящее из q элементарных двоичных устройств, для выполнения операции умножения двух целых q-разрядных двоичных чисел требуется устройство, состоящее из q×q элементарных двоичных устройств, для выполнения операции модулярного умножения двух целых q-разрядных двоичных чисел требуется устройство, состоящее из 2×q×q элементарных двоичных устройств, для хранения одного бита информации требуется устройство, состоящее из одного элементарного двоичного устройства, для сложения двух q-разрядных двоичных чисел в формате с плавающей точкой с направленным округлением требуется устройство, состоящее из 2×q элементарных двоичных устройств. Для выполнения операции умножения способом (A.C. RU №2509345, БИ №7, 10.03.2014) требуется устройство, состоящее из (2×k×k×n+k) элементарных двоичных устройств, где k - разрядность одного ядра универсального многоядерного процессора, n - количество модулей. Для выполнения операции умножения способом (К.С. Исупов, А.Н. Мальцев. «Способ представления чисел с плавающей точкой большой разрядности, ориентированный на параллельную обработку», Вычислительные методы и программирование, 15:4 (2014), с. 631-643.), требуется устройство, состоящее из (2β-l)×n×q+2×q×q×n+k+2×2×γ, где β - шаг масштабирования, n - количество моделей, q - разрядность модулей, k - разрядность порядка, γ - разрядность интервальной позиционной характеристики). Для выполнения операции умножения предложенным способом, требуется устройство, состоящее из 2×q×q×n+k+2×r+2×(n×s×s+(n-1)×(s+log2n))+(n×q×q+(n-1)×q), где n - количество моделей, q - разрядность модулей, k -разрядность порядка, r - разрядность интервальной логарифмической характеристики, s -разрядность весовых коэффициентов. При условии, что k=r=s=q, β=q-1, γ=2⋅q, для выполнения операции умножения способом (A.C. RU №2509345, БИ №7, 10.03.2014) требуется устройство, состоящее из (q⋅(2⋅n⋅q+1)) элементарных двоичных устройств, для выполнения операции умножения способом (К.С. Исупов, А.Н. Мальцев. «Способ представления чисел с плавающей точкой большой разрядности, ориентированный на параллельную обработку», Вычислительные методы и программирование, 15:4 (2014), с. 631-643.), требуется устройство, состоящее из (q⋅((2q-1-1)⋅n+2⋅q+9)), для выполнения операции умножения предложенным способом, требуется устройство, состоящее из (5⋅n⋅q2+3⋅n⋅q+(n-1)⋅log2n).
Предложенный способ полностью описывает процедуру умножения двух чисел в модулярном формате с плавающей точкой, включая контроль переполнения, потери порядка, масштабирования, при этом требует для своего выполнения устройство всего в
Изобретение относится к вычислительной технике и предназначено для выполнения операции умножения двух чисел в модулярно-логарифмическом формате с плавающей точкой. Техническим результатом является упрощение выполнения операции умножения. Способ осуществляется на гибридных многоядерных процессорах и содержит процедуру умножения двух чисел в модулярном формате с плавающей точкой, включая контроль переполнения, потери порядка, масштабирования.