Предсказать работу программы?
От: PaulMinelly  
Дата: 16.11.08 15:18
Оценка:
Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы? Допустим известно что некая (откомпилированная) программа работает 100 секунд на одном компьютере. Можно ли предсказать сколько эта же самая программа будет работать на другом компьютере? Пусть это будет даже в самых упрощенных условиях, например процессор — одноядерный, программа — однопоточная, винчестер и внешние медленные устройства не использует. Можно ли предсказать время ее работы на другом процессоре, пусть приблизительно, но с разумной погрешностью (100, 200, ну 300%)? Понятно что в общем случае предсказать ничего нельзя и из вредности всегда можно написать такую, которая из-за дополнительных 2 килобайт кеша на проце будет давать время работы на тридцать порядков быстрее, но все же кто-нибудь знает как называется направление таких работ и какие статьи почитать на эту тему прогнозирования — было бы круто.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Предсказать работу программы?
От: Mr.Cat  
Дата: 16.11.08 15:59
Оценка:
Системы реального времени — это из Вашей области?
Re: Предсказать работу программы?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.11.08 16:16
Оценка: +3
Здравствуйте, PaulMinelly, Вы писали:

PM>Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы? Допустим известно что некая (откомпилированная) программа работает 100 секунд на одном компьютере.


Если известен алгоритм, точно известны данные и тем более, известно время работы в каком-то определённом аппаратном окружении, то расчёт времени работы тривиален. Если неизвестны данные — то используются граничные оценки для заданного алгоритма. Если алгоритм неизвестен, то и оценивать нечего.

ИМХО, как-то так. Научное направление тут не воткнёшь. Поправьте меня, если я не прав.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Предсказать работу программы?
От: goto Россия  
Дата: 16.11.08 17:12
Оценка:
Похоже, это не масштабируется даже для однотипных процессоров, работающих на разной частоте. Разве что пропорционально изменять все временные характеристики cpu, cash & ram.

Насчет научного направления не в курсе, но на более-менее популярном уровне можно порыться в окрестности бенчмарков и овеклокинга.
Re: Предсказать работу программы?
От: frogkiller Россия  
Дата: 16.11.08 20:26
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы? Допустим известно что некая (откомпилированная) программа работает 100 секунд на одном компьютере. Можно ли предсказать сколько эта же самая программа будет работать на другом компьютере? Пусть это будет даже в самых упрощенных условиях, например процессор — одноядерный, программа — однопоточная, винчестер и внешние медленные устройства не использует. Можно ли предсказать время ее работы на другом процессоре, пусть приблизительно, но с разумной погрешностью (100, 200, ну 300%)? Понятно что в общем случае предсказать ничего нельзя и из вредности всегда можно написать такую, которая из-за дополнительных 2 килобайт кеша на проце будет давать время работы на тридцать порядков быстрее, но все же кто-нибудь знает как называется направление таких работ и какие статьи почитать на эту тему прогнозирования — было бы круто.


Это, наверное, не в чистом виде, что тебе нужно, но посмотри работы отца и сына Воеводиных на http://parallel.ru/
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re: Предсказать работу программы?
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.11.08 04:29
Оценка: +1 :))) :))
Здравствуйте, PaulMinelly, Вы писали:

PM>Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы?

Астрология?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Предсказать работу программы?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 17.11.08 06:26
Оценка:
(пример)
Вот тут используют более сложный предиктор (предсказывает время выполнения на кластере) на практике, и он даже как-то работает:
http://www.keldysh.ru/dvm/dvmhtm1107/rus/index.html
Возможно, там есть ссылки на исследования..
Re[2]: Предсказать работу программы?
От: PaulMinelly  
Дата: 17.11.08 12:55
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, PaulMinelly, Вы писали:


PM>>Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы? Допустим известно что некая (откомпилированная) программа работает 100 секунд на одном компьютере.


