При желании мы можем воспользоваться преиму щ ествами конкрет н ых ресурсов конкретных компьютеров или же «положиться на судьбу» в виде «заказа» произвольных безымянных компьютеров. Мы можем также назначить рааличные виды работ различным задачам одновременно. На рис. 6.5 компьютер А представляет собой компьютер с массовым параллелизмом (МП-компьютер), а компьютер В осна щ ен некоторым количеством специализированных математических процессоров. Также отметьте, что PVM-среда в данном случае состоит из таких компьютеров, как PowerPCs, Spares, Crays и т.д. В одних случалх можно не беспокоиться о конкретных возможностях компьютеров в PVM-среде, а в дру г их требуется иной подход. Использование функции pvm_spawn () позволяет С++-программисту не указывать конкретный компьютер для решения задачи, когда это не важно. Но если вам известно, что компьютер осна щ ен специализированными средствами, то их можно эффективно использовать, определив соответствую щ ий параметр при вызове функции pvm_spawn ().
Рис. 6.5. Неко т орые вариан т ы модели MPMD дос т упны для реализации благодаря использованию среды PVM
§ 6.1.Обозначение сочетаний
Предположим, м ы хотели бы набрать команду програм м истов (в количестве восьми человек) из 24 кандидатов. Сколько различных ко м анд из восьми программистов можно было бы составить из этого числа кандидатов? Один из результатов, который следует из основного закона комбинаторики, говорит о том, что су щ ествуе т 735 471 различных команд, состоя щ их из восьми программистов, которые мот быть выбраны из 24 кандидатов. Обозначение C(n,r) читается как сочетание из n элементов по г(и означает количество ко м бинаций из n эле м ентов по r). Сочетание C(n,r) вычисляется по формуле:
6.3. Базовые меха н измы PVM 233
n\
r\(n-r)\
Если у нас есть м н ожество, которое представляет сочетания, например {a,b,C},то считается, что оно совпадает с множеством {b,a,c}или {c,b,a}.Другими словами, нас интересует не порядок членов в этом множестве, а сами члены. Многие параллельные програМхМЫ, а именно программы, использую щ ие алгоритмы поиска, эвристические методы и средства искусственного интеллекта, обрабатывают огромные множества сочетаний и их близких родственников перестановок.
Среда PVM состоит из двух компонентов: PVM-демона (pvmd) и библиотеки pvmd. Один PVM-демон pvmd выполняется на каждом компьютере в виртуальной машине. Этот демон служит в качестве маршрутизатора сооб щ ений и контроллера. Каждый демон pvmd управляет списком PVM-задач на своем компьютере. Демон управляет процессами, выполняет минимальную аутентификацию и отвечает за отказоустойчивость. Обычно первый демон запускается вручную. Затем он запускает другие демоны. Только исходный демон может запускать дополнительные демоны. И только исходный демон может безусловно остановить другой демон.
Библиотека pvmd состоит из функций, которые позволяют одной PVM-задаче взаимодействовать с другими. Эта библиотека также включает функции, которые позволяют PVM-задаче связываться со своим демоном pvmd. Базовал архитектура PVM-среды показана на рис. 6.6.
РУМтреда состоит из нескольких PVM-задач. Каждал задача должна содержать один или несколько буферов отправки сооб щ ений, но в каждый момент времени активным может быть только один буфер (он называется активным буфером отправки сообщений). Каждая задача имеет активный буфер приема сооб щ ений. Обратите внимание (см. рис. 6.6) на то, что взаимодействие между PVM-задачами реально выполняется с использованием ТСР-сокетов. Функции pvm_send () делают доступ к сокетам прозрачным. Протраммист не получает доступа к функциям ТСРчюкетов напрямую. На рис. 6.6 также показано взаимодействие PVM-задач со своими демонами pvmd с помо щ ью TCP-сокетов и взаимодействие между самими демонами с помо щ ью UDP-сокетов. И снова-таки, обра щ ения к сокетам выполняются посредством PVM-функций. Програ мм ист не должен заниматься программированием сокетов на низком уровне. PVM-функции, которые используются в этой книге, делятся на четыре следующие категории:
• управление процессами;
• упаковка сооб щ ений и их отправка;
• распаковка сооб щ ений и их получение;
Читать дальше