Основы многопоточного и параллельного программирования [Евгения Дмитриевна Карепова] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

СИБИРСКИЙ ФЩЕРАЛЬНЫИ УНИВЕРСИТЕТ
SIBERIflfl FEDERAL UfllVERSITY

m

Рассматриваются современные подходы к разработке про­
граммного обеспечения для высокопроизводительных
параллельных вычислительных систем. Приводятся общие
сведения об архитектурах современных суперкомпьютеров
и методах их программирования. Описываются особенно­
сти ряда популярных средств разработки многопоточных
и параллельных программ и их использования для эффек­
тивного решения научных и прикладных задач.

ш
•о
CD
о
со
ш

О
О

>
>

Е. Д. Карепова

ОСНОВЫ много поточи о го
И ПАРАЛЛЕЛЬНОГО
ПРОГРАММИРОВАНИЯ

О
оо
ia сг
ia
m
ia
сг О
—I
I
О О

Z1

о

=2
°I


О

Учебное
пособие

й о
•о
О

УМО

S

ИНСТИТУТ МАТЕМАТИКИ
I Ж

#• I Л Л Л Я 1~" I 1 Т Д Я I

I |

А

М

I Л

1 А Л П 1 1

Jk^PI Л 1 X 1 л

ПРИКЛАДНАЯ МАТЕМАТИКА И ИНФОРМАТИКА
ФУНДАМЕНТАЛЬНАЯ И Н Ф О Р М А Т И К А ^
/ . И
И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

я/

и

Оглавление

Министерство образования и науки Российской Федерации
Сибирский федеральный университет
Федеральное государственное бюджетное учреждение науки
«Институт вычислительного моделирования
Сибирского отделения Российской академии наук»
Сибирский научно-образовательный центр
суперкомпьютерных технологий

Е. Д. Карепова

ОСНОВЫ МНОГОПОТОЧНОГО
И ПАРАЛЛЕЛЬНОГО
ПРОГРАММИРОВАНИЯ
Допущено УМО по классическому университетскому образованию в качестве учебного пособия для студентов высших
учебных заведений, обучающихся по направлениям ВПО
010400 «Прикладная математика и информатика» и 010300
«Фундаментальная информатика и информационные технологии», 23 марта 2015 г.

Красноярск
СФУ
2016
1

Оглавление

УДК 004.272(07)
ББК 32.973я73
К225

Карепова, Е. Д.
К225
Основы многопоточного и параллельного программирования :
учеб. пособие / Е. Д. Карепова. – Красноярск : Сиб. федер. ун-т, 2016. –
356 с.
ISBN 978-5-7638-3385-0
Рассматриваются современные подходы к разработке программного обеспечения для высокопроизводительных параллельных вычислительных систем.
Приводятся общие сведения об архитектурах современных суперкомпьютеров
и методах их программирования. Описываются особенности ряда популярных
средств разработки многопоточных и параллельных программ и их использования для эффективного решения научных и прикладных задач.
Предназначено для студентов, аспирантов, инженеров и исследователей,
работающих в области прикладной математики, вычислительной физики и высокопроизводительных параллельных вычислений.
Работа выполнена при частичной поддержке Российского научного фонда
(проект № 14-11-00147)

Электронный вариант издания см.:
http://catalog.sfu-kras.ru
ISBN 978-5-7638-3385-0

2

УДК 004.272(07)
ББК 32.973я73
© Сибирский федеральный
университет, 2016

Оглавление

ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ.................................................................................................. 5
ВВЕДЕНИЕ .......................................................................................................... 8
Г л а в а 1. ОБЗОР ОБЛАСТИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ ..... 10
1.1. Основные архитектурные особенности построения
параллельной вычислительной среды ............................... 10
1.2. Основные классы современных
параллельных компьютеров .............................................. 17
1.3. Разработка параллельных приложений ............................. 25
1.4. Программные средства ........................................................ 29
1.5. Парадигмы параллельных приложений ............................ 34
Контрольные вопросы и задания .............................................. 51
Задачи ........................................................................................... 52
Г л а в а 2. ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ
ДЛЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
С ОБЩЕЙ ПАМЯТЬЮ ............................................................ 54
2.1. Анатомия потока .................................................................. 54
2.2. Синхронизация потоков. Оператор ожидания .................. 58
2.3. Взаимное исключение. Задача критической секции ........ 60
2.4. Сигнализирующие события. Барьерная
синхронизация ...................................................................... 65
2.5. Семафоры.............................................................................. 73
2.6. Мониторы ............................................................................. 85
Контрольные вопросы и задания .............................................. 91
Задачи ........................................................................................... 93
Г л а в а 3. УПРАВЛЕНИЕ ПОТОКАМИ
С ПОМОЩЬЮ ФУНКЦИЙ WinAPI ..................................... 95
3.1. Объекты ядра ........................................................................ 95
3.2. Процессы............................................................................. 101
3.3. Потоки ................................................................................. 108
3.4. Синхронизация потоков в пользовательском режиме ... 113
3.5. Синхронизация потоков с помощью объектов ядра ...... 120
3.6. Проблемы условной синхронизации ............................... 128
3.7. Проецируемые в память файлы ........................................ 138
3.8. Совместный доступ процессов
к данным через механизм проецирования ...................... 144
Контрольные вопросы и задания ............................................ 146
Задачи