Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Организация и исследование эффективных вычислений для решения задач аэроакустики на кластерных архитектурах (магистерская диссерта / Буренков С. Организация и исследование эффективных вычислений для решения задач аэроакустики на кластерных архитектурах.doc
Скачиваний:
86
Добавлен:
28.06.2014
Размер:
2.27 Mб
Скачать

3.3. Формат хранения разреженных матриц

Формат для хранения разреженных матриц – CompressedSparseRow (CSR) – одна из наиболее широко используемых схем для хранения разреженных матриц. Он был предложен в 1969 году. Эта схема предъявляет минимальные требования к памяти и в то же время оказывается очень удобной для нескольких важных операций над разреженными матрицами: сложения, умножения, перестановок строк и столбцов, транспонирования, решения линейных систем с разреженными матрицами коэффициентов как прямыми, так и итерационными методами и т.д. [14]

Разреженная матрица хранится с использованием следующих массивов:

aelem, который содержит все ненулевые элементы матрицы, перечисленные в строчном порядке;

jptr, который содержит столько же элементов, сколькоaelemи для каждого из них указывает, в каком столбце находится данный элемент;

iptr, который хранит число элементов, равное увеличенной на единицу размерности СЛАУ. Егоi-й элемент указывает, с какой позиции в массивахaelemиjptrначинаетсяi-я строка матрицы. Соответственноiptr[i+1] – iptr[i]равно числу ненулевых элементов вi-й строке. Последний элементiptr[n+1]равен числу элементов вaelem, увеличенному на единицу.

Данный способ представления разреженной матрицы называют полным, поскольку представлена вся матрица, иупорядоченным, поскольку элементы каждой строки хранятся в соответствии с возрастанием столбцовых индексов [14]. Массивыiptrиjptrпредставляют портрет матрицы, задаваемый как множество списков смежности ассоциированного с матрицей графа.

В 1972 году был предложен еще один вариант строчной схемы хранения, приспособленный для приложений, где приходится выполнять операции над строками и столбцами. Матрицу хранят по строкам, как описано выше; кроме того, определяют портрет транспонированной матрицы и также хранят по строкам. Строчное представление портрета транспонированной матрицы равносильно столбцовому представлению портрета матрицы. Его можно получить транспонированием строчного портрета исходной матрицы [14].

Для несимметричных матриц была предложена и другая, гораздо более простая строчная схема. Ненулевые элементы хранят в двумерном массиве с размерами , гдеn– порядок матрицы,m– максимальное число ненулевых элементов в строке. Эта схема допускает простую обработку; недостаток ее в том, чтоmможет быть неизвестно заранее, а может оказаться слишком большим.

Для хранения матрицы коэффициентов при решении СЛАУ с помощью разрабатываемой модификации перезапускаемого метода обобщенных минимальных невязок был выбран CSRформат. Выигрыш по используемой оперативной памяти в процессе решения системы изNуравнений от использованияCSRформата в сравнении с хранением всех коэффициентов матрицы с долейdненулевых элементов в двумерном массиве может быть посчитан по формуле

, (3.1)

где – объем, который занимает в памяти ЭВМ вещественная переменная,– объем, который занимает в памяти ЭВМ целочисленная переменная.

3.4. Разделение данных

Способность параллельного алгоритма эффективно использовать процессоры является важной характеристикой выполняемых расчетов. Параллельный алгоритм называют масштабируемым, если при росте числа процессоров он обеспечивает увеличение ускорения при сохранении постоянного уровня эффективности использования процессоров [11]. Результатом применения параллельных вычислений стало не только уменьшение времени выполнения расчетов, но и обеспечение возможности решения более сложных вариантов задач или их постановок, решение которых не представляется возможным при использовании однопроцессорных вычислительных систем.

Хранение вектора правой части системы, вектора начального приближения и вспомогательных векторов на всех процессорах целиком не является критичным: затраты памяти на хранение матрицы размерности nсущественно больше, чем затраты на вектор изnэлементов, особенно, если речь идет о больших размерностях. Главная трудность в распределении данных при решении больших СЛАУ – распределить матрицу коэффициентов таким образом, чтобы затратить при этом минимальное количество памяти. Поэтому для хранения матрицы коэффициентов был использован форматCSR, описанный в разделе 3.3, а также использован подход ленточного распределения матрицы по процессорам «на лету», что исключает возможность расположения матрицы целиком в памяти одного процессора даже во время чтения. Матрица представляется непрерывными наборами строк, как показано на рис. 3.2.

Рис. 3.2. Организация распределения данных при выполнении модификации алгоритма GMRES

Каждый исполнитель располагает информацией о части матрицы коэффициентов, а также хранит вектор начального приближения и вектор правой части. Для объединения результатов расчета после выполнения итерации и получения на исполнителях фрагментов уточненного решения (см. рис. 3.2), выполняется операция передачи, после которой вектор начального приближения будет заменен очередным приближением к решению.

В модели передачи сообщений существует два типа обменных взаимодействий: массовые обменные взаимодействия и точечные обмены. В разделе 3.5 представлено исследование двух этих типов. На примере классической задачи матричного умножения.