Калашников В.И.

 

ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ

 

ББК 32.973-018

К17

УДК 004.42

Рецензенты:

Е.П. Путятин, д-р техн. наук, проф.,

Харьковский национальный университет радиоэлектроники;

В.И. Носков, канд. техн. наук, чл.-корр. ТАУ,

главный конструктор, ГП Електротяжмаш.

Калашников В.И. Параллельное программирование: Учебн. пособие - Харьков: НТУ "ХПИ", 2005 - 320 с. - Русск. яз.

ISBN   966-593-381-7

Даются основные понятия параллельных систем, вычислений и алгоритмов для выполнения громоздких задач. Рассмотрены показатели и методы построения параллельных форм алгоритмов, способы размещения на процессорах совместно выполняемых взаимодействующих процессов, методы зашиты общих данных... Описываются расширения языка программирования C++, предназначенные для программирования параллельных задач. Детально рассматривается применение подпрограмм обмена данными между параллельными процессами в среде программирования MPI. Приводятся сведения по постановке и запуску параллельных программ в Windows 2000 с помощью пакета NT-MPICH.

Учебное пособие предназначено для студентов, аспирантов и инженеров, использующих методы параллельного программирования.

Даються основні поняття рівнобіжних систем, обчислень і алгоритмів для вирішування громіздких задач. Розглянуто показники і методи побудови паралельних форм алгоритмів, способи розміщення на процесорах спільно виконуваних процесів, що взаємодіють, методи захисту загальних даних... Описуються розширення мови програмування C++, призначені для програмування паралельних задач. Детально розглядається застосування підпрограм обміну даними між паралельними процесами у середовищі програмування МРІ. Наводяться відомості за постановки запуску паралельних програм у Windows 2000 за допомогою пакета NT-MPICH.

Навчальний посібник призначений для студентів, аспірантів і інженерів, що використовують методи паралельного програмування.

Ил. 68. Табл. 7. Библиогр. 17 назв.

 

ISBN  966-593-381-7

 

 

СОДЕРЖАНИЕ

Предисловие

 

1 Суть проблемы и основные понятия

1.1  Главные этапы распараллеливания задач

1.2  Сведения о вычислительных процессах

1.3  Распределенная обработка данных

1.4  Движущее начало параллельных процессов          

1.5  Механизмы связи параллельных процессов

1.6  Ускорение при параллельных вычислениях

1.7  Зерна параллельных алгоритмов

1.8  Формальная модель ускорения алгоритмов

 

2 Параллельные структуры алгоритмов

2.1  Параметры параллельного алгоритма

2.2  Два подхода к распараллеливанию

2.2.1  Распараллеливание регулярных выражений

2.2.2  Алгоритмы сдваивания

2.2.3  Распараллеливание рекуррентных выражений

2.2.4  Преобразование общих рекуррентных выражений

2.2.5  Распараллеливание циклов

2.2.6  Формальный подход к распараллеливанию циклов

2.3 Формальные методы распараллеливания

2.3.1  Графовая модель параллельных процессов

2.3.2  Описание графов информационной зависимости

2.3.3  Свойства матрицы смежности орграфа

2.3.4  Лексикографическое упорядочение вершин по ярусам

2.3.5  Учет времени протекания вершинных процессов

2.3.6  Поиск границ допустимых перемещений процессов

2.3.7  Оптимизация размещения процессов в алгоритме

2.4 Организация взаимного обмена данными

2.4.1  Управление параллельными процессами

2.4.2  Синхронизация и неделимость операторов обмена

2.4.3  Способы зашиты и ограждения критических секций

2.4.4  Ограниченные ресурсы и критические секции

2.4.5  Модели активного взаимодействия и синхронизации

2.4.6  Сообщения, как инструмент взаимодействия процессов

2.5 Аппаратура для параллельных вычислений

2.5.1  Современное состояние процессорных узлов

2.5.2  Общая память и проблема когерентности

2.5.3  Каналы связи и коммуникационная среда

2.6 Вопросы для самоконтроля

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

3.1 Краткий обзор C++

3.1.1  Строгий контроль типов и управление памятью

3.1.2  Классы

3.1.3  Наследование свойств классов

3.2   Введение в СС++

3.3   Задание параллельного выполнения

3.4   Местоположение (Locality)

3.4.1  Процессорные объекты

3.4.2  Глобальные указатели

3.4.3  Размещение процесса

3.5 Организация связи

3.5.1  Дистанционные управления

3.5.2  Синхронизация

3.5.3  Взаимное исключение

3.5.4  Функции передачи данных

3.5.5  Асинхронная передача данных

3.5.6  Детерминизм

3.5.7  Отображение

3.5.8  Размещение процессорных объектов

3.5.9  Отображение процессов на процессорные объекты

3.5.10 Модульность

3.6 Канальная библиотека

3.7. Вопросы для самоконтроля

 

4 Программирование в пакете MPI

4.1   Общая организация и структура MPI

4.2   Операции обмена сообщениями

4.3   MPI - Интерфейс Передачи Сообщений

4.4   Организация MPICH

4.5   СтруктураNT-MPICH для Windows

4.6   Объекты для связи в МРІ

4.7   Основные языки программирования в МРІ          

4.8   Коды завершения

4.9   Структура программы в среде МРІ

4.10  Трансляция программ в пакете NT-MPICH

4.11  Старт прикладных программ NT-MPICH

4.11.1Запуске RexecShell

4.11.2Запуск с mpiexec

4.11.3Задание главных компьютеров

4.11.4Назначение процессов на главные компьютеры

4.11.5Использование вставок (plug-ins)

4.11.6Преобразование Пути

4.12  Обработка пультового ввода - вывода

4.13  Параметры командной строки для вставок

4.14  Использование интерфейса профилирования

4.14.1 Специальные средства визуализации

4.15  Вопросы и задания для самоконтроля

 

5 Обмен данными в MPI    199

5.1  Двухточечный обмен сообщениями

5.2  Блокирующие операции обмена

5.2.1  Стандартный обмен

5.2.2  Синхронный блокирующий обмен

5.2.3  Буферизованный обмен

5.2.4  Обмен по готовности

5.2.5  Подпрограммы-пробники

5.2.6  Совместные прием и передача

5.2.7  Неблокирующие операции обмена

5.2.8  Инициализация неблокирующего обмена

5.2.9  Проверка выполнения обмена

5.2.10Отложенные обмены

5.2.11Отмена обменов, ожидающих обработки

5.3 Коллективный обмен данными

5.3.1  Широковещательная рассылка

5.3.2  Коллективный обмен с синхронизацией

5.3.3  Управление областью взаимодействия и группой процессов

5.3.4  Группы процессов

5.3.5  Создание групп процессов

5.3.6  Получение информации о группе

5.3.7  Управление коммуникаторами

5.3.8  Операции обмена между группами процессов

5.4 Вопросы и задания для самоконтроля

 

6 Коллективный обмен данными в MPI

6.1   Широковещательная рассылка

6.2   Распределение и сбор данных

6.3   Операции приведения и сканирования

6.4   Учет топологии взаимодействия процессов          

6.4.1  Декартовы топологии

6.4.2  Топология графа

6.5 Производные типы данных

6.5.1  Конструкторы производных типов

6.5.2  Регистрация и удаление производных типов

6.5.3  Подпрограммы, сопутствующие производным типам          

6.6 Операции упаковки и распаковки данных

6.6.1 Типы MPI_BYTE и MPI_PACKED

6.7   Атрибуты коммуникаторов

6.8   Ввод и вывод

6.8.1 Основные операции с файлами

6.9   Вопросы и задания для контроля

Список литературы

Предметный указатель