реклама на сайте
подробности

 
 
> Конвейеризация циклов вычислений?
Nick Kovalyov
сообщение Dec 16 2005, 06:30
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 39
Регистрация: 5-12-05
Пользователь №: 11 832



Допустим итерация цикла представлена в виде графа алгоритма. Можно ли цикл с такой итерацией конвейеризировать, если есть зависимости между предыдущей и следйющей итерациями? Как "избавляются" от таких зависимостей и конвейеризируют вычисления?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
evgeniy_s
сообщение Dec 17 2005, 00:21
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 3-09-05
Из: Россия, Москва
Пользователь №: 8 195



Уважаемый Nick Kovalyov, конвейеризация дело сложное и трудное, но интересное. Это почти что распараллеливание, даже нет не так - это именно распараллеливание задачи во времени (в отличие от распараллеливания в пространстве). Попробуем разобраться в поставленной Вами задачи. Итак, что мы имеем: некий алгоритм программы, содержащий цикл. Для начала предположим, что цикл у нас будет одиночный и простой. Примерно такой, какой показан на следующем рисунке:
Прикрепленное изображение

Этот алгоритм представляет собой несколько операторов, возможно не связанных между собой, которые должны выполниться i раз. Для перехода от блок-схемы алгоритма к граф-схеме воспользуемся одной из методик, описанной в следующей книге Барский А.Б. Параллельные процессы в вычислительных системах. Планирование и организация. – М.: Радио и связь, 1990. – 256 с. Или сразу построим граф программы по правилам, изложенным в Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуа-лизация и применение. – СПб.: БВХ-Петербург, 2003. – 1104 с. При этом зависимость по данным между операторами может быть очень сильная или наоборот - слабая. Имеется два крайних случая, изображённых на рисунке:
Прикрепленное изображение

Для простоты примем, что у нас в цикле есть всего три оператора (не считая счётчика итераций, но он как правило не представляет интереса и говорить о нём мы не будем) - a, b и c. Если связь между операторами сильная т.е. например, оператор b использует в своём теле оператор a, вычисленный только что (в этом же цикле итерации), а оператор c использует оператор b, то данный алгоритм является полностью последовательным и его никак нельзя распараллелить ни во времени, ни в пространстве. Так как невозможно посчитать c не посчитав при этом b и т.д. Этому случаю соответствует первая граф-схема. Второй крайний случай - слабая информационная связь или вообще отсутствие оной. Это означает, что все три оператора могут быть выполнены параллельно (пространственное распараллеливание). Этот случай показан на второй граф-схеме. В нашем случае интерес представляют промежуточные варианты, т.е. когда зависимость между переменными есть, но значения берутся из результатов предыдущих итераций. Пусть, например, оператор b использует своё собственное значение, вычисленное на предыдущей итерации (или ещё раньше), значение оператора a, также вычисленное не позже предыдущей итерации и значение оператора c, вычисленное двумя итерациями ранее. Тогда оператор b можно конвейеризовать с оператором a и c. Пример конвейеризации для описанных случаев приведён на следующем рисунке:
Прикрепленное изображение

