PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 21 авг 19 23:04

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: конвейер
СообщениеДобавлено: 26 фев 04 17:20 
Приветствую, господа.

Есть такой вопрос:
на днях, после получасовых(и безуспешных) попыток объяснить
одному преподавателю принцип работы конвейера, я получмл следующее задание.

"Реализовать с помощью конвейера сложение двух матриц".

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

В "классических учебниках" рассмотрен пример аппаратного конвейера. Там операция сложения делится на несколько элементарных операций и в общем понятно за счёт чего появится выигрыш во времени.

Я в ступоре. Насколько я понимаю, сложение на программном уровне -
неделимаю операция. От использования конвейра не будет никакой пользы, кроме вреда. Да и как вообще его реализовывать? Что брать в качестве ступеней?

Если кто-нибудь в курсе, пожалуйста, подтвердите, что это задание маразм, или объясните, как такие вещи делаются.


Вернуться к началу
  
 
 Заголовок сообщения: Re: конвейер
СообщениеДобавлено: 8 окт 06 23:58 
Не в сети

Зарегистрирован: 3 окт 06 2:24
Сообщения: 7
Откуда: Москва
Shaxter писал(а):
Я в ступоре. Насколько я понимаю, сложение на программном уровне - неделимаю операция. От использования конвейра не будет никакой пользы, кроме вреда. Да и как вообще его реализовывать? Что брать в качестве ступеней?

Если кто-нибудь в курсе, пожалуйста, подтвердите, что это задание маразм, или объясните, как такие вещи делаются.


(На будущее - если вдруг кому понадобится ;))
Это задание не маразм. С помощью конвейера можно ускорить сложение двух чисел, векторов и матриц. Как это сделать описано здесь: http://256bit.ru/education/infor2/lecture1-1.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 9 окт 06 12:11 
Не в сети

Зарегистрирован: 26 дек 04 21:21
Сообщения: 120
Откуда: Ростов-на-Дону
To Вадим Гузев: Ссылка хорошая, но там нет кое-каких деталей проясняющих ситуацию интересующую Shaxter. Кроме того там пример со сложением матриц приводиться по отношению ко второму пути параллелизма, т.е. к паралельной , а не конвейерной обработке.

To Shaxter: Организовать параллельную обработку информации можно на одном из трех уровней (см. книгу двух Воеводиных "Параллельные вычисления"). Применительно к конвейеру это может быть конвейеризация каждой операции, конвейеризация операций, конвейеризация подпрограм. По предложенной Вадимом ссылке объясняется первый способ, но он конечно же полностью аппаратный и дав команду add Ax, Bx вы фактически запустите конвейер. Если же речь идет о втором способе конвейеризации, то вам нужна рекурентность (в каком-нибудь виде), чтобы ее реализовать на конвейере. А в задаче сложения матриц рекурентость напрочь отсутствует. Про третий способ вы уже сами понимаете.
Итак, ответ на ваш вопрос: программа на C
Код:
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
 c[i][j] = a[i][j] + b[i][j]; // исправлено

реализуется с помощью конвейера, организующего вычисления каждой операции сложения. :!:
Я могу чего-то не знать, но по-моему лучшего ответа вы не дадите своему преподователю. :D

У меня твопрос: как преподователь, который не понял принцип работы конвейера, мог знать, что сложение матриц описано в любом учебнике? Это случайно не "развод" :lol: ?

_________________
Важно не слово, но дело!


Последний раз редактировалось RS 12 окт 06 23:54, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 9 окт 06 14:52 
Не в сети

Зарегистрирован: 27 апр 03 18:47
Сообщения: 41
Откуда: НЦ ПЭ, Петербург
Это код не на C. И даже не на C++ !!!

RS писал(а):
Код:
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
 c[i,j] = a[i,j] + b[i,j];



Так, к слову...

И потом, неужели так трудно смоделировать конвейер из двух стадий - сложение элементов и накопление суммы? Или взять учебник и сделать программную модель векторного процессора в части сложения матриц? Ну хочет человек конвейер - сделайте! Задача ведь состоит не в построении максимально эффективного сумматора, а конкретно конвейера.

Не боитесь, что препод может заглядывать на этот форум? Легче всего заявить, что задание маразматическое, не дав при этом себе труда разобраться в вопросе. Утверждать, что "профессор лопух" очень просто, но деструктивно. Сделайте конвейер, придумайте. И гордитесь тем, что даже странные задания можете делать хорошо.

_________________
Don't shoot the pianist. He's doing his best...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: конвейер
СообщениеДобавлено: 10 окт 06 13:16 
Не в сети

Зарегистрирован: 22 сен 04 13:33
Сообщения: 34
Shaxter писал(а):
Я в ступоре. Насколько я понимаю, сложение на программном уровне -
неделимаю операция. От использования конвейра не будет никакой пользы, кроме вреда. Да и как вообще его реализовывать? Что брать в качестве ступеней?


:) Чтобы помочь выйти из ступора предлагаю взглянуть на проблему так: вам нужно складывать 128-разрядные целые числа


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 окт 06 14:47 
Не в сети

Зарегистрирован: 22 сен 04 13:33
Сообщения: 34
А лучше скажи преподу, что у тебя конвейер из одной ступени (сложения) :lol: :lol: :lol: :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 окт 06 23:53 
Не в сети

Зарегистрирован: 26 дек 04 21:21
Сообщения: 120
Откуда: Ростов-на-Дону
Vladimir Krivenko писал(а):
Это код не на C. И даже не на C++ !!!

1) Полагаю вы поняли, что я имел ввиду.
2) Полагаю вы догадались, что моя ошибка вызвана тем, что я программирую на C++ в университете, учу прграммировать детей в школе на Pascal, читаю статьи с примерами на Fortran, и кстати, веду бухучет себя-предпринимателя в 1С.
Зачем придираться? Я ведь не придираюсь, что вы вспомнили
Vladimir Krivenko писал(а):
модель векторного процессора

когда речь идет о конвейере.

Vladimir Krivenko писал(а):
Сделайте конвейер, придумайте. И гордитесь тем, что даже странные задания можете делать хорошо.

Странные задания должны быть разумно сформулированы, а не в стиле "найди то, не знаю что". В комбинаторике, кстати, от четкости формулировки зависит ответ.
И, кстати, профессора никто лопухом не называл! По-моему, товарищ Shaxter - провакатор завел тему и сбежал, а тема эта просто "развод", чтобы затеять спор. Я с такими шутками на других форумах сталкивался.

To Игорь: Оба поста поддерживаю!

_________________
Важно не слово, но дело!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 окт 06 14:30 
Не в сети

Зарегистрирован: 22 сен 04 13:33
Сообщения: 34
В общем тему можно закрыть.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB