Приемы параллельного программирования. Учебное пособие
.pdfБИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.Антонов А.С. Введение в параллельные вычисления: Методическое пособие. – М.: Изд-во МГУ, 2002. – 70 с.
2.АнтоновА.С. ПараллельноепрограммированиесиспользованиемтехнологииMPI: Учебноепособие. – М.: Изд-воМГУ, 2004. – 71 с.
3.Букатов А.А., Дацюк В.Н., Жегуло А.И. Программирование многопроцессорных вычислительных систем. – Ростов-на-Дону:
Изд-во ООО «ЦВВР», 2003. – 208 с.
4.Вавилов К.В. Программирование за... 1 (одну) минуту // Ком-
пьютер Price. – 2002. – № 31. – С. 288–293.
5.Вентцель Е.С. Исследование операций. – М.: Сов. радио, 1972. – 552 с.
6.Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. Серия «Научное издание». – СПб.: БХВ-Петербург, 2002. – 608 с.
7.Глебов А.Н. Параллельное программирование в функциональном стиле. – 2003 [Электронный ресурс] URL: http://www. softcraft.ru/parallel/ppfs.shtml.
8.Глушков В.М. Синтез цифровых автоматов. – М.: Физматгиз, 1962. – 476 с.
9.Дехтярь М.И. Введение в схемы, автоматы и алгоритмы.
–2007 [Электронный ресурс] URL: http://www.intuit.ru/department/ ds/introsaa/.
10.Котов В.Е . Введение в теорию схем программ. – Новоси-
бирск: Наука, 1978. – 258 с.
11.Котов В.Е. Сети Петри. – М.: Наука, 1984. – 160 с.
12.Кремер Н.Ш., Путко Б.А., Тришин И.М., Фридман М.Н. Исследование операций в экономике: Учебное пособие. / Под. ред. Н.Ш. Кремера – М.: ЮНИТИ, 1997. – 408с.
13.Кузнецов Б.П. Психология автоматного программирования
// BYTE-Россия. – 2000. – № 11. – С. 22–29.
14.Кузнецов С.Д. Блеск и нищета легковесных процессов // Computerworld Россия. – 1996. – № 31.
15.ЛескинА.А., МальцевП.А., СпиридоновА.М. СетиПетрив моделировании и управлении. – Л.: Наука, 1989. – 133 с.
16.Ли Эдвард А. Проблемы с потоками // IEEE Computer, 2006.
/Пер. с англ.: Петров А.В., 2007 [Электронный ресурс] URL: http:// www.softcraft.ru/parallel/pwt/index.shtml.
191
17.Любченко В.С. К проблеме создания модели параллельных вычислений // Труды Третьей международной конференции «Параллельные вычисления и задачи управления» (РАСО’2006). Москва, 2–4 октября 2006 г. Институт проблем управления им. В.А. Трапезникова РАН. – М.: Институт проблем управления им. В.А. Трапезни-
кова РАН, 2006. – С. 1359–1374.
18.Любченко В.C. К решению проблемы обедающих философов Дейкстры // Высокопроизводительные параллельные вычисления на кластерных системах: Материалы Четвертого международного научно-практического семинара. – Самара: СГАУ, 2005. –
С. 186–193.
19.Любченко В.С. Конечно-автоматная технология программирования// Трудымеждународнойнаучно-методическойконференции
«Телематика’2001». – СПб.: СПбГИТМО(ТУ), 2001. – С. 127–128.
20.НемнюгинС.А., СтесикО.Л. Параллельноепрограммирование для многопроцессорных вычислительных систем. Серия «Мастер программ». – СПб.: БХВ-Петербург, 2002. – 400 с.
21.Питерсон Дж. Теория сетей Петри и моделирование систем
/Пер. с англ. – М.: Мир, 1984. – 264 с.
22.Трахтенброт Б. А., Барздинь Я. М. Конечные автоматы (поведение и синтез). – М.: Наука, 1970. – 400 с.
23.Хоар Ч. Взаимодействующие последовательные процессы /
Пер. с англ. – М.: Мир, 1989. – 264 с.
24.Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. – СПб.: Наука, 1998.
– 628 с.
25.Шалыто А.А. Автоматное проектирование программ. Алгоритмизация и программирование задач логического управления // Известия Академии наук. Теория и системы управления. – Ноябрь – Декабрь, 2000. – № 6. – C. 63–81.
26.Шалыто А.А. Использование граф-схем и графов переходов при программной реализации алгоритмов логического управления
// Автоматика и телемеханика. – 1996. – № 6. – C. 148–158; № 7. – С. 144–169.
27.Шалыто А.А., Туккель Н.И. От тьюрингова программирова-
ния к автоматному // Мир ПК. – 2002. – № 2. – C. 144–149.
28.ШалытоА.А., ТуккельН.И. Преобразованиеитеративныхалгоритмоввавтоматные// Программирование. – 2002. – №5. – С. 12–26.
192
29.ШалытоА.А., ТуккельН.И. Программированиесявнымвы-
делением состояний // Мир ПК. – 2001. – № 8, № 9. – C. 116–121; С. 132–138.
30.Шалыто А.А., Туккель Н.И., Шамгунов Н.Н. Реализация рекурсивных алгоритмов на основе автоматного подхода // Телекоммуникации и информатизация образования. – 2002. – № 5. – С. 72–99.
31.Шпаковский Г.И., Серикова Н.В. Программирование для многопроцессорных систем в стандарте MPI: Пособие. – Мн.: БГУ, 2002. – 323 с.
32.Элементыпараллельногопрограммирования/ В.А. Вальковский, В.Е. Котов, А.Г. Марчук, Н.Н. Миренков. – М.: Радио и связь, 1983. – 240 с.
33.Lee Edward A. The problem with threads // IEEE Computer.
–Vol. 39, № 5, May 2006. – P. 33–42.
34.Snir M., Otto S., Huss-Lederman S., etc. MPI – The Complete Reference: The MPI Core. – 2-nd edn. – Cambridge: MIT Press, 1998. – 426 p.
35.Snir M., Otto S., Huss-Lederman S., etc. MPI: The complete Reference. – Cambridge, Massachusetts: MIT Press, 1997. [Электронныйресурс] URL: http://www.netlib.org/utk/papers/mpi-book/mpi-book.html.
36.MPI: A Message-Passing Interface Standard. (Version 1.1: June, 1995) [Электронный ресурс] URL: http://www.mcs.anl.gov/mpi/standard.html.
37.MPI-2: Extensions to the Message-Passing Interface. [Электронный ресурс] URL: http://www.mcs.anl.gov/mpi/standard.html.
38.OpenMP C and C++ Application Program Interface (Version 1.0: October, 1998) [Электронный ресурс] URL: http://www.openmp. org/mp-documents/cspec10.pdf.
39.OpenMP C and C++ Application Program Interface (Version 2.0: March, 2002) [Электронный ресурс] URL: http://www.openmp. org/mp-documents/cspec20.pdf.
40.Wagner F., Schmuki R., Wagner T., Wolstenholme P. Modeling Software with Finite State Machines: A Practical Approach. – Auerbach Publications, 2006. – 392 p.
41.Wagner F. Moore or Mealy model? April 2005. [Электронный ресурс] URL: http://www.stateworks.com/technology/TN10-Moore-Or- Mealy-Model/.
193
ОГЛАВЛЕНИЕ
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
О проблеме параллельного программирования. . . . . . . . . . . . . . 4
Об используемой терминологии . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Глава 1. Интерфейсы и технологии параллельного программирования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Интерфейс OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Первая программа – ряд Лейбница. . . . . . . . . . . . . . . . . . . . . . . 11 Основные конструкции параллельного выполнения. . . . . . . . . 18 Некоторые вспомогательные директивы . . . . . . . . . . . . . . . . . . 23
Разделение данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Runtime-функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Вычисление определенного интеграла. . . . . . . . . . . . . . . . . . . . 30
Интерфейс передачи сообщений MPI . . . . . . . . . . . . . . . . . . . . . 33
Краткое описание предоставляемых функций. . . . . . . . . . . . . . 33
Снова ряд Лейбница. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Неравномерное распределение вычислений . . . . . . . . . . . . . . . 39
Умножение матрицы на вектор . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Перемножение матриц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Глава 2. Ярусно-параллельная форма программы . . . . . . . . . 61 Цель и механизм построения ЯПФ . . . . . . . . . . . . . . . . . . . . . . . 61
Реализация выполнения комплекса работ при использовании фиксированного количества параллельных ресурсов . . 65 Случай неравномерной длительности работ. . . . . . . . . . . . . . . 70 Глава 3. Сети конечных автоматов . . . . . . . . . . . . . . . . . . . . . . . 76 Программирование конечных автоматов . . . . . . . . . . . . . . . . . 76 Параллелизм сетей конечных автоматов. . . . . . . . . . . . . . . . . . 81 Пример программной реализации . . . . . . . . . . . . . . . . . . . . . . . 83
Реализация с использованием OpenMP . . . . . . . . . . . . . . . . . . . 86
Простая реализация с использованием MPI. . . . . . . . . . . . . . . . 93 Реализация с поддержкой вложенных сетей . . . . . . . . . . . . . . . 96
Бильярдные шары . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Сумматор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Глава 4. Сети Петри . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Краткое введение в теорию сетей Петри . . . . . . . . . . . . . . . . . 125
Знакомство с сетями Петри . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Строго иерархические сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
194
Параллельные вычисления и синхронизация . . . . . . . . . . . . . 130 Задача об обедающих философах . . . . . . . . . . . . . . . . . . . . . . . 134
Пример реализации механизма сетей Петри. . . . . . . . . . . . . . 136
Функционирование строго иерархических сетей . . . . . . . . . . 137 Выполнение параллельных процессов. . . . . . . . . . . . . . . . . . . 149
Заключение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Приложение 1. Шаблоны классов матрицы и вектора. . . . . 165
Приложение 2. Классы построения и выполнения комплекса работ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Приложение 3. Классы построения и выполнения сетей конечных автоматов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Приложение 4. Классы построения и выполнения сетей Петри . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Библиографический список . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
195
УЧЕБНОЕ ИЗДАНИЕ
ФЕДОТОВ Илья Евгеньевич
ПРИЕМЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Учебное пособие
Редактор Голева А.В. Компьютерная верстка Дебольского Д.Е.,
Федотова И.Е.
Оригинал-макет подписан к печати 08. 07. 2009 г. Формат 60×90/16. Гарнитура таймс. Бумага офсетная. Усл. печ. л. 12,25.
Тираж 300. Заказ .
Российский новый университет. 105005, Москва, ул. Радио, д. 22.
Отпечатано с готовых диапозитивов В ГУП МО «Орехово-Зуевская типография».
г. Орехово-Зуево Московской обл., ул. Дзержинского, д. 1. E-mail: tipografiya-oz@rambler
196
