| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > вопрос по параллельным вычислениям |
| Автор: motorway 22.10.2009, 17:26 |
| Допустим, есть какая-то задача, которую можно распараллелить на несколько компьютеров. В каких случаях это обычно делают? Если время вычисления одной части задачи составляет порядка 1 сек или меньше, то есть ли смысл это распараллеливать? Например, на 1 процессоре считается за 0,1 сек, а на нескольких - за 0,02 сек. Вроде и так довольно быстро, и преимущества в скорости будут заметны только при большом числе таких задач. |
| Автор: nworm 22.10.2009, 21:40 |
| на практике, когда хотят выигрыш в скорости получить, если есть со скоростью проблемы или есть простая и притягательная возможность распараллелить и посмотреть что получится (например, так уже кто-то делал в похожих задачах). а для исследований самого распараллеливания вполне разумно вначале короткие задачи смотреть, а затем на большие переходить. |
| Автор: Фантом 22.10.2009, 23:58 |
| Тут, как и во всех подобных случаях, нужно оценивать соотношение "цена-производительность". Понятно, что экономить доли секунды с помощью распараллеливания бессмысленно (разве что в учебных целях)... но если эта программа будет использоваться не один раз, а миллион, то экономия времени будет весьма ощутимой. Более конкретного ответа, пожалуй, просто нет. В первую очередь потому, что в разных областях время самого программиста стоит по-разному - где-то оно намного дороже времени компьютеров и пользователей, где-то - намного дешевле. |
| Автор: aggressorus 23.10.2009, 21:38 |
| Есть формулы ускорения и эффективность распараллеливания задач. По этим формулам можно посчитать теоретическое ускорения выполнения параллельной задачи от последовательной, например http://iproc.ru/parallel-programming/lection-3/. На практике всегда работает. Всё зависит от архитектуры системы и скорости передачи данных. Тут надо считать и потом уже реализовывать. |