ГВ>Если известен алгоритм, точно известны данные и тем более, известно время работы в каком-то определённом аппаратном окружении, то расчёт времени работы тривиален. Если неизвестны данные — то используются граничные оценки для заданного алгоритма. Если алгоритм неизвестен, то и оценивать нечего.


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

Зная программу и время работы на каждом из входных данных на одном компьютере, можно предсказать как эта же программа будет работать с этими же входными данными но на другом компьютере (процессоре)?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Предсказать работу программы?
От: PaulMinelly  
Дата: 17.11.08 12:55
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>(пример)

DM>Вот тут используют более сложный предиктор (предсказывает время выполнения на кластере) на практике, и он даже как-то работает:
DM>http://www.keldysh.ru/dvm/dvmhtm1107/rus/index.html
DM>Возможно, там есть ссылки на исследования..

Вот это то что надо, но там задача нацелена на коммуникации между узлами кластера. Моя задача несколько проще: есть один узел, программа+входные данные, известно время ее работы на одном узле, надо предсказать время работы на другой архитектуре. Если кто еще знает ссылок на такую же тематику — было бы очень здорово!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Предсказать работу программы?
От: Sinclair Россия https://github.com/evilguest/
Дата: 18.11.08 06:33
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Вот это то что надо, но там задача нацелена на коммуникации между узлами кластера. Моя задача несколько проще: есть один узел, программа+входные данные, известно время ее работы на одном узле, надо предсказать время работы на другой архитектуре. Если кто еще знает ссылок на такую же тематику — было бы очень здорово!

Слишком мало данных. Мало ли, что программа потратила T1 на одном компьютере. Вот мы добавили еще два гига памяти. А программа взяла и не использовала их!
Или взяла и использовала — совершенно невозможно в общем случае это понять.
То же самое касается многоядерности и всех других характеристик.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Предсказать работу программы?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.11.08 06:47
Оценка: :)
Здравствуйте, PaulMinelly, Вы писали:

ГВ>>Если известен алгоритм, точно известны данные и тем более, известно время работы в каком-то определённом аппаратном окружении, то расчёт времени работы тривиален. Если неизвестны данные — то используются граничные оценки для заданного алгоритма. Если алгоритм неизвестен, то и оценивать нечего.


PM>Подход бодрый, но у нас не изваестен алгоритм, у нас дана программа. Программный код, откомпилированный. В нем конечно есть какой-то алгоритм, но мы его не знаем, вернее он нам не интересен.


Свежо!

PM>Еще конечно есть набор входных данных и известно время работы этой откомпилированной программы на каждом из набора входных данных. Вот такие условия.


Бредовые условия. "У нас есть программа, но её алгоритм нам не интересен", зато интересна научная область, занимающаяся предсказанием времени работы неизвестно чего. По звёздам, что-ли?

PM>Зная программу и время работы на каждом из входных данных на одном компьютере, можно предсказать как эта же программа будет работать с этими же входными данными но на другом компьютере (процессоре)?


Нет, нельзя. Влиять может всё, что угодно: например, однопоточная программа не получит почти никаких бенефитов от многоядерного процессора, а программа, активно молотящая по диску определённо мало выиграет от простой замены процессора. И так далее, и тому подобное. Но если внутренности программы вам не интересны, то...

P.S.: Тебе для чего это нужно? Обосновать покупку новых компьютеров? Так подели одни мегагерцы на другие — будет достаточно.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Предсказать работу программы?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.11.08 06:51
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Вот это то что надо, но там задача нацелена на коммуникации между узлами кластера. Моя задача несколько проще: есть один узел, программа+входные данные, известно время ее работы на одном узле, надо предсказать время работы на другой архитектуре. Если кто еще знает ссылок на такую же тематику — было бы очень здорово!


