В чем преимущество использования распределенного программирования?

Завершено

Различные аналитические методы на уровнях алгоритма и кода могут определять потенциальный параллелизм в последовательных программах1, и, в принципе, каждую последовательную программу можно распараллелить. Затем программу можно разделить на последовательные и параллельные части, как показано на рис. 3. Параллельные части могут выполняться одновременно на одном компьютере либо их можно распределить между несколькими компьютерами. Программисты обычно преобразуют последовательные программы в параллельные версии главным образом для достижения более высокой вычислительной скорости или пропускной способности. В идеале параллелизация последовательной программы в n-вариантную распределенную программу приведет к n-кратному уменьшению времени выполнения. Использование распределенных программ в отличие от последовательных программ имеет решающее значение для множества областей, особенно для науки. Например, имитация свертывания белка может занять годы, если она выполняется последовательно, и всего несколько дней при параллельном выполнении. Скорость научных открытий в некоторых областях зависит от того, насколько быстро могут быть решены определенные научные проблемы. Более того, некоторые программы имеют ограничения в реальном времени, поэтому если вычисления выполняются недостаточно быстро, вся программа может оказаться бессмысленной. Например, прогнозирование направлений ураганов и торнадо с помощью моделирования погодных явлений должно быть своевременным, иначе прогноз окажется напрасным. В действительности ученые и инженеры десятилетиями полагались на распределенные программы для решения важных и сложных научных задач, таких как квантовая механика, физическое моделирование, прогнозирование погоды, разведка нефтяных и газовых месторождений, молекулярное моделирование. Вероятно, эта тенденция сохранится, по крайней мере, в обозримом будущем.

Программа (a) Последовательная программа с последовательными (S1) и параллельными (P1) частями. Программа (б) Параллельная или распределенная программа, соответствующая последовательной программе в (а), когда параллельные части могут быть либо распределены между несколькими компьютерами, либо одновременно выполняться на одном компьютере.

Рис. 3. (a) Последовательная программа с последовательными (S1) и параллельными (P1) частями. (б) Параллельная или распределенная программа, соответствующая последовательной программе в (а), благодаря чему параллельные части могут быть либо распределены по нескольким компьютерам, либо одновременно выполняться на одном компьютере.

Распределенные программы также получили широкое применение за пределами научных областей, например в поисковых системах, на веб-серверах и в базах данных. Одним из примеров является проект Folding@Home, который использует распределенные вычисления на всех типах систем, от супер компьютеров до персональных пк для выполнения моделирования молекулярной динамики белковой динамики. Без параллелизации Folding@Home не сможет получить доступ к такому количеству вычислительных ресурсов. Например, запуск программы Hadoop MapReduce2 на одном экземпляре виртуальной машины не является столь эффективным, как запуск в крупномасштабном кластере экземпляров виртуальных машин. Конечно, быстрое выполнение заданий в облаке приводит к снижению затрат, что является ключевым моментом для пользователей облачных решений.

Распределенные программы также помогают устранять узкие места в подсистеме. Например, стандартными узкими местами с точки зрения пропускной способности и производительности являются такие устройства ввода-вывода, как диски и сетевые адаптеры. Распределяя работу между компьютерами, можно одновременно обрабатывать данные с нескольких дисков и в результате получить увеличенную агрегированную полосу пропускания ввода-вывода, повышенную производительность и максимальную пропускную способность. Таким образом, распределенные программы играют важнейшую роль в быстром решении различных вычислительных проблем и эффективном устранении узких мест, связанных с ресурсами. Это способствует повышению производительности, увеличению пропускной способности и сокращению затрат, особенно в облаке.


Ссылки

  1. Y. Solihin (2009). Fundamentals of Parallel Computer Architecture Solihin Books
  2. Apache Hadoop