Операционные системы распределенных вычислительных систем


Консистентность по входу. - часть 3


 

6.5 Конструкторские решения.

 

6.5.1           Страничная DSM.

 

Общая память разбивается на порции одинаковой длины - страницы или блоки. Если выбрать длину совпадающей (или кратной) длине страницы оперативной памяти процессоров (если их память страничная), то можно будет воспользоваться механизмом защиты памяти для обнаружения отсутствующих страниц DSM и аппаратным механизмом замены виртуального адреса на физический.

К этому же типу DSM (не знающих заранее ничего о содержимом памяти) можно отнести и аппаратные реализации на базе кэшей (Convex SPP).

 

6.5.2    DSM на базе разделяемых переменных.

В DSM системах с разделяемыми переменными только отдельные структуры данных разделяются между процессорами. Программист должен точно определить какие переменные в программе должны разделяться, а какие не должны.

Знание информации о режиме использования разделяемых переменных позволяет воспользоваться более эффективными протоколами когерентности.

Рассмотрим следующую программу, которая автоматически распараллеливается посредством размножения всех переменных на все процессоры и распределения между ними витков цикла.

s = 0;

last_A = 0;

for (i = 1; i < L2-1; i++)

{

r = A[i-1]*A[i+1];

C[i] = r;

s = s + r*r;

if (A[i]!=0) { last_A = A(i)};

 }

A[0] = last_A;

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

А - только на чтение;

r - приватно (фактически не является разделяемой);

C - раздельно используется (любой элемент массива изменяется не более, чем одним процессом, и никакой процесс не читает элемент, изменяемый другими);

s - редукционная переменная, используемая для суммирования;

last_A - переменная, хранящая значение последнего ненулевого элемента массива А.

Приведения в консистентное состояние переменных A и r - не требуется.

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

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




Начало  Назад  Вперед



Книжный магазин