УДК 681.3 Ю.Я. ЛЕДЯНКИН*
ОПЕРАЦИЯ ДЕЛЕНИЯ ДЛЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ.
Ч. 1
МП «ПАК» Института кибернетики имени В.М. Глушкова АН УССР, Киев, Украина
Анотація. Пропонується цифровий метод виконання арифметичної операції ділення (ОД). Алгоритм забезпечуєрозпаралелювання обчислювального процесу , прискорення його і підвищення точності. Він заснований на виконанні етапів операцій в алгебрі матриць і реалізації методів цифрової арифметики в булевій (можливо, у багатозначній) алгебрі. Розглянуто варіанти виконання операції та приклади рішення. Передбачається розвиток аналогічних робіт у плані створення і використання комбінованих алгоритмів обробки даних шляхом застосування інших алгебр у поєднанні з методами цифрової арифметики.
Ключові слова: цифровий метод, операція ділення, паралельні обчислення, обчислювальні системи.
Аннотация. Предлагается цифровой метод выполнения арифметической операции деления (ОД). Алгоритм обеспечивает распараллеливание вычислительного процесса, ускорение его и повышение точности ОД. Он основан на выполнении этапов операций в алгебре матриц и реализации методов цифровой арифметики в булевой (возможно, многозначной) алгебре. Рассмотрены варианты выполнения ОД и примеры решения. Предполагается развитие аналогичных работ в плане создания и использования комбинированных алгоритмов обработки данных путём применения других алгебр в сочетании с методами цифровой арифметики.
Ключевые слова: цифровой метод, операция деления, параллельные вычисления, вычислительные системы.
Abstract. It is proposed the digital method of performing arithmetic division operations (DO). Algorithm provides the parallelizing of computing process, its acceleration and accuracy increase. It is based on carrying out the steps of operations in the matrix algebra and realization of digital arithmetic in Boolean (possibly multi-valued) algebra. Variants of the execution of operation and examples of solutions are regarded. The development of similar projects for the creation and use of combined data processing algorithms by applying other algebras in combination with the methods of digital arithmetic is suggested. Keywords: digital method, division operation, parallel computing, computing systems.
1. Введение
Создание гетерогенных вычислительных систем (ГВС) высокой производительности, параллельных структур (ПС), особенно для обработки информации, представленной в виде сложных структур данных (ССД) для реализации вычислительных алгоритмов в едином технологическом (вычислительном) потоке (ЕТП) с помощью процессорных элементов (ПЭ) со скалярным умножителем (СУ), в своём составе требует нового подхода к численным и арифметическим методам, закладываемым в структуры спецпроцессора (СП) и всей вычислительной системы (ВС) [1-3].
Один из подходов в трансформации численных методов для реализации алгоритмов решения задач математической физики (МФ) с помощью метода конечных элементов (МКЭ) предложен и описан в [1, 4-7]. Такой подход предполагает обработку ССД и решение систем линейных алгебраических уравнений (СЛАУ) в режиме ЕТП. Он обеспечивает переход к построению высокопроизводительных архитектур гетерогенного типа на базе ПЭ с СУ в своем составе с HOST процессором в виде центральной интеллектуальной машины (ЦИМ).
© Ледянкин Ю.Я., 2014
ISSN 1028-9763. Математичні машини і системи, 20І4, № І
При построении СУ в основу арифметических операций, которые он должен реализовывать, закладывают операции сложения, вычитания, умножения, деления. Это основа всех одно- и многоядерных процессоров, работающих в составе кластерных структур (КС).
Операция деления (ОД), которая часто является неотъемлемой частью алгоритма вычислительного эксперимента (ВЭ), записанного в аналитическом виде, является частью набора операций, которые впоследствии необходимо реализовывать с помощью процессора ЭВМ. Но ОД в цифровом виде является менее точной и выполняется за большее время (по отношению ко времени выполнения операции умножения). Поэтому её реализацию в АУ процессора стараются избегать, а на уровне алгоритма её выполнение в ЭВМ часто реализуют при помощи стандартных подпрограмм, основанных на операциях сложения, вычитания и умножения (или с помощью спецпроцессора, который реализует ОД). Для параллельных устройств ограничения связаны и с последовательным выполнением ОД, поскольку каждая новая цифра частного, как и новый остаток, не могут быть вычислены раньше, чем будет получен и проанализирован предыдущий остаток.
Статья состоит из двух частей. В первой части статьи излагается цель работы, суть предлагаемого метода замены ОД методом определения обратной величины (ОВ) кода числа с последующим умножением ОВ на код числа делимого. На конкретных примерах показывается возможность выполнения предлагаемой операции способом определения ОВ кода числа, опираясь на математический аппарат матричной алгебры.
Во второй части статьи показаны правомочность и целесообразность использования аппарата матричной алгебры на первом этапе решения задачи к возможности сочетания на втором этапе аппарата матричной алгебры с математикой числовой арифметики. Показаны варианты сочетания методов алгебр на разных этапах формирования обратного значения числа. Доказывается правомочность и даны условия использования числовой арифметики в сочетании с математическим аппаратом матричной алгебры. Предложены и описаны варианты вычисления ОВ кода числа. На конкретных примерах рассмотрены: возможность реализации поставленной задачи вообще и на параллельных ГВС, в частности; преимущества предлагаемого решения для замены ОД в классическом понимании операции деления.
Цель работы
Для решения задач вычислительной математики, к которым на практике сводится аппроксимация практически всех задач, а особенно для решения СЛАУ, следует разработать метод и алгоритм реализации ОД чисел или способ вычисления ОВ кода числа (1/С). В гетерогенных системах он должен заменять ОД и выполнять её аналог с помощью СУ, закладываемых в ПЭ, для реализации режима ЕТП. Метод должен позволить в параллельном режиме работы СП реализовать процедуру факторизации матрицы жесткости с помощью алгоритмов, предложенных и описанных в [2]. Взамен решения исходной матрицы с помощью выражения, свойственного методу Гаусса, связанного с делением на ведущий элемент строки (или столбца) и со сложностями метода (по выбору ведущего элемента, проверки его на ноль, перестановками строк (или столбцов) и проч.) предлагается перейти к реализации уравнения вида
а * а - а. * а
аг ——----------- ---3-. (1)
а3 -1,1-і
Запись вида
а- — а- * ал - аи * аі (2)
позволяет известную формулу факторизации по Гауссу для матрицы Апп с коэффициентами а , і, і = 1, п :
У' ' ^
- - аи -
а — а------* а (3)
аии
заменить алгоритмом реализации выражения:
аі — (ал * а- - аи * аи ) * а--и-1. (4)
Замена в выражении (4) ОД операцией умножения на ОВ а Д и-1:
-1, и-1 =1/ аи-1,и-1= а и'-1, и-1 (5)
от значения диагонального коэффициента предыдущей аі-1,і-1 , ранее вычисленной строки (при условии, что а11 ° 1), позволяет исключать традиционное выполнение ОД из алгоритма решения СЛАУ по ЕТП.
Для решения итерационным методом Ньютона-Рафсона нелинейных уравнений вида
+1 = - /()/ /(), (6)
где /(хг) - значение функции /(хг) в точке (Хг /(Хг)) ;
/ (хг)- значение производной в точке (Хг, / (Хг )).
В работе [8 ] предложен и рассмотрен метод решения уравнения (6). Согласно методу, исходное уравнение (6) предлагается записывать в виде РПМ и операцию деления функции /(хг) на производную / (хг) от неё заменять умножением функции на обратное значение производной от нее. Для этого после вычисления [Ф г ]-1 необходимо выполнять операции 8г = [ф г] * [Фг]-1 с помощью функций, записанных в виде РМП.
Постановка задачи
Разработать метод и алгоритм реализации ОД на структуре типа СУ. С этой целью операцию деления числа В на число С с получением частного от деления А
В : С = А (7)
предлагается выполнять так:
{В} * {С-1} = {А}. (7а)
Для решения (7а) следует вычислить обратную от делителя [С] матрицу [С -1 ] и
матрицу делимого [В] умножить на обратную от делителя матрицу [С -1 ], получив в ре-
зультате ОВ частного [ А] от деления (7).
Решение задачи
Известно, что последовательность
С = {с0, С1, С2 ,..., Сп } (8)
в двоичной, например, позиционной системе счисления определяет число С :
С = с020 +с12-1 + с22 -2 +... + ег 2-і + ...сп 2-п, (9)
а полином р( х) вида
в виде аппроксимирующего ряда
с с2 С3
/(х) ~ — + — + — +..., х ®
х х2 х3
(11)
-1
можно записать, положив х = 2 ,х = 2 ,х = 2 ,....
Тогда рассмотрим двоичное представление числа в позиционной системе в виде полиномиального кода
С »{Со20 С12-1 с,.24 ... Сп2-п}, п . (12)
Запишем его с помощью РМП в матричном виде и будем рассматривать выполнение алгебраических операций по алгоритму факторизации матрицы над соответствующими полиномами, используя методы алгебры матриц. При этом число С (12) можно записать [1, 2] в виде
С0 С1 С2 ... Сп
/ (С) ® [С ] *
(13)
Для матрицы [С] будем рассматривать [С]т, транспонированную к матрице [С]
/т (С) * [С]т
С1 Со
С2 С1
С С , .С -.
п п-1 п-2
(14)
а также вектор [С* ]:
/ *(С) * [С*] =
= [с
С1 С2
Сп ]Т =[/*(С)],
(15)
как это предложено в [1] и рассмотрено в [4-7] для функций с записью полиномов в виде РМП.
В (13-15) число, аналогично полиному, записано с помощью РМП по принципу циклической записи битов (разрядов) с учетом их веса в виде верхне треугольной матрицы. В записи на месте С11 (на главной диагонали) матрицы [С] всегда стоит старший раз-
ряд С1 * 2- мантиссы числа, записанного в устройстве в виде ПЗ, а на месте С1п - младший разряд числа С1п * 2-п . На главной С, диагонали матрицы [С] всегда стоят «1». Это следует из того, что С, = 1,, і = 1, п - старшая значащая цифра нормализованной мантиссы чис-
сю
С0 С1
С
п-1
С
0
С
0
С
0
С
0
С
0
С
0
С
С
2
0
С
п
ла весом 2-1 с1 = 1/2 *1 = 1/2. Далее, в 1-й строке матрицы С ] (в сторону убывания), стоят разряды с меньшим весом (2-2 с2 2-3 с3 ... 2-п сп) , то есть следующие биты числа с учетом их веса в пределах разрядной сетки.
На практике это означает, что вычисление обратной матрицы [С ]-1 по правилам алгебры матриц методом факторизации по Г ауссу сводится к исключению прямого хода, на котором формируется верхне треугольная матрица. При этом заранее определено, что размерность тс матрицы [С] (делителя), матрицы [В] (делимого) тв, а также вектора
столбца [С *] совпадает. Кроме того, поскольку мантиссы чисел, представленных в прямом коде в форме ПЗ, равны «1», а их вес равен 1/2, то произведение Ьц * с-1 = 1/2 *1/2 = 1/4 даёт смещение в пределах разрядной сетки на единицу в сторону младшего разряда и в принятом формате чисел гарантирует от переполнения.
2. Получение обратной [С ]-1 матрицы от числа в РМП
Пусть матрица [С] представляет число
С = {.110} = {с12-1 + с22 -2 + С32-3} = 1*1/2 +1° 1/4 + 0 *1/8 = 6/8
(16)
с записью в форме РМП:
[С ] =
1 1 0 1 1
1
(17)
Вычислим обратную [С]-1 матрицу традиционным способом:
[С ]-1 =
С1 С2; С3 ] 2 Є;3
" 1 1 0 1 0 0" "1 -1 1
1 1 0 1 0 * 0 1 -1
1 0 0 1 0 01
- 1 0 0 1"
1 0 1 -1
1 1 -1 1
(18)
Полученная матрица [С]-1 записана в виде РМП, также верхне треугольная имеет целочисленные значения, но отдельные биты числа С (коэффициенты сц ) имеют отрицательные значения, некоторые из них отличны от ± 1 и являются многозначными числами.
Естественно, что произведение матрицы [С] на обратную [С]-1 даёт единичную [Е] матрицу.
Появление отрицательных значений битов (коэффициентов матрицы) в [С ]-1 требует изменения в традиционном двухпозиционном представлении битов "0" и "1" и идентификации их как разрядов числа, а не как коэффициентов полинома.
Далее при рассмотрении способов получения ОВ для упрощения изложения предлагаемых решений используется десятичная запись отдельных разрядов ОВ при двухпозиционном представлении числа в целом.
Рассмотрим выполнение ОД традиционным методом и варианты получения ОВ кода числа предлагаемыми способами.
3. Примеры
Выполнение ОД традиционным ® ) методом «углом»
Разделим число В = 15/32 = .01111 (делимое) на число С = 3/4 = 24/32 = .11000 (делитель), получая в результате А (частное):
А = 5/8 = 20/32 = .01010 (19)
(частное) [9, 10].
Деление 1-го остатка (В) .01111
.11110 [.1100 .11000 01010 (А)
.00110 второй остаток .01100 удвоение 2-го остатка .11000 удвоение 3-го остатка
- .11000 4-й остаток .00000 5-й остаток
.00000 удвоение 5-го остатка
- .00000 6-й остаток.
4. Выполнение операции (вычисление ОВ кода числа) предлагаемым способом
Рассмотрим умножение делимого (В) на обратную [С]-1 матрицу от числа [С].
Представим делимое В с помощью РМП в виде матрицы [В1], в которой число В = {Ь020 Ь121 Ь222 Ь323...} сдвинуто влево на один разряд в сторону старшего (В) разряда (нормализовано):
11110
В1 * [ Д]:
1111
111
11
1
а делитель С с помощью РМП представим в виде матрицы
С * [С ]:
110 0 0 110 0 1 1 0
11 1
(20)
(20а)
и записываем его без сдвига (поскольку С представлено в нормализованном виде).
Произведем вычисление обратной [С ] 1 от матрицы [С ] (с присоединенной к ней единичной матрицей [ Е ] той же размерности):
'1 о о 0 1 1 0 0 0 0" 1 -1 1 -1 1
1 1 0 0 1 0 1 0 0 0 0 1 -1 1 -1
[С ]-1 = 1 *
11 0 1 0 0 1 0 0 0 0 1 -1 1
1 1 1 0 0 0 1 0 0 0 0 1 -1
1 1 0 0 0 0 1 0 0 0 0 1_
1 0 0 0 0 1"
1 0 0 0 1 -1
1 0 0 1 - 1 1
1 0 1 -1 1 -1
1 1 -1 1 - 1 1
Легко проверить, что произведение матриц [С] * [С] 1 дает единичную матриї
'1 1 0 0 0" '1 -1 1 -1 1 '1 0 0 " 0 0
1 1 0 0 0 1 -1 1 - 1 0 1 0 0 0
[С] * [С]-1 = 1 1 0 * 0 0 1 -1 1 = 0 0 1 0 0 =
1 1 0 0 0 1 - 1 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0 1
(21)
(22)
Выполним ОВ путем умножения матрицы [5] (В = 0 1 1 1 1) ^ (В1 = 1 1 1 1 0) [ В1] (делимое) на обратную матрицу [С ]-1 (делитель):
[Ві ] * [С]-1 =
'1 1 1 1 0" '1 -1 1 -1 1" '1 01 0 0"
1 1 1 1 0 1 -1 1 -1 10 1 0
1 1 1 * 0 0 1 -1 1 = 1 0 1
1 1 0 0 0 1 -1 1 0
1 0 0 0 0 1 1
(23)
Произведение даёт результат, равный числу А * 2 =.10100 в двоичной записи (учитывая сдвиг в сторону старшего на один разряд (20)) при записи числа В в матричном виде [В1 ], то есть тождественный результат. Деление В на С в матричном виде даёт (аналогично с (19)) частное А :
В * с-1 * [В ] *[С']-
'1 " '1"
1 1 -1
1 1 1 * 1
1111 -1
0 1111 1
1*1 = 1 1*1 +1* (-1) = 0 0 *1 +1* (-1) +1*1 = 0 1*1 + 0 * (-1) +1*1 +1* (-2) = 0 0 *1 +1* (-1) + 0 *1 +1* (-2) +1* 3 = 0
1
0
0
0
0
х
х
х
х
х
-3 _
.=[.1 0 1 0 0] = { А} * А1.
которое после денормализации (числа А1) будет А1 * А ={0 1 0 1 0}. Полученные таким образом результаты равны
А * [В] * [С]-1 = 01010 =5/8 = В / С.
(24)
(25)
5. Варианты вычисления ОВ
Рассмотрение процедуры вычисления ОВ (21) по типу обратного хода метода факторизации матрицы показывает дополнительные (в вычислительном плане) возможности. Матрица [С]-1 в форме РМП может формироваться из одного п -го (правого крайнего) столбца единичной матрицы, с помощью которого она вычисляется. Покажем это на примере.
Для числа
С = [.1 10 10] (26)
выполним обращение матрицы [С] путем введения вектор-столбца Е.., г = п,1, j = п для матрицы Еп п, присоединенной к матрице [Сп п ], с последующим вычислением значений
еи, і = п,1 в виде у -х вектор столбцов и с коррекцией значений с{ у = п, і,і -1,...,1 . Запишем первый столбец (правую часть для вычисляемой обратной матрицы):
[С ]-1 =
'1 1 0 1 0 1 0 0 0 0" '1 10 1 0 0"
1 1 0 1 0 1 0 0 0 11 0 1 0
1 1 0 0 0 1 0 0 * 1 1 0 0
1 1 0 0 0 1 0 1 1 0
1 0 0 0 0 1 1 1
* [С]-1. (26а)
Вычислим пятый столбец матрицы [С ] и запишем его в качестве правой части обратной матрицы:
?(.1^4 _ Л.2)
с,с. ~... с , с * е (е(л) - с * е(Л)) = ес 32\, с
1 г,2 г,п—1 г,п п \ г,п г,п п ' г,п—1 ’
е
п,п п
[С]2-1 =
'1 1 0 1 [(0 *1) = 0] 0" '1 10 1 0"
1 1 0 [(1*1)=1] -1 11 0 -1
1 1 [(0 *1) = 0] 0 = 1 1 0
1 [(1*1)=1] -1 1 -1
1 1 1
* [С]-1. (26б)
Вычислим четвертый столбец матрицы [С] и запишем его в качестве правой части обратной матрицы:
4
5
[С ]-1 =
"1 1 0 [(1* (-1))=-1] 1 1(0 - (-1)) = 1 н 1"
1 1 [(0 * (-1)) = 0] І |(-1) - 0) = -1 н -1
1 [(1* (-1))=-1] 1 1(0 - (-1)) = 1 н 1
1 н -1
1 Н 1
* [С]-1.
(26в)
Вычислим третий столбец матрицы [С] и запишем его в качестве правой части обратной матрицы:
[С ]-1 =
"1 1 (0 *1) = 0 (1 - 0) = 1 н 1 " - 2 ""
1 (1*1)=1 (-1 -1) = -2 н
1 1" -1 ""
1
1 1
* [С]-
(26г)
Вычислим второй столбец матрицы [С] и запишем его в качестве правой части обратной матрицы:
[С ]-1
"1 1 1* (-2) = -2 1 - (-2) = 3 н 3"
1 - 2
1 1
1 -1
1 1
(25 д)
В итоге получим вектор-столбец, который является первой строкой вычисляемой обратной матрицы [С ]-1. В ней, по аналогии с записью полиномов в виде РМП, на месте е1п - стоит младший разряд (сп * 2-п) обратного числа, а на месте епп - старший разряд (с1 * 2-1 ) обратного числа:
[С]-
1 0 1 0 0"
1 1 0 1 0
1 1 0 0 *
1 1 0
1 1
= [1 -1 1 -
2
1
1
1
3 - 2 1 -1 1
7* ПТ
1
-1
1
-2
3
х
-1
х
х
-3
(26е)
х
х
-5
(26ж)
Алгоритм формально можно записать так.
1. с = е(1) = 1, .
п,п п ’
2. Умножив і - е (і = п,2) элементы (сіп) ведущего столбца на е
(1)
п
" " |
сі,п = О- г е * (е(1) - с ) V п г,п/
і = п,1.
1
Т
получим вычисленный ведущий столбец.
3. Из вектор-столбца ei п (уменьшаемое) вычтем вектор ведущего столбца (вычитаемое):
1 у. 1 С * е(і)
г г,п п
(е — С * е )
V г г,п п/
4. Из уравнения следующей (п - 1)-й строки матрицы [С ], где выполняется равенство
(еп-1 Сп,п*еп)
определяем очередное (п -1) -е значение разряда ОВ кода числа [С ]-1.
5. с , = (е ,-с *е ).
п-1 п-1 п,п п
В отличие от алгоритма решения уравнения Ах = Ь правую часть уравнения (п. 5) не делим на величину (сп-1 п-1 = 1) в силу отсутствия смысла в делении на 1.
“ "
С п—1, п *е - = п-1
_ _
6. Делаем (п - 1)-й столбец ведущим. Умножаем его элементы cin-1 ^ = (п - 2),1) на значение еп-1. Получим значение соответствующего разряда ведущего (п -1) -го столбца матрицы [С].
7 еп—1 *
" “
Сг,п—1 = (Сг,„—1 * е„—1)
_ _ _ _
г = (п —1),1.
Запоминаем их значения взамен соответствующих предыдущего вектор-столбца.
8. Вычисляем вектор ОВ кода числа. Для г -й строки (г = (п — 2),1) матрицы [С] он равен
1 у 1 (е(7) — ТаСї * еі )
__ 1 1
і = (п —1),2, г = (п —ОД.
9. Текущее г -е значение ОВ разряда кода числа [С ] 1 для г -й строки:
ег7) = (ег(7—1) — £ Су * еу ), 7 = (п —1),2, г = (п — 2)Л,
у=г+1
причем в отличие от алгоритма решения системы Ах = Ь по методу, предложенному и описанному в [2], правую часть уравнения по п. 9 нет смысла делить на су = 1 (диагональные элементы матрицы для нормализованного числа в записи РМП всегда равны “1”) и т.д. То есть автоматически срабатывает приведенная в [2] коррекция алгоритма:
4 = 1/Сгг = С—1 = 1 10 Сп = еп * 4 = 1
С(у) = е( і)
Алгоритм вычисления обратного значения [С]—1, таким образом, заключается в следующем:
а) умножить вектор-столбец Сг, г = п,п —1,...,1 = п,1 на значение Сг, г = п,1, вычисленное на г -м шаге;
б) положить С„,„ = еп = 1;
в) приравнять с обратным знаком значения Сг -го ((г = п —1,1) столбца матрицы [С] к правой части матрицы [Е] = [еп ], то есть — [Сг п ] = [егп ] ( (г = п —1,1), что равносильно вычитанию из правой части матрицы вычисленного значения текущего столбца;
в) вычислить значения (г — 1) -столбца по п. а) Алгоритма и так далее до С11;
г) вычисленный на п -м шаге вектор-столбец после транспонирования его является обратным числом {С}—1 от исходного {С}, каждый из коэффициентов вектора является целочисленным коэффициентом Сг * 2—г, г = 1, п числа {С} (10), взятым со своим весом 2—г.
Замечание
Следует учитывать, что число [С*] получено с помощью выражения (21-26) как полином вида (10-11) в соответствии с правилами алгебры матриц с РМП. Поэтому, если операции с ним выполнять, как с вектором, в соответствии с правилами алгебры матриц, то следует помнить правило, что операнды в алгебре матриц не коммутативны. Но если его рассматривать как число, то на него будет распространяться правило коммутативности операции умножения.
Рассмотрим некоторый набор структур матрицы [Сп п ], который образуется при вычислении матрицы [С ]—1:
[С*]г =[10000]=(16/32=0,5)* [С ]—1 = [ 10000]=(16/32=05),
[С1 ]—1 = [1000000000] = (512/1024 = 0,5). 8 = 0,000,
[С*]г =[10001]=(17/32=0,53125)* [С ]—1 = [1000-1]=(15/32=0,46875),
[С1 ]—1 = [1000 —100010] = (482/1024 = 0,470703125). 8 = 0,001953125,
[С*]г =[10010]=(18/3=0/5625)* [С ]—1 = [100-10]=(14/32=0,4375),
[С1 ]—1 = [100 —100100 — 1] = (455/1024 = 0,444335937.) 8 = 0,006835937,
[С*]г =[10011]=(19/32=0,59375)* [С ]—1 = [ 100-1-1]=(13/32=0,40625),
[С1]—1 = [ 100-110101-1 ]=(410/1024=0,400390625), 8 = —0,005859375 [С*]г =[10100]=(20/32=0,625)* [С ]—1 = [10-101 ]=( 13/32=0,40625),
[С1]—1 = [10-1010-1010]=(489/1024=0,400390625). 8 = —0,005859375 ,
[С*]г =[10101] =(21/32=0,65625)* [С ]—1 = [10100]=(12/32=0,375),
[С1 ]—1 = [10 —100010 —10] = (390/1024 = 0,380859375.) 8 = 0,005859375,
[С*]г =[10110]=(22/32=0,6875)* [С ]—1 = [10-111]=(11/32=0,34375),
[С1 ]—1 = [10-1-1120-3 -23]=(3 71/1024 =0,368164062), 8 = +0,024414062,
[С*]т =[10111]=(23/32=0,71875)* [С ]-1 = [10-1-10]=(10/32=0,3125),
[С1 ]-1 = [ 10-1-1022-1 -4-3]=(353/1024=0344726562), 8 = +0,032226562,
[С*]т =[11000]=(24/32=0,75)* [С ]-1 = [1-11-11]=(11/32=0,34375),
[С1 ]-1 = [1-11-11-11-11-1]=(341/1024=0,333007812), 8 = -0,010742187,
[С*]т =[11001]=(5/32=0,78125)* [С ]-1 = [1-11-10]=(10/32=0,3125),
[С1]-1 = [1-11-10-10-110]=(302/1024=0,30078125), 8 = -0,01171875,
[С*]т =[11010]=(26/32=0,8125)* [С ]-1 = [1-11-23]=(11/32=0,34375),
[С1 ]-1 = [1-11 -23-46-913-19]=(307/1024=0,299804687), 8 = -0,043945312,
[С*]т =[11011] =(27/32=0,84375)* [С ]-1 = [1-11-22]=(10/32=0,3125),
[С1 ]-1 = [1-11-22-23-33-4]=(334 /1024=0,294921875), 8 = -0,017578125,
[С*]т =[11100]=(28/32=0,875)* [С ]-1 = [1-101-1]=(9/32=0,28125),
[С1]-1 = [1-10-101-101 ]=(293/1024=0,286132812), 8 = +0,001882812,
[С*]т =[11101]=(29/32=0,90625)* [С ]-1 = [1-101 -2]=(8/32=0,25)
[С1 ]-1 = [1-101 -220-35-4]=(282/1024=0,275390625), 8 = +0,025390625,
[С*]т =[11110]=(30/32=0,9375)* [С ]-1 = [1-1001]=(/32=0,28125),
[С1 ]-1 = [1-101 -220-35-4]=(273/1024=0,266601562), 8 = -0,014698437,
[С*]т =[11111]=(31/32=0,96875)* [С ]-1 = [1-1000]=(8/32=0,25)
[С1]-1 = [1-101 -220-35-4]=(264/1024=0,2578125). 8 = +0,0078125 . (27)
Анализ структур [С*]т и [С ]-1 показывает:
- значительную погрешность при вычислении обратного значения от числа, представленного только пятью разрядами, но точность возрастает на величину 8с увеличением разрядности вдвое;
- отдельные разряды обратного числа, оставаясь в целочисленном представлении, кроме изменения знака, выходят из двухпозиционного представления его. Но вес каждого i -го разряда соответствует его весу 2- (положению) в пределах разрядной сетки исходного числа с двоичным представлением. Это указывает на возможные отклонения, которые возникнут при реализации операции умножения множимого (делимого), представленного числом с разрядами в двухпозиционном виде (“0” и “1”), на множитель (делитель), структура которого представлена также в виде двухпозиционного числа, но:
- каждый из разрядов может быть со знаком плюс или минус;
- значение каждого текущего разряда (кроме первых двух вычисляемых), оставаясь целым числом, может отличаться от “0” и “1”.
6. Выводы
1. Предлагаемый метод вычисления ОВ кода числа, выполненный в алгебре матриц, реализует операцию деления (в классическом понимании операции), используя операцию умножения кода делимого на обратное значение кода делителя.
2. Замена операции деления на умножение обеспечивает правило коммутативности исходных данных, что даёт дополнительные преимущества при реализации операции в СП.
3. Операцию выполняем над числами в позиционной (например, двоичной) системе счисления. Результат по методу определения ОВ кода числа совпадает с результатом ОД, полученным классическим методом. При этом частное от деления (число) сохраняет позиционное представление числа, в котором и заданы исходные операнды (делимое и делитель). Но каждый разряд определяемой ОВ кода числа может принимать значения "0", "±1" или другое многозначное число с разными знаками и “весом”, равным номеру позиции данного разряда позиционно представленного числа.
4. Определение ОВ кода числа по предлагаемому алгоритму для замены операции деления основано на использовании методов алгебры матриц. Оно базируется на использовании процедуры, аналогичной выполнению обратного хода метода факторизации матрицы с записью числа как полинома в формате РМП.
5. Операцию можно упростить. Частично это будет показано во второй части статьи. Но дополнительные исследования и анализ предложенных решений выполнения операции (по замене традиционной ОД и отдельных этапов её) следует провести. Поиски и разработки в плане комбинирования методов алгебр матриц и цифровой арифметики могут дать новые интересные решения.
Заключение
В рамках выделяемого для статьи объёма трудно предложить и изложить метод решения, а также все нюансы отдельных этапов метода. Предполагается, что метод даст толчок для дальнейшего его продвижения специалистами в области разработки, адаптации вычислительных методов для создания высокопроизводительных параллельных структур, особенно архитектур гетерогенного типа, обеспечивающих сверхвысокую производительность при снижении затрат на обработку единицы информации.
Идея выполнения операции деления (как и метода факторизации матрицы [2]) была предложена автором во время работы в МП ПАК “Вычислительные средства, программирование и технология“ Института кибернетики им. В.М. Глушкова АН УССР, организованном в конце 80-х годов прошлого столетия для создания спецпроцессора новой архитектуры, и проработана в ТОО “ФИРМА “ПАК”. В силу форсмажорных обстоятельств работы по спецпроцессору были остановлены. По этой причине была задержана и публикация. Настоящая статья подготовлена к передаче в печать в год 90-летия светлой памяти академика В. М. Глушкова - талантливого ученого-кибернетика и алгебраиста, менеджера и человека, которому наука и мы во многом обязаны.
Считаю приятным долгом выразить свою признательность В.П. Клименко, который стимулировал написание и оказал содействие в издании цикла статей [2-8] в направлении работ, поддержанном в своё время В. М. Глушковым.
СПИСОК ЛИТЕРАТУРЫ
1. Ледянкин Ю.Я. Единый технологический поток в организации вычислений - способ повышения производительности параллельных структур на процессорных элементах транспьютерного типа. -Киев, 1989. - 20 с. - (Препр. /АН УССР. Ин-т кибернетики им. В.М. Глушкова; 89-57).
2. Ледянкин Ю.Я. Способы параллельного решения систем Ах = Ь в едином технологическом потоке решения задач математической физики / Ю.Я. Ледянкин // Математичні машини і системи. -2013. - № 1. - С. 63 - 74.
3. Клименко В.П. Вычислительные системы. Тенденции развития архитектуры гетерогенных структур / В.П. Клименко, Ю.Я. Ледянкин // Математичні машини і системи. - 2013. - № 2. - С. 19
- 31.
4. Ледянкин Ю.Я. К вопросу преобразования и параллельного ввода граничных условий при решении краевых задач в едином вычислительном потоке / Ю.Я. Ледянкин // Математичні машини і системи. - 2012. - № 1. - С. 28 - 25.
5. Ледянкин Ю.Я. Методы взвешенных невязок, колллокаций, моментов. Способ параллельной реализации в едином вычислительном потоке решения задач математической физики / Ю.Я. Ле-дянкин // Математичні машини і системи. - 2012. - № 2. - С. 17 - 28.
6. Ледянкин Ю.Я. Метод Галеркина. Способ параллельной реализации задач математической физики в едином вычислительном потоке / Ю.Я. Ледянкин // Математичні машини і системи. - 2012.
- № 3. - С. 69 - 80.
7. Ледянкин Ю.Я. Метод наименьших квадратов. Способ параллельной реализации в едином вычислительном потоке решения задач математической физики / Ю.Я. Ледянкин // Математичні машини і системи. - 2012. - № 4. - С. 59 - 69.
8. Ледянкин Ю.Я. Способ параллельной реализации метода Ньютона-Рафсона в едином технологическом потоке на спецпроцессоре для решения задач математической физики / Ю.Я. Ледянкин // Математичні машини і системи. - 2013. - № 4. - С. 38 - 49.
9. Карцев М.А. Арифметика цифровых машин / Карцев М.А. - М.: Гл. ред. Физ.-мат. лит., Наука, 1969. - 576 с.
10. Карцев М.А. Вычислительные системы и синхронная арифметика / М.А. Карцев, В.А. Брик. -М.: Радио и связь, 1981. - 360 с.
Стаття надійшла до редакції 13.11.2013