Ситуация I соответствует сильно связанным операторам - все они выполняются строго последовательно и, соответственно, работает только одна ступень нашего импровизированного конвейера. Второй случай (II) в наибольшей степени подходит нам. Работа здесь осуществляется следующим образом:
1. В первую ступень конвейера загружаем оператор a и производим вычисление (здесь следует заметить, что оператор a является неделимой атомарной частицей алгоритма т.е. он представляет собой элементарную операцию, если это не так и оператор a можно разбить на несколько операторов, то нетрудно обобщить всё вышесказанное и на этот случай). Для этого используем начальное значение оператора a (a(0)).
2. Производим загрузку оператора a во вторую ступень конвейера, а в первую загружаем оператор b. Вычисляем новые значения этих операторов.
3. Сдвигаем оператор a в третью ступень, во вторую помещаем оператор b, а в первую загружаем оператор c. Производим вычисление.
Не трудно увидеть, что теперь мы каждый такт будем получать значения всех операторов цикла.
Случай III соответствует полностью распараллеливаемой структуре, которую можно выполнять как на конвейере, так и на нескольких функциональных устройствах.
Таким образом проблема распараллеливания циклов, а как частный случай - конвейеризация, зависит от внутренней структуры этого самого цикла, точнее от зависимости операторов между собой по данным. Вообще распараллеливание циклов довольно трудная задача, если сразу не видно как он будет выполняться, то приходится выполнять сложный анализ, привлекая довольно непростой математический аппарат. В некоторых случаях помогают разные программы, например, в упомянутой мною книге Касьянова и Евстигнеева приводятся несколько примеров графических редакторов для работы с графами и библиотек для соответствующей обработки и анализа. Но как правило они тоже не эффективны.
Подробнее почитать о распараллеливании можно в следующей литературе:
1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БВХ–Петербург, 2002. – 608 с.
2. Распараллеливание алгоритмов обработки информации. Том 1 / Под ред. А.Н. Свенсона. – Киев: Наук. думка, 1985. – 280 с.
3. Вальковский В.А. Распараллеливание алгоритмов и программ. Структурный подход. – М.: Радио и связь, 1989. – 176 с., ил.
4. Штейнберг Б.Я. Распараллеливание рекуррентных программных циклов. // Ин-формационные технологии, №4, 2004.
5. Барбан А.П., Игнатущенко В.В. Распараллеливание структурированных про-грамм. // Электронное моделирование, №2, 1982.
6. Ортега Дж. Введение в параллельные и векторные методы решения линейных сис-тем: Пер. с англ. – М.: Мир, 1991. – 367 с.
7. Воеводин В.В. Информационная структура алгоритмов. - М.: Изд-во МГУ, 1997.- 139 с.
8. Евстигнеев В.А., Спрогис С.В. Векторизация программ: анализ зависимостей. 1989.
9. Шнитман В.З. Современные высокопроизводительные компьютеры. Учебное пособие, 1996 // Аналитические материалы Центра информационных технологий. http://www.citforum.ru/hardware/svk/contents.shtml.
10. Шпаковский Г.И. Организация параллельных ЭВМ и суперскалярных процес-соров: Учебное пособие. – Мн.: Белгосуниверситет, 1996. – 296 с.
11. Ну и конечно сайт http://www.parallel.ru
Успешной работы!


--------------------
"О наслажденье ходить по краю.
Замрите, ангелы, смотрите: я играю.
Разбор грехов моих оставьте до поры,
Вы оцените красоту игры!"
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 19 2005, 05:07
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(evgeniy_s @ Dec 16 2005, 19:21) *
Подробнее почитать о распараллеливании можно в следующей литературе:
1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БВХ–Петербург, 2002. – 608 с.
2. Распараллеливание алгоритмов обработки информации. Том 1 / Под ред. А.Н. Свенсона. – Киев: Наук. думка, 1985. – 280 с.
3. Вальковский В.А. Распараллеливание алгоритмов и программ. Структурный подход. – М.: Радио и связь, 1989. – 176 с., ил.
4. Штейнберг Б.Я. Распараллеливание рекуррентных программных циклов. // Ин-формационные технологии, №4, 2004.
5. Барбан А.П., Игнатущенко В.В. Распараллеливание структурированных про-грамм. // Электронное моделирование, №2, 1982.
6. Ортега Дж. Введение в параллельные и векторные методы решения линейных сис-тем: Пер. с англ. – М.: Мир, 1991. – 367 с.
7. Воеводин В.В. Информационная структура алгоритмов. - М.: Изд-во МГУ, 1997.- 139 с.
8. Евстигнеев В.А., Спрогис С.В. Векторизация программ: анализ зависимостей. 1989.
9. Шнитман В.З. Современные высокопроизводительные компьютеры. Учебное пособие, 1996 // Аналитические материалы Центра информационных технологий. http://www.citforum.ru/hardware/svk/contents.shtml.
10. Шпаковский Г.И. Организация параллельных ЭВМ и суперскалярных процес-соров: Учебное пособие. – Мн.: Белгосуниверситет, 1996. – 296 с.
11. Ну и конечно сайт http://www.parallel.ru


О спасибо за список книг, а есть что нибудь из этого в электронном виде ?


--------------------
Go to the top of the page
 
+Quote Post
evgeniy_s
сообщение Dec 19 2005, 11:26
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 3-09-05
Из: Россия, Москва
Пользователь №: 8 195



