Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Оптимизация обращений к памяти при сеточных методах решения трехмерных задач.



 

Схема решения сформулированных задач при семиточечном шаблоне выглядит примерно следующим образом:

 

do 99 k = 1, n

do 99 i = 1, n

do 99 j = 1, n

99 A(i, j, k) = A(i-1, j, k) + A(i+1, j, k) + A(i, j-1, k)+ A(i, j+1, k) + A(i, j, k-1)+ A(i, j, k+1)

 

Если в схеме участвуют диагональные элементы трехмерной сетки, то они не внесут изменений в вопрос об оптимальном считывании данных.

Пусть количество процессоров p = n. 

Разместим трехмерный массив A в параллельной памяти поблочно с размерами блоков p1/3. Количество пересылочных тактов равно 6*p1/3

Если массив разместить так, что элемент A(i, j, k) находится в модуле памяти с номером i mod p, то количество пересылочных тактов 2*p. Таким образом, блочное размещение имеет очевидные преимущества. 

Рассмотрим решение данной трехмерной задачи на вычислительной модели с кэш-памятью.

Предположим, что массив A считывается параллелепипедами со сторонами M1, M2, M3 (M1*M2*M3 = M). Тогда на считывание M данных приходится вычислений тела цикла

 

ValumeCulc = (M1 – 2)*(M2 – 2)*(M3 – 2)

= M – 2*(M1*M2 + M2*M3 + M1*M3) + 4*(M1 + M2 + M3) – 8

 

Несложно установить, что данная функция достигает оптимального значения (M1/3 -2)3 при равенстве всех сторон параллелепипеда M1 = M2 = M3 = M1/3.

Количество чтений памяти равно n3/(M1/3 -2)3.

Если выполнять программу непосредственно, как она записана тройным циклом, то будут считываться строки (i, j), (i-1, j), (i+1, j), (i, j-1), (i, j+1) по M/5 чисел. То есть 

 

ValumeCulc = M/5 – 2.

 

Количество чтений памяти равно R = n3/(M/5 – 2) ≈ 5*n3/M.

Выигрыш при блочном размещении данных асимптотически (при больших M) в 5 раз.

 

 

Блочные размещения данных для решения СЛАУ с ленточной матрицей.

 

Рассмотрим СЛАУ с ленточными матрицами, решение которых методами редукции и окаймления приводит к СЛАУ с блочными трехдиагональными матрицами.

Любая ленточная матрица может быть разбита на блоки так, что она станет блочной трехдиагональной матрицей.

 

                  

 

Имеет место следующий очевидный факт.

       Пусть для матрицы A = {aij }i, j=1, …, n m – такое наименьшее число, что aij = 0, если ½ i-j½ > m. Тогда для того, чтобы матрица A после разбиения на блоки стала блочной трехдиагональной, необходимо и достаточно, чтобы размер блоков был не меньше m. 

       Теперь к СЛАУ с блочной трехдиагональной матрицей может быть применен метод редукции, который, в частности, допускает параллельное выполнение [90], [91]. В случае треугольной ленточной СЛАУ получается блочная двухдиагональная матрица. Решение СЛАУ с такой матрицей равносильно вычислению цикла с линейной рекуррентной зависимостью. Параллельные алгоритмы вычисления таких циклов приводятся в [103], [108]. При размещении блочной матрицы в параллельной памяти, очевидно, для нормального выполнения указанных алгоритмов все элементы каждого блока должны находиться в одном и том же модуле памяти. Следовательно, для параллельных алгоритмов решения СЛАУ с такими матрицами естественным является блочное размещение данных. 

 

 

Параллельное вычисление дробнолинейных рекуррентных последовательностей.

 

       Сначала следует вспомнить, что суперпозиция двух дробнолинейных отображений опять является дробнолинейным отображением.

 

 

Если коэффициенты всякого дробнолинейного отображения записывать в виде матрицы 2x2, то коэффициенты суперпозиции отображений представляют собой произведение матриц коэффициентов исходных отображений.

       Пусть задана рекуррентная последовательность

 

 

Обозначим матрицу коэффициентов отображения fn 

 

 

Тогда для вычисления членов последовательности xn достаточно вычислить все произведения матриц     

 

B1 = A1

B2 = A1 * A2

B3 = A1 * A2 * A3

………………….

Bn-1 = A1 * A2 * A3 *…* An-1

 

(Параллельный алгоритм вычисления всех таких произведений можно найти в [ 25 ]). Теперь все члены последовательности xk могут быть одновременно вычислены по элементам матриц

 

 

по формулам

 

 

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

 

 


Поделиться:



Последнее изменение этой страницы: 2019-05-17; Просмотров: 413; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.011 с.)
Главная | Случайная страница | Обратная связь