Участник:Lexaloris/Умножение разреженной матрицы на вектор: различия между версиями
Lexaloris (обсуждение | вклад) |
Lexaloris (обсуждение | вклад) |
||
Строка 56: | Строка 56: | ||
[[File:InfoGrafMatrixRRCUandVextor.jpg]] | [[File:InfoGrafMatrixRRCUandVextor.jpg]] | ||
− | |||
== Ресурс параллелизма алгоритма == | == Ресурс параллелизма алгоритма == |
Версия 07:37, 15 октября 2016
Авторы страницы: Кочетков П.А и Новоселов А.Д.
Содержание
- 1 Свойства и структура алгоритмов
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 3 Литература
1 Свойства и структура алгоритмов
1.1 Общее описание алгоритма
Пусть N — число строк матрицы. Для каждой ее строки I матрийы мы находим с помощью IA значения первой IAA и последней IAB позиций, занимаемых элементами строки I в массивах JA и AN. Затем, чтобы вычислить скалярное произведение строки I и вектора B, мы просто просматриваем JA и AN на отрезке от IAA до IAB: каждое значение, хранимое в JA, есть столбцовый индекс и используется для извлечения из массива B элемента, который должен быть умножен на соответствующее число из AN. Результат каждого умножения прибавляется к C(I).
1.2 Математическое описание алгоритма
Исходные данные:
IA, JA, AN - заданная матрица в форме RR (С) U;
B - заданный заполненный вектор;
N - число строк матрицы.
Выход: C вектор-произведение размерности N.
Формулы метода:
- \begin{align} & IAA_{i} = IA(i), \quad i \in [1, N], \\ & IAB_{i} = IA(i + 1) - 1, \quad i \in [1, N], \\ & c_{i} = \sum\limits_{j = IAA_{i}}^{IAB_{i}} AN(j)B(JA(j)), \quad i \in [1, N] \\ \end{align}
1.3 Вычислительное ядро алгоритма
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
Последовательность исполнения метода следующая:
Далее для всех i от 1 до N по нарастанию выполняются:
1. c_{i} = 0; IAA = IA(i); IAB = IA(i + 1 ) - 1
После этого, если (IAB \lt = IAA):
2. Для всех j от IAA до IAB выполняется:
c_{i} = \sum\limits_{j = IAA_{i}}^{IAB_{i}} AN(j)B(JA(j))
1.6 Последовательная сложность алгоритма
Для всего алгоритма потребуется выполнить O(M) операций, где M - число ненулевых элементов матрицы.
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
Алгоритм в рамках выбранной версии полностью детерминирован.
Вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных – константа.
2 Программная реализация алгоритма
2.1 Масштабируемость алгоритма и его реализации
2.2 Существующие реализации алгоритма
3 Литература
<references \>