русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

MPI: назначение и организация пакета MPI, принципы построения программ для MPI. Классификация функций MPI. Функции MPI_BCAST, MPI_BARRIER, MPI_GATHER, MPI_SCATTER.


Дата добавления: 2015-06-12; просмотров: 1989; Нарушение авторских прав


Ранее было установлено: при создании кластера используется стандартные описания средства, сетевые решения и популярные арифметические системы. Таким образом, возникает вопрос о том, что же превращает обычную ЛС в кластер. Этот эффект достигается благодаря использованию ПС, которое осуществляет распространение процессов и подпроцессов между вычислительными узлами, а такие обмены данными и сообщениям между процессами. Кроме того, подобные программы должны обеспечивать пользователя независимостью решения его задач. Относительно архитектурных особенностей кластерной системы, особенностей аппаратного обеспечения, особенностей ОС, количества имеющихся реальных процессорных элементов. В качестве такой программы может использоваться реализация MPI:

MPI (message passing interface)

В настоящее время MPI реализуется стандартами: 1) MPI 1.0 2) MPI 2.0

Эти стандарты реализуются несколькими программными средствами: 1) MPIСМ 2)LAM 3)MPVM

Общая структура взаимодействия программных и аппаратных средств:

Пар приложения
Стандарт MPI
Средства ОС, сетевое ПО, сетевая файловая система
Аппаратное обеспечение

MPI фактически представляет собой технологию программирования, которая предоставляет пользователю набор функция для разработки параллельных программ.

В состав пакета, реализующего MPI, в min варианте входят: 1)библиотека программирования 2)загрузка приложений.

В соответствии с технологией MPI, параллельное приложение состоит из независимых ветвей или процессов.

Сообщения имеют атрибуты. Для хранения этих атрибутов создается структура MPI_states имеющая след-е ос-е поля:

MPI_sourse – код процесса – отправителя

MPI_tag _№ сообщения

MPI_error – код ошибки

Основные функции MPI все идентификаторы, объявленные в самом начале MPI, начинаются с префикса MPI_. Таким образом, чтобы в прикладных программах не возникли дополнительные ошибки, пользовательские идентификаторы не должны начинаться с этого префикса.



Об успешности выполнения той или иной функции MPI можно судить по возвращаемому ей цело численному значению. В случае успеха все функции MPI возвращают код, который мнемонически обозначается как MPI_SUCCESS. Во всех остальных случаях – код ошибки.

Функции MPI можно разделить на группы в соответствии со следующими критериями: 1)критерий блокирования 2)критерий локальности 3)критерий коллективности

В соответствии с 1) функции делятся на блокирующие и не блокирующие. Блокирующая функция возвращает управление только после полного завершения их выполнения. Не блокирующая функция возвращает управление немедленно после своего вызова, выполняется в фоновом режиме, а за их завершением необходимо дополнительно проследить

Критерий 2)подразделяет ф-ю на те, которые позволяют рассылке данных др-м ветвям и те, которые этого не делают.

В соответствии с 3) коллективными считаются функции, которые выполняются всеми процессами, подключаемыми к заданной области связи с одним и теми же номером коммуникатора заданного в качестве аргумента функции:

Int MPI_init (int arge,char*argv);

Функция является первой функцией, с которой начинается работа параллельной программы и которая выполняется инициализацию рабочей части приложения. Инициализация MPI производится только один раз в течении выполнения программы. Попытка повторной инициализации вызывает ошибку. Обращение к функции MPI возможно только после выполнения инициализации.

Функции: int MPI_Barrier (MPI_Comm comm);

Функция реализует механизм барьерной синхронизации, все процессы, выполняющие данную функцию, будут его задерживать до тех пор, пока MPI_Barrier не будет выполнена всеми вызывающими ее процессами.

Int MPI_Bcast (void*buf,

Int count,

MPI_Datatype datatype,

Int source;

MPI_Comm comm.);

Buf-адрес канала буфера приема сообщения

Count – число переданных элементов сообщения

Datatype – тип элементов сообщения

Source – номер передающего процесса

Comm – идентификатор группы

Разрешается передача сообщения самому себе. Сообщение может иметь нулевую длину. Элементы сообщения могут иметь нулевую длину. Элементы сообщения располагаются друг за другом.

Получи ли адресаты это сообщение - неизвестно, но параметры, переданные заданной функцией, уже можно использовать, и это не будет некорректно. Значение параметров count, datatype, source должны быть одинаковыми у всех процессов.

Int MPI_Scatter (void*sbuf,

Int scount,

MPI_datatypes datatype,

Void*zbuf,

Int zcount,

MPI_datatype *datatype,

Int sourse,

MPI_Comm comm);

 

Sbuf –адрес начала буфера посылки сообщения

scount – число передаваемых элементов сообщения

sdatatypes – тип элементов сообщения

Void*zbuf - адрес канала буфера приема сообщения

Zcount - число переданных элементов сообщения

zdatatype - тип принятых элементов сообщения

sourse – номер посылаемого процесса

comm – идентификатор проги

Массив sbuf делится на n равные части, состоящие из элементов типа zdatatype, в каждую из которых входит scount элементов. Каждое i - ая порция посылается i_му процессу. Для процесса source должны быть определены все параметры. Для всех остальных процессов достаточно параметров zbuf, zcount, zdatatype, source и comm. Параметры source и comm. Должны быть одинаковыми для всех участвующих процессов.

Int MPI_Gather (void*sbuf,

int scount,

MPI _datatype sdatatype,

MPI _datatype zdatatype,

int dest,

MPI_comm comm);

 

Dest – номер собирающего процесса.

Каждый процесс, вызывающий функцию Gather, включая процесс dest, посылает содержимое своего буфера sbuf процессу dest. Сбор данных осуществляется в буфере rbufx собираемым процессом dest. Данные располагаются в порядке возрастания номеров процессов. Параметр rbuf имеет значения только у собирающего процесса. У остальных игнорируется, но значения параметров scount, rcount,sdatatype, rdatatype, а так же параметры dest должны быть идентичными у всех процессов группы.



<== предыдущая лекция | следующая лекция ==>
Параллельная обработка информации в транспьютерных системах. Язык ОССАМ как инструментальное средство параллельного программирования транспьютерных систем. | Виртуальные топологии. Виды виртуальных топологий. Основные функции для работы с виртуальными топологиями.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.