Учебный курс.

Богачёв К. Ю. «Основы параллельного программирования» БИНОМ, 2015 год, 343 стр. (9,38 мб. djvu)

Эта книга представляет собой учебный курс «параллельное программирование», его цель обучение методике разработке ПО для параллельных ЭВМ. Вначале изложения вы познакомитесь с методами использования параллелизма (метод задач и метод процессов) в работе процессора и оперативной памяти, межпроцессорными взаимодействиями и архитектурой параллельных ЭВМ. Рассмотрены стандарты, примеры и функции интерфейса MPI. Все задачи распараллеливания используемых для этого алгоритмов представлены на языке C. Основой учебного курса стали лекции «Практикума на ЭВМ» механико-математического факультета МГУ им. М. В. Ломоносова. В конце учебного курса приводится список задач для самостоятельной подготовки.
ISBN: 978-5-9963-2995-3

Оглавление.

Глава 1. Для нетерпеливого читателя 10
1.1. Последовательная программа 10
1.2. Ускорение работы за счет параллелизма 12
1.3. Параллельная программа, использующая процессы 13
1.4. Параллельная программа, использующая задачи 18
1.5. Параллельная программа, использующая MPI 21

Глава 2. Пути повышения производительности процессоров 24
2.1. CISC- и RISC-процессоры 24
2.2. Основные черты RISC архитектуры 25
2.3. Конвейеризация 26
2.4. Кэш-память 34
2.5. Многопроцессорные архитектуры 39
2.5.1. Основные архитектуры 39
2.5.2. Комбинированные архитектуры 40
2.5.3. Обанкротившиеся архитектуры 43
2.6. Поддержка многозадачности и многопроцессорности 44
2.7. Использование параллелизма процессора для повышения эффективности программ 45

Глава 3. Пути повышения производительности оперативной памяти 61

Глава 4. Организация данных во внешней памяти 64

Глава 5. Основные положения 66
5.1. Основные определения 66
5.2. Виды ресурсов 72
5.3. Типы взаимодействия процессов 73
5.4. Состояния процесса 77

Глава 6. Стандарты на операционные системы UNIX 79
6.1. Стандарт BSD 4.3 79
6.2. Стандарт UNIX System V Release 4 79
6.3. Стандарт POSIX 1003 80
6.4. Стандарт UNIX X/Open 80

Глава 7. Управление процессами 81
7.1. Функция fork 81
7.2. Функции execl, execv 84
7.3. Функция waitpid 84
7.4. Функция kill 87
7.5. Функция signal 88

Глава 8. Синхронизация и взаимодействие процессов 96
8.1. Разделяемая память 97
8.1.1. Функция shmget 98
8.1.2. Функция shmat 99
8.1.3. Функция shmctl 99
8.2. Семафоры 100
8.2.1. Функция semget 103
8.2.2. Функция semop 103
8.2.3. Функция semctl 104
8.2.4. Пример использования семафоров и разделяемой памяти 104
8.3. События 120
8.4. Очереди сообщений (почтовые ящики) 122
8.4.1. Функция msgget 124
8.4.2. Функция msgsnd 124
8.4.3. Функция msgrcv 125
8.4.4. Функция msgctl 126
8.4.5. Пример использования очередей 126
8.4.6. Функция pipe 133
8.5. Пример многопроцессной программы, вычисляющей произведение матрицы на вектор 135

Глава 9. Управление задачами (threads) 156
9.1. Функция pthread_create 156
9.2. Функция pthread_join 157
9.3. Функция sched_yield 157

Глава 10. Синхронизация и взаимодействие задач 158
10.1. Объекты синхронизации типа mutex 158
10.1.1. Функция pthread_mutex_init 161
10.1.2. Функция pthread_mutex_lock 162
10.1.3. Функция pthread_mutex_ try lock 162
10.1.4. Функция pthread_mutex_ unlock 162
10.1.5. Функция pthread_mutex_destroy 163
10.1.6. Пример использования mutex 163
10.2. Пример multithread-программы, вычисляющей определенный интеграл 168
10.3. Объекты синхронизации типа condvar 168
10.3.1. Функция pthread_cond_init 170
10.3.2. Функция pthread_cond_signal 171
10.3.3. Функция pthread_cond_broadcast 171
10.3.4. Функция pthread __cond_wait 172
10.3.5. Функция pthread_cond_destroy 172
10.3.6. Пример использования condvar 172
10.4. Пример multithread-программы, вычисляющей произведение матрицы на вектор 178
10.5. Влияние дисциплины доступа к памяти на эффективность параллельной программы 192
10.6. Пример imiltithread-npoграммы, решающей задачу Дирихле для уравнения Пуассона 202

Глава 11. Интерфейс MPI (Message Passing Interface) 232
11.1. Общее устройство MPI-программы 232
11.2. Сообщения 234
11.3. Коммуникаторы 237
11.4. Попарный обмен сообщениями 238
11.5. Операции ввода-вывода в MPI-программах 240
11.6. Пример простейшей MPI-программы 242
11.7. Дополнительные функции для попарного обмена сообщениями 243
11.8. Коллективный обмен сообщениями 250
11.9. Пример MPI-программы, вычисляющей определенный интеграл 256
11.10. Работа с временем 259
11.11. Пример MPI-программы, вычисляющей произведение матрицы на вектор 261
11.12. Дополнительные функции коллективного обмена сообщениями для работы с массивами 273
11.13. Пересылка структур данных 277
11.13.1. Пересылка локализованных разнородных данных 277
11.13.2. Пересылка распределенных однородных данных 288
11.14. Ограничение коллективного обмена на подмножество процессов 290
11.15. Пример MPI-программы, решающей задачу Дирихле для уравнения Пуассона 292

Источники дополнительной информации 323
Программа курса 326
Список задач 329
Указатель русских терминов 334
Указатель английских терминов 336
Список иллюстраций 339
Список таблиц 340
Список примеров 341

Скачать книгу бесплатно9,38 мб. djvu

Похожая литература