Method level

Difference between revisions of "Pairwise summation of numbers"

From Algowiki
Jump to navigation Jump to search
[unchecked revision][checked revision]
(Created page with "Основные авторы описания: А.В.Фролов, Вад.В.Воеводин (#Описание л...")
 
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
Основные авторы описания: [[Участник:Frolov|А.В.Фролов]], [[Участник:VadimVV|Вад.В.Воеводин]] ([[#Описание локальности данных и вычислений|раздел 2.2]]), [[Участник:Teplov|А.М.Теплов]] (раздел [[#Масштабируемость алгоритма и его реализации|2.4]])
+
{{level-m}}
  
== Описание свойств и структуры алгоритма ==
+
Primary authors of this description: [[:ru:Участник:Frolov|A.V.Frolov]], [[:ru:Участник:VadimVV|Vad.V.Voevodin]] ([[#Locality of data and computations|Section 2.2]]), [[:ru:Участник:Teplov|A.M.Teplov]] ([[#Scalability of the algorithm and its implementations|Section 2.4]])
  
=== Общее описание алгоритма ===
+
== Properties and structure of the algorithm ==
  
'''Метод сдваивания''' используется в качестве быстрого варианта вычисления длинных последовательностей ассоциативных операций (например, массового суммирования). Получил распространение благодаря как наименьшей из возможных высоте алгортима, так и из-за ряда своих вычислительных характеристик, а также (в среде нечисленных алгоритмов) из-за своей рекурсивности, то есть лёгкости записи.
+
=== General description of the algorithm ===
  
=== Математическое описание ===
+
The technique of '''pairwise execution''' is used to accelerate the calculation of long sequences of associative operations (for instance, mass summations). It is widely used because of its computational characteristics and the fact that the height of this algorithm is minimum possible. Its popularity among the non-numerical algorithms is related to its recursive nature, which simplifies its formulation. 
  
Исходные данные: одномерный массив <math>n</math> чисел.
+
=== Mathematical description of the algorithm ===
  
Вычисляемые данные: сумма элементов массива.
+
Input data: one-dimensional numeric array of size <math>n</math>.
  
Формулы метода: элементы на каждом этапе алгоритма разбиваются на пары. В каждой из пар находится сумма составляющих её элементов. На следующем этапе на пары разбиваются уже эти суммы (и те элементы, которые не вошли в уже вычисленные суммы), и т. д.
+
Output data: sum of the array's elements.
  
=== Вычислительное ядро алгоритма ===
+
Formulas of the method: At each stage, the current array is first partitioned into pairs, and then the elements in each pair are summed. The resulting sums (and the elements not used at this stage) form an array that is partitioned into pairs at the next stage, etc. 
  
Вычислительное ядро последовательно-параллельного метода суммирования можно составить как из элементарных бинарных (всего <math>n - 1</math>) вычислений сумм, так и (рекуррентно) из набора реализаций метода сдваивания меньших размерностей.
+
=== Computational kernel of the algorithm ===
  
=== Макроструктура алгоритма ===
+
The computational kernel of the serial-parallel summation method can be compiled either of elementary pairwise additions (there are on the whole <math>n - 1</math> additions) or in a recursive manner, that is, as a set of implementations of the pairwise summation for shorter arrays.
  
Как уже записано в описании ядра алгоритма, основную часть метода составляют рекурсивные вызовы сумм массивов меньшей размерности.
+
=== Macro structure of the algorithm ===
  
=== Описание схемы реализации последовательного алгоритма ===
+
As already noted in the description of the computational kernel, the basic part of the method is compiled of recursive calls of the summation procedure for shorter arrays.
  
В своём чистом виде суммирование сдваиванием редко используют при последовательной реализации, поскольку при этом усложняется общая схема алгоритма и резко растёт потребность в памяти, нужной для хранения промежуточных данных.
+
=== Implementation scheme of the serial algorithm ===
  
=== Последовательная сложность алгоритма ===
+
In its pure form, the pairwise summation is rarely used in a serial implementation because this complicates the general scheme of the algorithm and sharply increases the size of memory for storing intermediate data.
  
Для вычисления суммы массива, состоящего из <math>N</math> элементов, при любых разложениях <math>N</math> на пары суть алгоритма сводится к простому переставлению скобок в формуле суммирования, и количество операций неизменно и равно <math>N - 1</math>. Поэтому алгоритм должен быть отнесён к алгоритмам ''линейной сложности'' по количеству последовательных операций.
+
=== Serial complexity of the algorithm ===
  
=== Информационный граф ===
+
Various ways of summation of an array of size <math>n</math> differ from each other only by the arrangement of parentheses in the sum. The number of additions is the same for all arrangements, namely, <math>n - 1</math>. Thus, in terms of serial complexity, the method should be qualified as a ''linear'' complexity algorithm.
  
Опишем граф алгоритма в виде рисунка. В данном случае выполнено суммирование 16 элементов массива.
+
=== Information graph ===
Вершины , соответствующие входным данным - даны синим цветом , выходным данным - красным цветом.
 
  
[[file:binary-tree-based summation graph.png|center|thumb|500px|Суммирование массива методом сдваивания]]
+
The algorithm graph is shown in the fig.1 in the case where an array of size 16 is summed. The vertices corresponding to the input data are depicted in blue, while those that correspond to output data are depicted in red.  
  
=== Описание ресурса параллелизма алгоритма ===
+
[[file:binary-tree-based summation graph.png|center|thumb|500px|Figure 1. Pairwise summation of an array]]
  
Для суммирования массива порядка <math>n</math> методом сдваивания в параллельном варианте требуется последовательно выполнить <math>\lceil \log_2 n \rceil</math> ярусов с убывающим (от <math>\frac{n}{2}</math> до <math>1</math>) количеством операций суммирования.
+
=== Parallelization resource of the algorithm ===
При классификации по высоте ЯПФ, таким образом, метод сдваивания относится к алгоритмам с ''логарифмической сложностью''. При классификации по ширине ЯПФ его сложность будет ''линейной''.
 
  
=== Описание входных и выходных данных ===
+
The parallel version of the pairwise summation for an array of size <math>n</math> requires that <math>\lceil \log_2 n \rceil</math> layers be successively performed. The number of additions per layer decreases from <math>\frac{n}{2}</math> to <math>1</math>). In terms of the parallel form height, the pairwise summation is qualified as a ''logarithmic complexity'' algorithm. Its complexity is ''linear'' in terms of the parallel form width.
  
Входные данные: массив <math>x</math> (элементы <math>x_i</math>).
+
=== Input and output data of the algorithm ===
  
Дополнительные ограничения: отсутствуют.
+
Input data: array <math>x</math> (with elements <math>x_i</math>).
  
Объём входных данных: <nowiki/><math>N</math>.  
+
Further restrictions: none.
  
Выходные данные: сумма элементов массива.
+
Size of the input data: <nowiki/><math>N</math>.  
  
Объём выходных данных: один скаляр.
+
Output data: sum of the array's elements.
  
=== Свойства алгоритма ===
+
Size of the output data: single scalar.
  
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является <math>\frac{n}{\log_2 n}</math> (отношение линейной к логарифмической). При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных — всего-навсего ''1 (входных и выходных данных столько же, сколько операций)''. При этом алгоритм полностью детерминирован. Дуги информационного графа нелокальны, от яруса к ярусу наблюдается показательный рост их длины, при любом размещении вершин графа.  
+
=== Properties of the algorithm ===
 +
 
 +
It is clear that, in the case of unlimited resources, the ratio of the serial to parallel complexity has the order <math>\frac{n}{\log_2 n}</math> (the ratio of the linear to logarithmic complexity). The computational power of the algorithm, understood as the ratio of the number of operations to the total size of the input and output data, is only 1 (the size of the input and output data is almost equal to the number of operations). The algorithm is completely determined. The edges of the information graph are nonlocal. For any placing of graph vertices, the length of the edges grows exponentially from a layer to the next layer.  
 +
 
 +
== Software implementation of the algorithm ==
 +
=== Implementation peculiarities of the serial algorithm ===
 +
=== Possible methods and considerations for parallel implementation of the algorithm  ===
 +
=== Run results ===
 +
=== Conclusions for different classes of computer architecture ===
 +
 
 +
== References ==
 +
 
 +
<references />
  
 
[[Ru:Нахождение суммы элементов массива сдваиванием]]
 
[[Ru:Нахождение суммы элементов массива сдваиванием]]
  
[[Category:Started articles]]
+
[[Category:Articles in progress]]

Latest revision as of 12:52, 8 July 2022


Primary authors of this description: A.V.Frolov, Vad.V.Voevodin (Section 2.2), A.M.Teplov (Section 2.4)

1 Properties and structure of the algorithm

1.1 General description of the algorithm

The technique of pairwise execution is used to accelerate the calculation of long sequences of associative operations (for instance, mass summations). It is widely used because of its computational characteristics and the fact that the height of this algorithm is minimum possible. Its popularity among the non-numerical algorithms is related to its recursive nature, which simplifies its formulation.

1.2 Mathematical description of the algorithm

Input data: one-dimensional numeric array of size [math]n[/math].

Output data: sum of the array's elements.

Formulas of the method: At each stage, the current array is first partitioned into pairs, and then the elements in each pair are summed. The resulting sums (and the elements not used at this stage) form an array that is partitioned into pairs at the next stage, etc.

1.3 Computational kernel of the algorithm

The computational kernel of the serial-parallel summation method can be compiled either of elementary pairwise additions (there are on the whole [math]n - 1[/math] additions) or in a recursive manner, that is, as a set of implementations of the pairwise summation for shorter arrays.

1.4 Macro structure of the algorithm

As already noted in the description of the computational kernel, the basic part of the method is compiled of recursive calls of the summation procedure for shorter arrays.

1.5 Implementation scheme of the serial algorithm

In its pure form, the pairwise summation is rarely used in a serial implementation because this complicates the general scheme of the algorithm and sharply increases the size of memory for storing intermediate data.

1.6 Serial complexity of the algorithm

Various ways of summation of an array of size [math]n[/math] differ from each other only by the arrangement of parentheses in the sum. The number of additions is the same for all arrangements, namely, [math]n - 1[/math]. Thus, in terms of serial complexity, the method should be qualified as a linear complexity algorithm.

1.7 Information graph

The algorithm graph is shown in the fig.1 in the case where an array of size 16 is summed. The vertices corresponding to the input data are depicted in blue, while those that correspond to output data are depicted in red.

Figure 1. Pairwise summation of an array

1.8 Parallelization resource of the algorithm

The parallel version of the pairwise summation for an array of size [math]n[/math] requires that [math]\lceil \log_2 n \rceil[/math] layers be successively performed. The number of additions per layer decreases from [math]\frac{n}{2}[/math] to [math]1[/math]). In terms of the parallel form height, the pairwise summation is qualified as a logarithmic complexity algorithm. Its complexity is linear in terms of the parallel form width.

1.9 Input and output data of the algorithm

Input data: array [math]x[/math] (with elements [math]x_i[/math]).

Further restrictions: none.

Size of the input data: [math]N[/math].

Output data: sum of the array's elements.

Size of the output data: single scalar.

1.10 Properties of the algorithm

It is clear that, in the case of unlimited resources, the ratio of the serial to parallel complexity has the order [math]\frac{n}{\log_2 n}[/math] (the ratio of the linear to logarithmic complexity). The computational power of the algorithm, understood as the ratio of the number of operations to the total size of the input and output data, is only 1 (the size of the input and output data is almost equal to the number of operations). The algorithm is completely determined. The edges of the information graph are nonlocal. For any placing of graph vertices, the length of the edges grows exponentially from a layer to the next layer.

2 Software implementation of the algorithm

2.1 Implementation peculiarities of the serial algorithm

2.2 Possible methods and considerations for parallel implementation of the algorithm

2.3 Run results

2.4 Conclusions for different classes of computer architecture

3 References