Обрати внимание, там подсчитываются объективные характеристики работы программы (чем-то похоже на профилировщик). Иначе ты никакого прогноза сделать не сможешь.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Предсказать работу программы?
От: chukichuki  
Дата: 18.11.08 07:16
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы? Допустим известно что некая (откомпилированная) программа работает 100 секунд на одном компьютере. Можно ли предсказать сколько эта же самая программа будет работать на другом компьютере? Пусть это будет даже в самых упрощенных условиях, например процессор — одноядерный, программа — однопоточная, винчестер и внешние медленные устройства не использует. Можно ли предсказать время ее работы на другом процессоре, пусть приблизительно, но с разумной погрешностью (100, 200, ну 300%)? Понятно что в общем случае предсказать ничего нельзя и из вредности всегда можно написать такую, которая из-за дополнительных 2 килобайт кеша на проце будет давать время работы на тридцать порядков быстрее, но все же кто-нибудь знает как называется направление таких работ и какие статьи почитать на эту тему прогнозирования — было бы круто.


Этими вопросами занимается теория алгоритмов. Конкретнее надо копать в сторону оценки вычислительной сложности алгоритмов.
Re[4]: Предсказать работу программы?
От: PaulMinelly  
Дата: 18.11.08 11:09
Оценка:
PM>>Зная программу и время работы на каждом из входных данных на одном компьютере, можно предсказать как эта же программа будет работать с этими же входными данными но на другом компьютере (процессоре)?

ГВ>Влиять может всё, что угодно: например, однопоточная программа не получит почти никаких бенефитов от многоядерного процессора, а программа, активно молотящая по диску определённо мало выиграет от простой замены процессора. И так далее, и тому подобное. Но если внутренности программы вам не интересны, то...


Ты не торопись, я же для тебя специально написал что программа однопоточная, по диску она не молотит. Не молотит по диску (не использует внешних медленных устройств), только проц, память и кеши. Допустим кеши у процов одинаковые. Диск опять таки не используется. Время знаем, входные данные — тоже. Алгоритм одинаково работает на одних и тех же входных данных. Надо предсказать время с разумной погрешностью какой я написал выше в посте. Можно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Предсказать работу программы?
От: PaulMinelly  
Дата: 18.11.08 11:18
Оценка:
Здравствуйте, chukichuki, Вы писали:

C>Здравствуйте, PaulMinelly, Вы писали:


PM>>Заспорили с научруком. Кто-нибудь знает как называется фланг научных направлений, посвященный предсказанию времени работы программы? Допустим известно что некая (откомпилированная) программа работает 100 секунд на одном компьютере. Можно ли предсказать сколько эта же самая программа будет работать на другом компьютере? Пусть это будет даже в самых упрощенных условиях, например процессор — одноядерный, программа — однопоточная, винчестер и внешние медленные устройства не использует. Можно ли предсказать время ее работы на другом процессоре, пусть приблизительно, но с разумной погрешностью (100, 200, ну 300%)? Понятно что в общем случае предсказать ничего нельзя и из вредности всегда можно написать такую, которая из-за дополнительных 2 килобайт кеша на проце будет давать время работы на тридцать порядков быстрее, но все же кто-нибудь знает как называется направление таких работ и какие статьи почитать на эту тему прогнозирования — было бы круто.


C>Этими вопросами занимается теория алгоритмов. Конкретнее надо копать в сторону оценки вычислительной сложности алгоритмов.


Алгоритма-то нет. Есть откомпилированная программа и время ее работы на входных данных известно. Сколько она будет работать на тех же данных на другом проце. Вот такая постановка тут.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Предсказать работу программы?
От: chukichuki  
Дата: 18.11.08 11:28
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

C>>Этими вопросами занимается теория алгоритмов. Конкретнее надо копать в сторону оценки вычислительной сложности алгоритмов.


PM>Алгоритма-то нет. Есть откомпилированная программа и время ее работы на входных данных известно. Сколько она будет работать на тех же данных на другом проце. Вот такая постановка тут.


