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

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


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

......................................................................................... 147
3

Оглавление

Г л а в а 4. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ OpenMP ............ 153
4.1. Программная модель OpenMP.......................................... 153
4.2. Модель памяти OpenMP .................................................... 156
4.3. Среда выполнения OpenMP-программы ......................... 158
4.4. Директива omp parallel ..................................................... 164
4.5. Распределение работы в параллельной области
по нитям .............................................................................. 171
4.6. Директивы синхронизации ............................................... 191
4.7. Переменные среды и функции времени выполнения .... 204
4.8. Спецификации стандарта OpenMP v. 4.0 ........................ 210
4.9. Оптимизация программ OpenMP ..................................... 212
4.10. Ограничения OpenMP...................................................... 213
Контрольные вопросы и задания ............................................ 215
Задачи ......................................................................................... 215
Г л а в а 5. СОГЛАСОВАННОЕ
ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ ...................... 221
5.1. Проблемы программирования
для вычислительных систем
с распределенной памятью ............................................... 221
5.2. Оценка эффективности параллельных алгоритмов ....... 225
5.3. Реализация базовых алгоритмов
вычислительной математики ............................................ 248
5.4. Проблемы выбора эффективной
параллельной реализации ................................................. 272
Контрольные вопросы и задания ............................................ 289
Г л а в а 6. ОСНОВЫ ТЕХНОЛОГИИ
ПРОГРАММИРОВАНИЯ MPI ............................................... 291
6.1. Архитектурная парадигма MPI ........................................ 291
6.2. Обрамляющие и информационные функции MPI.......... 293
6.3. MPI и крупноблочное распараллеливание ...................... 294
6.4. Организация вычислений .................................................. 300
6.5. Организация взаимодействий процессов ........................ 311
6.6. Повышение эффективности MPI-программ .................... 335
Контрольные вопросы и задания ............................................ 338
Задачи ......................................................................................... 340
БИБЛИОГРАФИЧЕСКИЙ СПИСОК .......................................................... 347

4

Предисловие

ПРЕДИСЛОВИЕ
Предлагаемое учебное пособие содержит материал для
базового курса «Параллельное программирование», который охватывает
широкий круг вопросов, связанных с высокопроизводительными вычислениями, а также отражает содержание нескольких спецкурсов, которые на
протяжении ряда лет читаются автором в Институте математики и фундаментальной информатики Сибирского федерального университета и аспирантуре Института вычислительного моделирования СО РАН.
Пособие можно разделить на три части: общие аспекты параллельного
программирования; программирование для параллельных вычислительных
систем (ПВС) с общей памятью; программирование для систем с распределенной памятью. В каждой части сначала обсуждаются проблемы, порождаемые архитектурой соответствующей вычислительной системы (ВС),
теоретические основы решения этих проблем, затем подробно рассматривается языковая реализация всех базовых механизмов. Как теоретический, так
и практический материал проиллюстрирован большим количеством примеров, многие из которых давно уже стали классикой параллельного программирования.
В первой главе рассматриваются основные особенности параллельного программирования. Приводится краткая классификация основных
видов архитектур ПВС, и подчеркивается необходимость использования
разнообразных методов написания параллельных программ в зависимости
от типа архитектуры. Здесь же дан краткий перечень существующих программных средств, методов написания параллельных программ, а также
факторов, определяющих те или иные приемы распараллеливания.
Во второй главе более подробно описываются особенности разработки программ для ПВС с общей памятью. Дается определение потока,
рассматриваются основные состояния, в которых может находиться поток.
Приводятся сведения о создании параллельных потоков и методах решения проблем, порождаемых необходимостью их синхронизации (взаимного исключения, барьерной синхронизации, условного ожидания), вводятся
основные синхропримитивы, используемые при многопоточном программировании. Подробно рассмотрено использование семафоров и мониторов.
Обсуждаются способы решения классических задач многопоточного программирования (задачи о критической секции, кольцевом буфере, философах, читателях и писателях).

5

Предисловие

Третья глава посвящена практическому применению потоков для
операционной системы Windows с использованием WinAPI. Дается общее
понятие объекта ядра ОС Windows, процесса и потока. Приводится описание общей структуры создаваемой многопоточной программы. Обсуждаются особенности реализации проблемы взаимного исключения потоков
одного процесса, т. е. потоков, находящихся в общем адресном пространстве
(синхронизация в пользовательском режиме), и общий случай синхронизации потоков, относящихся, может быть, к разным процессам, с помощью
объектов ядра. Рассмотрен один из простых механизмов