русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Векторизация. Понятие программы с однократным присваиванием. Векторизующие компиляторы.


Дата добавления: 2015-06-12; просмотров: 997; Нарушение авторских прав


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

Структура задачи этой матрицы естественным образом подходит для систем класса 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]};}



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


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.