А откомпилированная программа алгоритм в себе не содержит ? Другое дело, если нету и откомпилированной программы, а есть только данные о том сколько времени она выполнялась на таком-то процессоре, на таких-то исходных данных. В принципе, основываясь на статистических данных (на каких-нибудь тестах производительности процессоров), можно приблизительно предсказать сколько она будет выполняться на тех же исходных данных на другом процессоре. Разумеется всякий изврат, типа оптимизации под конкретную архитектуру так не учтешь.
Re[4]: Предсказать работу программы?
От: PaulMinelly  
Дата: 18.11.08 11:49
Оценка:
Здравствуйте, chukichuki, Вы писали:

C>Здравствуйте, PaulMinelly, Вы писали:


C>>>Этими вопросами занимается теория алгоритмов. Конкретнее надо копать в сторону оценки вычислительной сложности алгоритмов.


PM>>Алгоритма-то нет. Есть откомпилированная программа и время ее работы на входных данных известно. Сколько она будет работать на тех же данных на другом проце. Вот такая постановка тут.


C>А откомпилированная программа алгоритм в себе не содержит ?

Речь не об этом, речь о том что программа уже откомпилирована — какой в ней алогоритм — не разберешь. И рост этого алгоритма не интересен, по одной простой причине. Количество входных данных ограничено и на каждый из этих данных уже известно время работы этой программы на процессоре. Все. Рост тут не нужен и сложность алгоритма тоже, потому что у нас нет N неизвестной. У нас весь набор данных — фиксирован и время на каждом из экземпляре данных уже известно. (если и могут быть другие данные — то они нам не интересны ну или путь будут не интересны иначе задача совсем сложная).

C>Другое дело, если нету и откомпилированной программы, а есть только данные о том сколько времени она выполнялась на таком-то процессоре, на таких-то исходных данных.

Сейчас по понятнее опишу, может не понятно сказал что программа у нас откомпилированная уже. Так вот. У нас программа откомпилированная есть. По всем набору фиксированных входных данных известно время ее работы. Надо определить сколько она будет работать на другом компе. Вот такой сказ.
C> В принципе, основываясь на статистических данных (на каких-нибудь тестах производительности процессоров), можно приблизительно предсказать сколько она будет выполняться на тех же исходных данных на другом процессоре. Разумеется всякий изврат, типа оптимизации под конкретную архитектуру так не учтешь.

Вот это уже интересней.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Предсказать работу программы?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.11.08 12:01
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Ты не торопись, я же для тебя специально написал что программа однопоточная, по диску она не молотит. Не молотит по диску (не использует внешних медленных устройств), только проц, память и кеши. Допустим кеши у процов одинаковые. Диск опять таки не используется. Время знаем, входные данные — тоже. Алгоритм одинаково работает на одних и тех же входных данных.


Ну это несколько меняет дело. То есть что-то вы про алгоритм всё же знаете.

PM>Надо предсказать время с разумной погрешностью какой я написал выше в посте. Можно?


В данном случае я бы просто поделил одни мегагерцы на другие, чтобы прикинуть примерный выигрыш. Какие на какие делить, думаю, понятно — если программа однопоточная, а процессор многоядерный, то нужно брать частоту одного ядра. Ещё имеет смысл почитать документацию производителя процессора, обратить внимание на настройки периферии на материнской плате (частоты шин процессора, памяти, кэшей и т.п.)

Как-то так.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Предсказать работу программы?
От: Gaperton http://gaperton.livejournal.com
Дата: 20.11.08 06:43
Оценка: +1 :)
Здравствуйте, PaulMinelly, Вы писали:

PM>Зная программу и время работы на каждом из входных данных на одном компьютере, можно предсказать как эта же программа будет работать с этими же входными данными но на другом компьютере (процессоре)?


Можно. Время увеличится пропорционально разнице результатов известных тестов на этих процессорах. Скажем, на embedded процах популярен простой тест dmips, а на взрослых — SPEC .

