
- •Параллельное программирование
- •Параллельная обработка информации в вычислительных системах. Конвейерная обработка. Мультипрограммный режим, формула Литтла. Ярусно-параллельная форма представления программы.
- •2.Закон Гроша. Гипотеза Минского.
- •Закон Гроша.
- •Гипотеза Минского.
- •3. Законы Амдала и следствия из них.
- •1 Закон.
- •2 Закон.
- •4.Классификация вычислительных систем по Флинну.
- •5.Принципы организации взаимодействия параллельных процессов. Взаимное исключение, критические секции, синхронизация, семафоры Дейкстра.
- •7.Векторизация. Понятие программы с однократным присваиванием. Векторизующие компиляторы.
- •8.Основные особенности и этапы выполнения методологии канонического отображения.
- •9.Графы зависимостей и графы потоков сигналов. Процедура отображения графа зависимостей в граф потока сигналов. Критерий допустимости линейного плана.
- •10.Параллельная обработка информации в транспьютерных системах. Язык оссам как инструментальное средство параллельного программирования транспьютерных систем.
- •11.Mpi: назначение и организация пакета mpi, принципы построения программ для mpi. Классификация функций mpi. Функции mpi_bcast, mpi_barrier, mpi_gather, mpi_scatter.
- •12.Виртуальные топологии. Виды виртуальных топологий. Основные функции для работы с виртуальными топологиями.
7.Векторизация. Понятие программы с однократным присваиванием. Векторизующие компиляторы.
Большинство задач, которые могут быть успешно решены на параллельных ВС является задачами, связанными с обработкой векторов и матриц.
Структура задачи этой матрицы естественным образом подходит для систем класса MIMD SIMD и (PVP,MPP), т.е. конвейерным систем матричных процессоров. Поэтому общие рекомендации по построению параллельных алгоритмов могут быть сведены к рекомендациям сформировать задачу в терминах линейной алгебры.
Векторизацией называется процесс поиска в исходной программе фрагментов, связанных с обработкой векторов и матриц и замены таких фрагментов совокупностью параллельно работающих ветвей.
В системах с конвейерной архитектурой, таких как CRAY-1, предусмотрены специальные векторные команды, позволяющие за одно обращение выполнить операцию над всеми элементами вектора.
Векторизующий компилятор – это программа, которая просматривает исходный текст
на последующем языке и генерирует на его основе команды параллельной обработки.
При этом некоторые компиляторы могут для наглядности генерировать промежуточные формы. ASCNX генерирует такую промежуточную форму алгоритмов, как ориентированный граф.
При векторизации программ наиболее вероятными кандидатами на преобразование являются циклические и рекурсивные вычисления, поэтому векторизующие компиляторы ориентированы на поиск и преобразование.
Рассмотрим пример умножения на вектор:
Ci=Σ(от m до j=1) AIJBJ
Do 10 i=1,4
C(i)=0
Do 10 j=1,4
C (i)=c(i)+A(I,j)+B(j)
10 continue
in parallel for 1<i<4 , 1<j<4 do begin
temp (I,j)=a(I,j)*b(j)
end in parallel do
in parallel for 1<i<4 do begin
c(i)=0
do 0 j=1,4
c(i) = c(i)+temp(I,j)
10 continue
end in parallel
Выделим условия, которые позволяют выполнить векторизацию, либо делают ее невозможной. Обязательным условием для проведения векторизации является описание решения задачи терминов операции над векторными матрицами.
Второе условие – независимость по данным между операциями проводимыми над отдельными элементами векторов for (i=0: j<n: i++)
Третье условие – регулярность расположения элементов векторов (расстояние между элементами вектора, которое подвергается обработки, должно быть известным, постоянным и одинаковым).
Четвертое условие – отсутствие обращений к функциям пользователя при обработке элементов вектора: {f(a[i]};}
8.Основные особенности и этапы выполнения методологии канонического отображения.
МКО представляет собой совокупность подходов позволяющих спроектировать параллельное вычислительные структуры: SIMD, MIMD процессоры. Как и любая методология, методология КО носит алгоритмический, а не алгебраический характер, т.е. для одной и той же задачи может быть получено несколько решений.
Успешность того или иного решения определяется опытом или искусством проектировщика. Методология имеет рекомендательный характер, т.е. алгебраической процедуры, которая бы позволила однозначно вычислить структуру системы для поставленной задачи, не существует. Отличительными чертами методологии КО является: - применимость лишь в случаях однородных графовых зависимостей, т.е. инвариантных по отношению к операции сдвига;- использование только линейных проекций и планов; - регулярность структуры результирующего матричного процессора.
Методология КО включает в себя три основных этапа:
1)разработка однородного графа зависимостей, инвариантного относительно операции сдвигаются.
2)разработка графа потока сигналов путем проецирования графа зависимостей на матричную структуру.
3)разработка самого матричного процессора для физической реализации графа, потока, сигнала.
Можно выделить также нулевой предварительный этап, на котором для построения задачи потребуется промежуточная форма в виде программ с однократным присваиванием, а затем на основе этой программы строится первый граф зависимости, возможно еще не локализованный.
Разработка графа зависимостей является задачей, для которой, как правило, нет однозначных решений, т.е. может быть построено несколько вариантов графа зависимостей.
В свою очередь на основе одного и того же графа зависимостей путем применения различных планов и направлений проецирования можно получить множество графов потоков сигналов.
Наряду с методологией канонического отображения существует методология обобщенного отображения. Данная методология более сложна и представляет собой набор методологии меньшего уровня. Методология обобщенного отображения применяется в случаях неоднородности исходного графа зависимостей при нелинейном планировании и при мульти проекциях.