Уважаемый des00, из перечисленных мною книг, в электронном виде есть только те, на которые я уже дал ссылки. На самом деле, для начала я всё же рекомендовал бы отправиться на сайт Parallel.ru.

В электронном виде у меня есть следующие книги:
1. Hesham El-Rewini Advanced computer arhitecture and parallel processing.
2. Вирт Н. Алгоритмы и структуры данных.
3. Шпаковский Г.И. Организация параллельных ЭВМ и суперскалярных процессоров.
4. Xin He, Chun-Hsi Huang Scalable Coarse Grained Parallel Interval Graph Algorithms
5. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем.
6. Антонов А.С. Введение в параллельные вычисления.
7. Шпаковский Г.И. Параллельные микропроцессоры для цифровой обработки сигналов и медиа данных.
8. Johan Janssen Compiler Strategies for Transport Triggered Architectures.
Если что заинтересует, готов поделиться (пишите на e-mail).

Ещё много интересных статей по теме есть на следующих сайтах:
1. Архив статей по компьютерной тематике (в том числе по параллельным вычислениям) http://www.arxiv.org/
2. Вычислительный центр имени А. А. Дородницына Российской академии наук http://www.ccas.ru/
3. Институт микропроцессорных вычислительных систем РАН http://www.imvs.ru/imvs/itcs_3_04.html
4. Лаборатории Вычислительных Комплексов МГУ http://lvk.cs.msu.su/index.html
5. IXBT.COM http://www.ixbt.com/
6. Архитектуры и топологии многопроцессорных вычислительных систем http://informika.ru/text/teach/topolog/index.htm


--------------------
"О наслажденье ходить по краю.
Замрите, ангелы, смотрите: я играю.
Разбор грехов моих оставьте до поры,
Вы оцените красоту игры!"
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 19 2005, 11:42
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(evgeniy_s @ Dec 19 2005, 06:26) *
Если что заинтересует, готов поделиться (пишите на e-mail).


Написал на мыло


--------------------
Go to the top of the page
 
+Quote Post
locas
сообщение Jul 10 2006, 08:05
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 33
Регистрация: 29-07-05
Пользователь №: 7 194



Цитата(evgeniy_s @ Dec 17 2005, 04:21) *
Уважаемый Nick Kovalyov, конвейеризация дело сложное и трудное, но интересное. Это почти что распараллеливание, даже нет не так - это именно распараллеливание задачи во времени (в отличие от распараллеливания в пространстве). Попробуем разобраться в поставленной Вами задачи. ...

Я тоже, случайно наткнувшись на эту тему, решил разобраться. Тем более, чтоименно в этот момент решаю примерно такую же задачу. Точнее, конвейеризацию циклов можно свести к задаче, которую рассматривая я.
Я не совсем разделяю необходимость разделения параллелизма на пространственный и временной. Может, это когда-то и удобно, но, мне кажется, больше сбивает с сути - самого понимания параллелизма.
Конвейер - это параллелизм, но со спецификой связи между процессами и организацией памяти. Она посдедовательная. Вот и все. Т.е. есть "один шнурок", соединяющий процессы/процессоры и тем продиктована вся специфика конвейеризации (язык можно сломать wink.gif)
Так вот. Посмотрите, как решил я задачу о моделировании "бухгалтера"( см. тему Мастер-класс на сайте SoftCraft - http://www.softcraft.ru/forum/viewtopic.php?p=6780#6780). Там тоже цикл превращается в конвейер. Правда, делаю я это иначе. Да и делал бы для произвольного цикла так:
1. Строил бы для цикла эквивалентный автомат
2. Делал бы его параллельную декомпозицию
3. Выявил бы связи по данным и формулировал бы алгоритмы работы элементов конвейера

Правда, читать, где все это описано (правда, по частям), нужно в дополнительной к приведенному списку литературе:
1. Барнов С.А. Синтез микропрограммных автоматов (для построения эквивалентного циклу автомата)
2. Мелихов А.Н. Ориентированные графы и конечные автоматы (по параллельной декомпозиции)
3. Статьи и проекты по КА-технологии на сайте SoftCraft

Успешной работы! wink.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.0297 секунд с 7
ELECTRONIX ©2004-2016