Читаем Параллельное и распределенное программирование на С++ полностью

Система PVM поддерживает модели MIMD (Multiple-Instruction, Multiple-Data— множество потоков команд, множество потоков данных) и SPMD (Single-Program, Multiple-Data — одна программа, множество потоков данных) параллелизма. В действительности SPMD — это вариант модели SIMD (Single-Instruction, Multiple-Data — один поток команд, множество потоков данных). Эти модели разбивают программы на потоки команд и данных. В модели MIMD программа состоит из нескольких параллельно выполняющихся потоков команд, причем каждому из них соответствует собственный локальный поток данных. По сути, каждый процессор здесь имеет собственную память. В PVM-среде модель MIMD считается моделью с распределенной памятью (в отличие от модели с общей памятью). В моделях с общей памятью все процессоры «видят» одни и те же ячейки памяти. В модели с распределенной памятью связь между хранимыми в ней значениями обеспечивается посредством механизма передачи сообщений. Однако модель SPMD подразумевает наличие одной программы (одного набора команд), которая параллельно выполняется на нескольких компьютерах, причем эти одинаковые на всех машинах программы обрабатывают различные потоки данных. PVM-среда поддерживает как MIMD-, так и SIMD-модели или их сочетание. Четыре классические модели параллелизма показаны на рис. 6.1.

Обратите внимание на то, что модели SISD и MISD (см. рис.6.1) неприменимы к системе PVM. Модель SISD описывает однопроцессорную машину, а для модели MISD вооб щ е трудно найти практическое применение. Две остальные модели, которые можно использовать с системой PVM, определяют, как С++-программа взаимодействует с компьютерами. Разработчик ПО представляет один логический виртуальный компьютер как среду для выполнения нескольких различных параллельных задач, каждая из которых получает доступ к собственным данным, либо одной задачи, выполняющейся в виде набора параллельных клонов, получаю щ их доступ к различным областям данных. Таким образом, с PVM-задачами мы будет связывать только модели, предполагаю щ ие наличие множества потоков команд и одной програм м ы.

<p>Библиотека PVM для языка С++ </p>

К функциональным возможностям PVM из С++-программы можно получить доступ с помо щ ью коллекции библиотечных процедур, предоставляемых средой PVM. Эти функции и процедуры PVM обычно делят на семь категорий.

• Управление процессами.

• Упаковка сооб щ ений и их отправка.

• Распаковка сооб щ ений и их прием.

• Обмен задач сигналами.

• Управление буферо м сооб щ ений.

• Функции обработки инфор м ации и служебные процедуры.

• Групповые операции.

Эти библиотечные функции легко интегрировать в С++ среду. Префикс pvm_ в имени каждой функции позволяет не забыть о ее принадлежности соответствующему пространству имен. Для использования PVM-функций необходимо включить в программу заголовочный файл pvm3 . h и скомпоновать ее с библиотекой libpvm. В программах 6.1 и 6.2 демонстрируется, как работает простая PVM-программа. Инструкции по компиляции и выполнению программы 6.1 приведены в разделе «Профиль програ мм ы 6.1».

// Программа 6.1

#include «pvm3.h» #include #include

int main(int argc,char *argv[]) {

int RetCode,MessageId;

int PTid, Tid;

char Message[100j;

float Result[l];

PTid = pvm_mytid();

RetCode = pvm_spawn(«program6-2»,NULL,0,''",l,&Tid);

if(RetCode == 1){

MessageId = 1;

strcpy(Message,«22»);

pvm_initsend(PvmDataDefault);

pvm_pkstr(Message);

pvm_send(Tid,MessageId);

pvm_recv(Tid,MessageId);

pvm_upkfloat(Result,1,1);

cout « Result[0] « endl;

pvm_exit();

return(0) ;

}

else{

cerr << «Задачу породить невозможно. " « endl;

pvm_exit();

return(1) ;

}

}

Профиль программы 6.1

Имя программы |program6 -1.cc

Описание |Использует функцию pvn_send{) для пересылки числа в другую PVM-задачу, которая выполняется параллельно с данной (программа6.2), и функцию pvm_recv() для получения числа от этой задачи.

Требуемая библиотека libpvm3

Требуемые заголовки

Инструкции по компиляции и компоновке программ

gcс++ -о program6-l -I $PVM_ROOT/include -L $PVM_ROOT/lib/ | SPVM_ARCH -1 pvm3

*Среда для тестирования

Solaris8,PVM 3.4.3, SuSE Linux 7.1, gcc 2.95.2.

Инструкции по выполнению ./program6-l

Примечания Необходимо запустить на выполнение программу pvmd.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных