|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Сергей ВаскецовУскорение при анализе работы параллельных алгоритмов - это не просто отношение времен выполнения алгоритмов, а приведенное к количеству узлов. Если задача полностью распараллеливается, и 2 процессора ее выполняют вдвое быстрее, N процессоров - в N раз быстрее - ускорение равно 1. Оставляю в качестве домашнего задания придумать ситуацию, когда ускорение может превышать 1, это крайне нетривиальные случаи. Но начать рекомендую с матчасти.Давайте лучше выполним другое домашнее задание. приведите пример, когда по ВАШЕМУ ОПРЕДЕЛЕНИЮ УСКОРЕНИЯ - задания при распараллеливании или выполнении на 1 одном процессоре - вобще будут иметь ускорение отличное от 1, при условии, что издержки на переключение задач отсутствуют. Кроме того, хочу заметить, что ваше "ускорение" имеет практический смысл только для подсчета издержек на переключение задач. Но это все лирика... Потому что весь мир за счет параллельного выполнения пытается сократить АБСОЛЮТНОЕ время выполнения суммы заданий, связанных друг с другом зависимостями. И использует для этого другие критерии успешности полученного результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2008, 18:12 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Belyприведите пример, когда по ВАШЕМУ ОПРЕДЕЛЕНИЮ УСКОРЕНИЯ - задания при распараллеливании или выполнении на 1 одном процессоре - вобще будут иметь ускорение отличное от 1, при условии, что издержки на переключение задач отсутствуют. Элементарно. Любой пример, где одна ветвь параллельного алгоритма будет ждать результатов от другой. Например, в случае решения уравнений матфизики с граничными условиями. BelyКроме того, хочу заметить, что ваше "ускорение" имеет практический смысл только для подсчета издержек на переключение задач. Ничего подобного. Это важнейшая характеристика, которая показывает как качество самого алгоритма распараллеливания задачи, так и позволяет экстраполировать оценку абсолютного времени выполнения в случае увеличения количества узлов при сохранении алгоритма и прочих условий. Как раз к времени переключения задач это не имеет никакого отношения, никто в здравом уме не запускает параллельные вычисления на одном процессоре, равно как никто в здравом уме не заставляет одного человека делать 10 дел одновременно. Belyвесь мир за счет параллельного выполнения пытается сократить АБСОЛЮТНОЕ время выполнения суммы заданий, связанных друг с другом зависимостями. И использует для этого другие критерии успешности полученного результата. В первом приближении это верно. Но существуют определенные граничные условия. В простейшем случае рытья ямы при наличии бесконечного количества денег можно ставить задачу, сколько надо землекопов, чтобы вырыть ее за минимальное время, и чтобы все землекопы не проставивали. В более сложных случаях даже топология схемы узлов может быть следствием структуры параллельного алгоритма. Так что я бы не был столь категоричен. Не всегда сделать быстрее будет выгоднее. По прежнему предлагаю Вам придумать ситуацию, когда 40 процессоров выполнят при одном и том же алгоритме задачу более чем в 2 раза быстрее, чем 20 тех же одинаковых процессоров (чтобы ускорение было больше 1), причем хитрость не в самом алгоритме, то есть, будем считать, что он распараллеливается как угодно оптимально для любой схемы. А то меня не покидает ощущение, что мы с Вами разговариваем на разных языках. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 11:53 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Сергей Васкецов Belyприведите пример, когда по ВАШЕМУ ОПРЕДЕЛЕНИЮ УСКОРЕНИЯ - задания при распараллеливании или выполнении на 1 одном процессоре - вобще будут иметь ускорение отличное от 1, при условии, что издержки на переключение задач отсутствуют. Элементарно. Любой пример, где одна ветвь параллельного алгоритма будет ждать результатов от другой. Например, в случае решения уравнений матфизики с граничными условиями. Берем простой случай - две задачи, вторая задача ждет данные от первой. обе задачи выполняются по 1 минуте. Принципиально нераспараллеливающийся случай. Узлов в графе задач - два. Время выполнения (абсолютное) для одного процессора: t1 + t2 = 2 минуты. Время выполнения (абсолютное) для любого кол-ва процессоров: t1 + t2 = 2 минуты. Затраченное машинное время (для любого кол-ва процессоров) = t1 + t2 = 2 минуты. Ускорение: ((1+1)/2)/((1+1)/2)=1 Аналогично - две абсолютно независимые задача (полное распараллеливание). Узлов в графе задач - два. Время выполнения (абсолютное) для одного процессора: t1 + t2 = 2 минуты. Время выполнения (абсолютное) для 2 и более процессоров: = 1 минуты. Затраченное машинное время (для любого кол-ва процессоров) = t1 + t2 = 2 минуты. Ускорение: ((1+1)/2)/((1+1)/2)=1 Независимо от того на скольки процессорах выполнять задания - суммарное затраченное машинное время - не поменяется. Поменяться может только абсолютное время. Сергей Васкецов BelyКроме того, хочу заметить, что ваше "ускорение" имеет практический смысл только для подсчета издержек на переключение задач. Ничего подобного. Это важнейшая характеристика, которая показывает как качество самого алгоритма распараллеливания задачи, так и позволяет экстраполировать оценку абсолютного времени выполнения в случае увеличения количества узлов при сохранении алгоритма и прочих условий.Алгоритм распараллеливания - он-то здесь каким боком? Если у меня 10 задач по 1 минуте - как их не расставляй по процессорам, как они не завись друг от друга - 10 минут процессорного времени они займут. Ни меньше - ни больше. И еще раз повторюсь - для абсолютного времени - это не так. Сергей ВаскецовКак раз к времени переключения задач это не имеет никакого отношения, никто в здравом уме не запускает параллельные вычисления на одном процессоре, равно как никто в здравом уме не заставляет одного человека делать 10 дел одновременно.В теории расписаний есть целый класс алгоритмов предназначенных для построения расписаний с учетом издержек на переключение между задачами. Ао первых - жизнь такая, что переключение контекстов в компьютерном мире существует само по себе и его нельзя не учитывать. Да и не в компьютерном мире - это тоже есть (перенастройка поточной линии на новый продукт и пр.). При этом есть ситуации, когда задачи для выполнения имеют разные deadline-ы (максимальные сроки окончания). Вот в этом случае переключение с задачи на задачу недоконца ее выполнив - может позволить составить более оптимальное расписание, нежелине используя стратегию "поставил задачу на выполнение - выполняй до конца". Сергей ВаскецовТак что я бы не был столь категоричен. Не всегда сделать быстрее будет выгоднее.Если не брать в расчет "открытия опередившие время", то быстрее = выгоднее. Это можно считать аксиомой. Сергей ВаскецовПо прежнему предлагаю Вам придумать ситуацию, когда 40 процессоров выполнят при одном и том же алгоритме задачу более чем в 2 раза быстрее, чем 20 тех же одинаковых процессоров (чтобы ускорение было больше 1), причем хитрость не в самом алгоритме, то есть, будем считать, что он распараллеливается как угодно оптимально для любой схемы. А то меня не покидает ощущение, что мы с Вами разговариваем на разных языках.Меня тоже не покидает ощущение, что на разных языках говорим... А пример простой. 40 независимых задач по 1 минуте. 40 процессоров выполнят их все за 1 минуту (будет готов результат по всем 40 задачам). 20 процессоров - выполнят 40 этих же задач за 2 минуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 15:54 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
BelyЕсли не брать в расчет "открытия опередившие время", то быстрее = выгоднее. Это можно считать аксиомой. Нет. Более быстрое выполнение может быть неоправдано дороже, чем чуть менее быстрое. Например, в случае использования 96-процессорной кластерной нерасширяемой системы ускорение работы может быть достигнуто либо перепроектированием (сиречь созданием заново) подобной системы, либо добавлением еще одной аналогичной системы, что фактически нереально. Bely Сергей ВаскецовПо прежнему предлагаю Вам придумать ситуацию, когда 40 процессоров выполнят при одном и том же алгоритме задачу более чем в 2 раза быстрее, чем 20 тех же одинаковых процессоров (чтобы ускорение было больше 1), причем хитрость не в самом алгоритме, то есть, будем считать, что он распараллеливается как угодно оптимально для любой схемы. А то меня не покидает ощущение, что мы с Вами разговариваем на разных языках.Меня тоже не покидает ощущение, что на разных языках говорим... А пример простой. 40 независимых задач по 1 минуте. 40 процессоров выполнят их все за 1 минуту (будет готов результат по всем 40 задачам). 20 процессоров - выполнят 40 этих же задач за 2 минуты. Внимательнее. Ускорение будет равно 1 (так как 40*T(40)/20*T(20)=1), так что ответ неверен (требуется найти ситуацию, чтобы ускорение было БОЛЬШЕ 1). Потому и все, что Вы написали выше, я опустил и не цитировал. Я уже подсказывал, что простых примеров Вам не удастся придумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 17:05 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
BelyБерем простой случай - две задачи, вторая задача ждет данные от первой. обе задачи выполняются по 1 минуте. Принципиально нераспараллеливающийся случай. Узлов в графе задач - два. Время выполнения (абсолютное) для одного процессора: t1 + t2 = 2 минуты. Время выполнения (абсолютное) для любого кол-ва процессоров: t1 + t2 = 2 минуты. Затраченное машинное время (для любого кол-ва процессоров) = t1 + t2 = 2 минуты. Это неверно. Время ожидания (простоя) также необходимо учитывать, а не чистое время работы процессора над задачей. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 17:08 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Сергей ВаскецовВнимательнее. Ускорение будет равно 1 (так как 40*T(40)/20*T(20)=1), так что ответ неверен (требуется найти ситуацию, чтобы ускорение было БОЛЬШЕ 1). Потому и все, что Вы написали выше, я опустил и не цитировал. Я уже подсказывал, что простых примеров Вам не удастся придумать.Если честно - я не знаю откуда вы взяли этот термин "ускорения". Можете привести ссылку на какю-нибудь литературу где оно есть? Мне физический смысл этой величины - вобще не понятен. Ну, пусть оно равно 1 - это хорошо или плохо? Оно вобще ПРО ЧТО? пока писал ответ - появилось следующее сообщение. Сергей ВаскецовЭто неверно. Время ожидания (простоя) также необходимо учитывать, а не чистое время работы процессора над задачей.Получается, что время о котором вы говорите - это (АБСОЛЮТНОЕ время для выполнения всех задач) * (кол-во процессоров). Тогда все становится понятно, с точки зрения вашего "ускорения". Но ускорений, как и средних - их множество разных. И не все варианты параллельного выполнения в компьютерах - применимы для аналогий с параллельной работой людей. 1) Быстрее у людей - это означает окончить раньше, а не затратить меньше человеко-дней. 2) Работа команды над проектом - она не делится просто на кол-во людей не потому, что кто-то от кого-то будет ждать готовности его модуля, а потому, что появляются дополнительные издержки на взаимодействие (совещания, согласование интерфейсов, стыковка). С одним человеком таких проблем меньше - самому с собой договариваться легче. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 17:40 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
BelyЕсли честно - я не знаю откуда вы взяли этот термин "ускорения". В ВУЗе в свое время проходили. BelyМожете привести ссылку на какю-нибудь литературу где оно есть? Лень. Смысл его я описал достаточно. BelyМне физический смысл этой величины - вобще не понятен.Ну, пусть оно равно 1 - это хорошо или плохо? Оно вобще ПРО ЧТО? Выше уже я все расписал. Если ускорение равно 1 - задача распараллеливается полностью. Например, два человека выкопают две ямы вдвое быстрее, чем один будет копать обе ямы. Если ускорение меньше 1 - значит, есть какие-то временнЫе затраты, в наихудшем случае последовательного выполнения получим 1/N. Если больше 1 - значит не скажу что это значит, все же хочется, чтобы сам кто-то догадался до таких "нелинейных" ситуаций. Bely1) Быстрее у людей - это означает окончить раньше, а не затратить меньше человеко-дней. 2) Работа команды над проектом - она не делится просто на кол-во людей не потому, что кто-то от кого-то будет ждать готовности его модуля, а потому, что появляются дополнительные издержки на взаимодействие (совещания, согласование интерфейсов, стыковка). С одним человеком таких проблем меньше - самому с собой договариваться легче. Общие принципы те же самые. У ПМа так или иначе возникает задача, как максимально параллельно выполнять работу. Насчет размытости терминов "ускорение" и "быстрее", пожалуй, соглашусь, надо было сразу договориться об их смысле, приношу свои извинения, если запутал Вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 17:54 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Сергей ВаскецовОбщие принципы те же самые. У ПМа так или иначе возникает задача, как максимально параллельно выполнять работу.Только паралельностью проект не убыстрить, потому что есть еще много чего кроме "распаралелить по максимуму". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2008, 18:20 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Bely Сергей ВаскецовОбщие принципы те же самые. У ПМа так или иначе возникает задача, как максимально параллельно выполнять работу.Только паралельностью проект не убыстрить, потому что есть еще много чего кроме "распаралелить по максимуму". В жизни всякие коммуникации, которые замедляют выполнение проекта при увеличении количества его участников, полностью идентичны ситуациям, когда один вычислительный узел должен синхнонизировать свое состояние с другим(и). Общего в параллельных вычислениях и выполнении проектов намного больше, чем кажется на первый взгляд. Даже нетривиальная мысль, что параллельный алгоритм и схема вычислительных узлов сильно связаны в случае многопроцессорных параллельных вычислений, становится банальной, когда говорится о выполнении проектов. Ведь на конкретный проект набирают конкретных людей в конкретном количестве, исходя из граничных условий (бюджет, сроки, функциональность) и сущности проекта (архитекторы, тестеры и т.п.). Так что аналогий тут полно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2008, 10:46 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Сергей ВаскецовВ жизни всякие коммуникации, которые замедляют выполнение проекта при увеличении количества его участников, полностью идентичны ситуациям, когда один вычислительный узел должен синхнонизировать свое состояние с другим(и). ... Так что аналогий тут полно.Аналогий полно, но при увеличении штата команды в два раза - нет механизма, который расчитал бы сколько издержек уйдет на коммуникации. А без этого - вся точная математика пасует. Для того, чтобы расчитать издержки на взаимодействие - надо ЗНАТЬ где они возникнут. А вот с этим всегда большие проблемы. Составить мат. модель работы команды - это тянет само по себе на диссертацию. Применить к этой модели теорию расписаний - тоже задача не самая простая. При этом, решать задачи "Сколько времени надо на написание программы" - приходится постоянно и всем. И все как-то решают их "на коленках" с переменным успехом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2008, 11:34 |
|
Время затраченое одним и тремя, на сколько примерно отличается?
|
|||
---|---|---|---|
#18+
Belyнет механизма, который расчитал бы сколько издержек уйдет на коммуникации Верно. Фактически, нет идеального алгоритма, одна эвристика. Одно управление рисками чего стОит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2008, 11:38 |
|
|
start [/forum/topic.php?fid=33&msg=35434549&tid=1548743]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
141ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 247ms |
0 / 0 |