А вы, простите, чего хотели? Научную школу?
Re: IMHO, алгорифмомантия... :) (-)
От: Erop Россия  
Дата: 20.11.08 07:20
Оценка:
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Введение в алгорифмомантию...
От: Erop Россия  
Дата: 20.11.08 07:30
Оценка:
Я бы читал литературу по архитектурам и по оптимизации под них. Ещё по бенчмаркам можно

Потом бы разработал бы тормозов модель для каждой архитектуры.
Ну типа там есть такая-то "крейсерская" производительность на типичной задаче такого-то типа. Есть пиковая.
Чтобы достичь пиковой прога должна продемонстрировать какие-то скилы в этом вопросе (ну, например, правильно использовать объёмы кэшей, ровно загружать ядра и т. п.)
Кроме того, на архитектурах обычно бывают всякие узкие места, которые могут вызвать деградацию производительности по сравнению с "крейсерской".

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

Ну а после этого уже можно перейти к гаданиям и экспертным оценкам
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Предсказать работу программы?
От: chukichuki  
Дата: 20.11.08 08:36
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Речь не об этом, речь о том что программа уже откомпилирована — какой в ней алогоритм — не разберешь.


Кстати, если все входные данные априори известны, то по известному алгоритму (данному пусть даже в уже скомпилированном виде) можно восстановить последовательность машинных операций, возникающих при выполнении программы над конкретным набором исходных данных. Такое обычно называется трассой или историей выполнения программы. Тогда задача трансформируется в следующую: есть трасса выполнения программы на заданных исходных данных, надо определить сколько времени займет выполнение этой трассы на нужном процессоре, при заданных временных характеристиках его работы. В такой постановке задача действительно становится гораздо интереснее. Можно достаточно полно учесть архитектурные особенности процессора : влияние всяких разных нелинейностей -- кешей, конвееров, скорости выполнения команд разных типов и прочее.

C>>Другое дело, если нету и откомпилированной программы, а есть только данные о том сколько времени она выполнялась на таком-то процессоре, на таких-то исходных данных.

PM>Сейчас по понятнее опишу, может не понятно сказал что программа у нас откомпилированная уже. Так вот. У нас программа откомпилированная есть. По всем набору фиксированных входных данных известно время ее работы. Надо определить сколько она будет работать на другом компе. Вот такой сказ.

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

C>> В принципе, основываясь на статистических данных (на каких-нибудь тестах производительности процессоров), можно приблизительно предсказать сколько она будет выполняться на тех же исходных данных на другом процессоре. Разумеется всякий изврат, типа оптимизации под конкретную архитектуру так не учтешь.

PM>Вот это уже интересней.

А че тут интересного то ? Прогноз будет достаточно ущербен. Примерно по такой формуле

T_новое = K_п * T_старое,

где
Т_старое -- известное время выполнение программы на одном процессоре,
T_новое -- искомое время выполнения на другом процессоре,
K_п -- усредненный коэффициент "крутости" одного процессора перед другим.

Это интересно ?
Re[6]: Предсказать работу программы?
От: PaulMinelly  
Дата: 20.11.08 13:18
Оценка:
C>Кстати, если все входные данные априори известны, то по известному алгоритму (данному пусть даже в уже скомпилированном виде) можно восстановить последовательность машинных операций, возникающих при выполнении программы над конкретным набором исходных данных. Такое обычно называется трассой или историей выполнения программы.

Классная идея. Как только залезть во внутренности программы и посмотреть:
статистику использования памяти (в идеале чтения, записи)
статистику использования кеша
ну и еще что-нибудь. Думаю этого уже достаточно (если считать что не используются внешние устройства ввода-вывода).

C>Если во внутренности твоей программы "залезть" нельзя, то с позиции твоей задачи можно смело считать что программы у тебя нету совсем.


