Резюме

Распре д еленное программирование включает программы, которые выполняются в различных процессах. Все процессы потенциально разме щ аются на различных компьютерах и, воз м ожно, в различных сетях с различны м и сетевы м и протокола м и. Мето д ы распре д еленного програ мм ирования позволяют разработчику раз д елить приложение на от д ельно выполняе м ые модули , отношения между которы м и м ожно определить на основе равноправия или как «изготовитель-потребитель». Каж д ый м о-луль имеет собственное а д ресное пространство и ко м пьютерные ресурсы. Распределенное програ мм ирование позволяет использовать преи м у щ ества специальных процессоров, периферийного оборудования и других ко м пьютерных ресурсов (например, серверов баз данных, приложений, почтовых серверов и т.д.). CORBA — это стандарт, применяемый для распре д еленного объектно-ориентированного программирования. В этой главе расс м атриваются только CORBA — спецификации и CORBA-службы. Здесь вы должны были получить представление об этих базовых компонентах ио том, как можно построить простую распределенную программу. CORBA-спецификации для Web-служб, MAF, службы имен можно получить по адресу: www.omg.org . За подробностями можно обратиться к книге [20]. Именные и маклерские графы обеспечивают основу для мо щ ного распределенного механизма представления знаний, который можно использовать в сочетании с мультиагентным програ м мированием. Они создают основу для следую щ его уровня интеллектуальных Web-служб.

Реализация моделей SPMD и MPMD с помощью шаблонов и MPI-программирования

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

Роджер Пенроуз (Roger Penrose), The Emperor's New Mind

Понятие параметризованного программирования поддерживается шаблонами. Основная идея параметризованного программирования — обеспечить максимально благоприятные условия для многократного использования ПО путем реализации его проектов в максимально возможной общей форме. Шаблоны функций поддерживают обобщенные абстракции процедур, а шаблоны классов — обобщенные абстракции данных. Обычно компьютерные программы уже представляют собой обобщенные решения некоторых конкретных проблем. Программа, которая суммирует два числа, обычно рассчитана на сложение любыхдвух чисел. Но если программа выполняет только операцию сложения, ее можно обобщить, «научив» выполнять идругие операции над двумя любыми числами. Если мы хотим получить самую общую программу, можем ли мы остановиться лишь на выполнении различных операций над двумя числами? А что если эти числа будут иметь различные типы, т.е. комплексные и вещественные? Можно заложить в разработку программы выполнение различных операций не только над любыми двумя числами, но и над значениями различных типов или классов чисел (например, значениями типа int, float, double или комплексными). Кроме того, мы хотели бы, чтобы наша программа выполняла любую бинарную операцию на любой паре чисел — главное, чтобы эта операция была легальна для этих двух чисел. Если мы реализуем такую программу, ее возможности в плане многократного использования будут просто грандиозными. Эту возможность С++- программисту предоставляют шаблоны функций и классов. Такого вида обобщения можно добиться с помощью параметризованного программирования.

Парадигма параметризованного программирования, полдерживаемал средствами С++, в сочетании с объектноориентированной парадигмой, также поддерживаемой средствами С++, обеспечивают уникальный подход к MPI-программированию. Как упоминалось в главе 1, MPI (Message Passing Interface — интерфейс передачи сооб щ ений) — это стандарт средств коммуникации, используемых при реализации программ, требующих параллелизма. MPI-интерфейс реализуется как коллекция, состоя щ ал более чем из 300 функций. МРI-функции охватывают большой диапазон: от порождения задач до барьер н ой синхронизации операций установки. Существует также С++-представление для MPI-функций, которые инкапсулируют функциональность MPI-интерфейса в наборе классов. Однако в библиотеке MPI не используются многие преимущества объектно ориентированной парадигмы. Преимуществ парамегризованного программирования в ней также нет. Поэтому, несмогря на то что MPI-интерфейс весьма важен как стандарт, его «мощности» не позволяют упростить параллельное программирование. Да, он действительно освобождает программиста от программирования сокетов и позволяет избежать многих ловушек сетевого программирования. Но этого недостаточно. Здесь может пригодиться кластерное программирование, а также програ мм ирование SMP-и МРР-приложений. Шаблонные и объектно-ориентированные средства программирования С++ могут оказаться весьма полезными для достижения этой цели. В этой главе для упрощения базовых SPMD- и MPMD-подходов вместе с МРI-программированием мы используем шаблоны и методы объектно- ориентированного программирования.

Декомпозиция работ для MPI-интерфейса

Одним из преимуществ использования MPI-интерфейса перед традиционными UNIX/Linux-процессами и сокетами является способность MPI-среды запускать одновременно несколько выполняемых файлов. MPI- реализация может запустить несколько выполняемых файлов, установить между ними базовые отношения и идентифицировать каждый выполняемый файл. В этой книге мы используем MPICH-реализацию MPI- интерфейса [17]1. При выполнении команды $ mpirun -np 16 /tmp/mpi_example1 будет запущено 16 процессов. Каждый процесс будет выполнять программу с именем mpi_example1. Все процессы могут использовать разные доступные процессоры. Кроме того, каждый процесс может выполняться на отдельном компьютере, если MPI работает в среде кластерного типа. Процессы при этом будут выполняться параллельно. Команда mpirun представляет собой основной сценарий, который отвечает за запуск MPI-заданий на необходимом количестве процессоров. Этот сценарий изолирует пользователя от подробностей запуска параллельных процессов на различных компьютерах. Здесь будет запущено 16 копий программы mpi_examplel. Несмотря на то что стандарт MPI-2 определяет функции порождения, которые можно использовать для динамического добавления программ к выполняемому MPI- приложению, этот метод не популярен. В общем случае необходимое количество процессов создается при запуске MPI-приложения. Следовательно, во время старта этот код тиражируется N раз. Описаннал схема легко поддерживает модель параллелизма SPMD (SIMD), поскольку одна и та же программа запускается одновременно на нескольких процессорах. Данные, с которыми каждой программе нужно работать,

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату