Вперед: 1.5. Контрольные вопросы
Назад: 1.4.3. Эффективность параллельных программ
К содержанию: Оглавление


1.4.4. Заключение к главе 1

Итак, в данной главе рассмотрен набор наиболее распространенных средств разработки параллельных программ для многопроцессорных систем. Этот список далеко не исчерпывает все известные на сегодняшний день средства. Достаточно сказать, что на сегодня известно порядка 30 распараллеливающих языков программирования и столько же интерфейсных пакетов для взаимодействия параллельных процессов. Мы ограничились рассмотрением наиболее известных и получивших наибольшее распространение технологий. Рассмотрение носило конспективный характер и для овладения той или иной технологией необходимо обращаться к специальной литературе. Очевидно, что для прикладных программистов наиболее пристальное внимание следует обратить на OpenMP, как на стандарт в программировании для систем с общей памятью, и на MPI, как наиболее универсальное и эффективное средство программирования для систем с распределенной памятью. Этим двум технологиям и будет уделено основное внимание в данном пособии.

Заметим, что программы на MPI не менее эффективно, чем OpenMP программы, могут исполняться и на системах с общей памятью. С этой точки зрения технология MPI является более универсальной. Однако программировать на OpenMP, во-первых, значительно проще, чем с использованием технологии MPI, а, во-вторых, технология OpenMP значительно экономнее расходует оперативную память на системах с общей памятью. В самом деле, для задач, требующих большого объема оперативной памяти, зачастую оказывается, что невозможно запустить такое количество процессов на вычислительной системе, чтобы загрузить работой все вычислительные ядра. В любом случае, следует иметь в виду, что пока еще не создано чудодейственных средств, которые позволяли бы без всяких усилий со стороны пользователя выполнять программу на многопроцессорной (многоядерной) системе быстрее, чем на обычной однопроцессорной.

Вопрос о том, какой прикладной интерфейс - OpenMP или MPI предпочтительнее использовать, определятся в первую очередь архитектурой вычислительной системы, на которой предполагается выполнять программу, и масштабом решаемой задачи. На Рис. 1.6 изображены области применимости той ли иной технологии в зависимости от размера решаемой задачи. Для решения небольших задач вполне достаточно ресурсов обычного однопроцессорного компьютера. Для задач среднего размера наиболее подходящей технологией является OpenMP, которая позволяет эффективно использовать ресурсы компьютеров с 8-мя или 16-ю ядрами. Для решения действительно больших задач не обойтись без использования MPI.

Области применимости технологий программирования

Рис. 1.6. Области применимости технологий программирования.

Еще совсем недавно многопроцессорные системы с общей памятью были малодоступны большинству пользователей. Однако, с появлением многоядерных процессоров, системы с общей памятью стали самым массовыми видом многопроцессорных систем и, видимо, в ближайшее время программирование на OpenMP станет самой востребованной технологией. Дополнительным стимулом для освоения OpenMP является то, что классические системы с распределенной памятью с одним процессором на узле уходят в прошлое, и все более популярными становятся кластеры на базе многоядерных SMP узлов, которые требуют применения обеих технологий для эффективного использования вычислительных ресурсов.



Вперед: 1.5. Контрольные вопросы
Назад: 1.4.3. Эффективность параллельных программ
К содержанию: Оглавление