Откомпилированная программа есть — можно делать с ней что угодно, мерять ее как угодно, запускать во врапперах, виртуальных машинах и т.п. Нет только исходного кода этой программы. Есть только откомпилированный бинарник.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Предсказать работу программы?
От: PaulMinelly  
Дата: 20.11.08 13:18
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Здравствуйте, PaulMinelly, Вы писали:


PM>>Зная программу и время работы на каждом из входных данных на одном компьютере, можно предсказать как эта же программа будет работать с этими же входными данными но на другом компьютере (процессоре)?


G>Можно. Время увеличится пропорционально разнице результатов известных тестов на этих процессорах. Скажем, на embedded процах популярен простой тест dmips, а на взрослых — SPEC .


Спасибо за идею. Если бы еще подсказали пару разных тестов посмотреть — было бы здорово!
На днях померил — получилось что разные проги дают разный прирост на другом проце. Поэтому набор тестов хотя бы 6 — было бы здорово.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Введение в алгорифмомантию...
От: PaulMinelly  
Дата: 20.11.08 13:18
Оценка:
Здравствуйте, Erop, Вы писали:

E>Я бы читал литературу по архитектурам и по оптимизации под них. Ещё по бенчмаркам можно


E>Потом бы разработал бы тормозов модель для каждой архитектуры.

E>Ну типа там есть такая-то "крейсерская" производительность на типичной задаче такого-то типа. Есть пиковая.
E>Чтобы достичь пиковой прога должна продемонстрировать какие-то скилы в этом вопросе (ну, например, правильно использовать объёмы кэшей, ровно загружать ядра и т. п.)
E>Кроме того, на архитектурах обычно бывают всякие узкие места, которые могут вызвать деградацию производительности по сравнению с "крейсерской".

Это идея хорошая. Проблема одна только — как узнать насколько она использует объемы кешей? А если узнать как много данных она пишет-читает из оперативной памяти — было бы вообще круто. Но как это сделать? (не общий объем занимаемой оперативной памяти, а интенсивность использования такой памяти, т.е. занять может всего 512 килобайт, зато писать-читать оттуда очень часто)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Предсказать работу программы?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.11.08 18:34
Оценка: +1
Здравствуйте, PaulMinelly, Вы писали:

PM>На днях померил — получилось что разные проги дают разный прирост на другом проце.


Именно так и должно быть.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Введение в алгорифмомантию...
От: Erop Россия  
Дата: 20.11.08 21:41
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Это идея хорошая. Проблема одна только — как узнать насколько она использует объемы кешей? А если узнать как много данных она пишет-читает из оперативной памяти — было бы вообще круто. Но как это сделать? (не общий объем занимаемой оперативной памяти, а интенсивность использования такой памяти, т.е. занять может всего 512 килобайт, зато писать-читать оттуда очень часто)


Ну, например, под ве-тюном погонять.
Если у тебя есть бесконечный бюджет, то можно написать эмулятор проца и погонять прогу на нём...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Предсказать работу программы?
От: oziro Нигерия  
Дата: 21.11.08 02:10
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>кто-нибудь знает как называется направление таких работ и какие статьи почитать на эту тему прогнозирования — было бы круто.


На самом деле проведены глубокие исследования. Накоплена колоссальная статистика. С учетом просто невероятного количества параметров. И эти исследования имеют большое практическое значение.

http://overclockers.ru/
http://www.ixbt.com/
http://www.xtremesystems.org/forums/

Я имею ввиду тесты всякого разного железа.
Re[5]: Предсказать работу программы?
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 07:43
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

G>>Можно. Время увеличится пропорционально разнице результатов известных тестов на этих процессорах. Скажем, на embedded процах популярен простой тест dmips, а на взрослых — SPEC .


PM>Спасибо за идею. Если бы еще подсказали пару разных тестов посмотреть — было бы здорово!

PM>На днях померил — получилось что разные проги дают разный прирост на другом проце. Поэтому набор тестов хотя бы 6 — было бы здорово.

Дык. Дык! Архитектуры-то разные у процов. Влияет очень много чего. В целом, если упрощенно, есть две составляющих.
1) Латентность и производительность подсистемы памяти. Имеет значение ширина канала в память, латентность обращения в память, размер кэша.
2) Исполнительный конвейр проца. Допустим, у вас на тесте 100% попадания в кэш. В этом случае, на скорость влияет качество механизма предсказания ветвлений, размер буфера переупорядочивания, наличие в архитектуре байпасов, и пр, и пр, и пр. Все это сведется к среднему количеству _полезных_ инструкций (то есть арифметики) на такт — это и есть характеристика архитектуры, однако и она плавает от программы к программе.

Тем не менее, вы можете измерить все эти вещи пораздельности отдельными тестами. Скажем, характеристики подсистемы памяти померять довольно просто. Также, несложно написать микротесты, которые работают на кэше, и замеряют качество конвейра.

Тесты я уже назвал — dmips это Drystone MIPS, простейший и самый популярный тест, которым оценивают производительность микроконтроллеров. Есть несколько embedded benchmark, которые более слодны, и состоят из реальных типичных задач.

Для больших компов ничего лучше тестов SPEC человечество не придумало.
Re[7]: Предсказать работу программы?
От: chukichuki  
Дата: 23.11.08 20:41
Оценка:
Здравствуйте, PaulMinelly, Вы писали:

PM>Классная идея. Как только залезть во внутренности программы и посмотреть:

PM>статистику использования памяти (в идеале чтения, записи)
PM>статистику использования кеша
PM>ну и еще что-нибудь. Думаю этого уже достаточно (если считать что не используются внешние устройства ввода-вывода).

Надо запустить программу на выполнение на виртуальной машине с известными исходными данными и зафиксировать последовательность передачи управления между машинными командами. Также можно дополнительно фиксировать "аргументы" машинных команд: значения регистров, ячеек памяти и т.д. По такой информации можно определить к каким фрагментам памяти и в каком порядке происходило обращение в процессе выполнения. Причем это будет даже не статистика использования памяти, а точная последовательность операций над памятью для выполнения программы на заданном наборе исходных данных. Зная последовательность выполнения машинных команд, можно промоделировать работу программы на любом процессоре (работающего в той же системе команд). В том числе учесть работу работу кеша. Причем тут также речь идет не о статистике, а о точном предсказании работы кеша процессора. Разумеется это все на заданном наборе исходных данных.
Re[6]: Предсказать работу программы?
От: PaulMinelly  
Дата: 25.11.08 10:40
Оценка:
Здравствуйте, Gaperton, Вы писали:
G>Тесты я уже назвал — dmips это Drystone MIPS, простейший и самый популярный тест, которым оценивают производительность микроконтроллеров. Есть несколько embedded benchmark, которые более слодны, и состоят из реальных типичных задач.

G>Для больших компов ничего лучше тестов SPEC человечество не придумало.


Можно ссылку где SPEC и embedded benchmark скачать, а то гугл выдает консорциум, а где сами тесты — не понятно сразу. Спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Предсказать работу программы?
От: PaulMinelly  
Дата: 25.11.08 10:53
Оценка:
PM>>Спасибо за идею. Если бы еще подсказали пару разных тестов посмотреть — было бы здорово!
PM>>На днях померил — получилось что разные проги дают разный прирост на другом проце. Поэтому набор тестов хотя бы 6 — было бы здорово.

G>Дык. Дык! Архитектуры-то разные у процов. Влияет очень много чего. В целом, если упрощенно, есть две составляющих.

G>1) Латентность и производительность подсистемы памяти. Имеет значение ширина канала в память, латентность обращения в память, размер кэша.

Можно ли узнать объем свободного места в кеше, управлять им, например сделать чтобы программа работала только в кеше (например, поместить массив только в кеш и делать с них какие-либо операции?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.