Языки и  методы параллельного программирования 1999 год.



 
 
 
 
 
10.2.99
17.2.99 24.2.99 3/3/99 10/3/99 17/3/99 24/3/99 31/3/99 7/4/99 14/4/99 21/4/99 28/499 5/5/99 12/5/99 19/5/99 26/5/99
Задорожный Александр Геннадьевич ПММ41 
AlexaZ
Х Х X X X X X
Чернышёв Антон Владимирович ПММ41 
Chernshv
Х Х X X X X X X
Доценко Дмитрий Владимирович ПММ41 Х Х X X X X X X
Мельникова Анна Владимировна ПММ41 Х X X X X
Цыгулин Алексей ПММ41  Х X X X X X X
Лектор
Симонов С.А. Х Х X X X X X X
Кучин Н.В. X X
задания на дом 1, 2 3, 4

Вопросы для экзамена по курсу
"Языки и методы параллельного программирования"
н.с.,  к.ф.-м.н. С.А. Симонов

Символом * помечены вопросы для экзаменов на курсе 2001 года
Введение в предмет. *

      Для чего нужно параллельное программирование? *
      Основная терминология: *
            процесс, *
            разделяемые ресурсы, *
            повторно используемые ресурсы, *
            потребляемые ресурсы *
            критические секции, *
            распределенная и общая память, *
            средства синхронизации,  *
            средства передачи данных,  *
            состояние процессоров,  *
            тупики (deadlock, livelock),  *
            детерминированность (однозначность) вычислений  *
      Проблемы параллельного программирования:  *
            корректность  *
            оценки эффективности параллельных программ  *
            анализ и отладка параллельных программ  *
Классификация параллельных вычислительных систем по Flynn  *
            SISD  *
            MISD  *
            SIMD (SPMD) *
            MIMD  *
      Общая архитектура классов ВВС, примеры.
Производительность ВС  *
            ускорение,  *
            эффективность,  *
            "Закон Гроша",
            "Гипотеза Минского",
            Закон Амдала   *
            Примеры.  *
Классификация вычислительных систем на основе архитектуры соединительных сетей  *
            линейка, кольцо, решетка, тор, гиперкуб, дерево, полный граф   *

Возможные пути развития средств параллельного программирования:
            расширение языков,  *
            расширение библиотек функций  *
            расширение компиляторов  *
            уровни языков  *
            новые языки, компиляторы.  *
Уровни параллелизма:  *
            уровень программ,  *
            уровень процедур (функций),  *
            уровень выражений  *
            уровень команд  *
Две предметные задачи:
            вычисление значения Pi
            комбинаторная задача.
Средства задания параллелизма.  *
            Сеть Петри:  *
                  основное определение, свойства сетей Петри: живость, безопасность, ограниченность.  *
Средства синхронизации:
            семафоры
            Мониторы Brinch Hansen'а
            Средства задания параллелизма:
                  fork... join
                  parlogin-... parend

  Асинхронный параллелизм.

            неоднозначность вычислений.  *
            Тупики; проблемы, связанные с тупиками.  *
            Балансировка загрузки.
Модель Дейкстры (охраняемые команды)  *
Модель Хоара (CSP)  *
            конкретные задачи: producer - consumer, amplifier  *
Модель языка с индивидуальными взаимодействиями. Определимость свойств для программ на этом языке.
      Примеры.
      Язык Occam: основные конструкции, пример.  *
Модель языка с групповыми взаимодействиями. Примеры.

Язык Иня. Основные конструкции.
      Язык Actus. Основные конструкции; разделение данных. Пример: умножение матриц.   *
      Концепция Linda, примеры.   *
      Концепция PVM: конфигурация VM, средства взаимодействия, средства доступа.
      Концепция MPI.   *
Сравнение PVM и MPI: достоинства и недостатки обеих моделей.

  Синхронный параллелизм.

      История, примеры, общая структура SIMD систем.  *
      Языки для SIMD архитектур. Необходимые средства в языках для SIMD архитектур.  *
      Язык Parallaxis:
            Задание конфигурации ВС;
            Задание связей;
            Описание данных.
            Пересылка данных.
            Обмен с host компьютером.
            Примеры:
                  вычисление Pi;
                  решето Эратосфена
                  умножение матриц (систолический алгоритм)

  Синхронный и асинхронный параллелизм (сравнение), области применения.
  Систолические вычисления, волновые вычисления   *
  VLIW архитектуры.   *
  Единицы измерения производительности параллельных ВС.
  Методы и средства отладки параллельных программ.  *
  Перспективы параллельных вычислений.
 
 

 УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ

  1. Ортега Дж. Введение в параллельные и векторные методы решения линейных систем // М.: Мир, 1991.
  2. Ахо А., Ульман Дж., Хопкрофт Дж. Построение и анализ вычислительных алгоритмов. - М.: Мир, 1979. - 536 с.
  3. Программирование на параллельных вычислительных системах / Р. Бэбб, Дж. Мак-Гроу, Т. Акселрод и др.; под ред. Р. Бэбба II. - М.: Мир, 1991. - 376 с.
  4. СуперЭВМ. Аппаратная и программная организация // Под. ред. С. Фернбаха.- М.: Радио и связь, 1991.- С. 215-266.
  5. Миренков Н.Н. Параллельное программирование для многомодульных вычислительных систем. - М.: Радио и связь, 1989. - 320 с.
  6. Векторизация программ: теория, методы, реализация // Пер. с англ. и нем. под ред. Г.Д. Чинина.- М.: Мир, 1991.
  7. Хокни, К. Джесхоуп Параллельные ЭВМ: Архитектура, программирование и алгоритмы // М.: Радио и связь, 1986.
  8. Тербер К.Дж. Архитектура высокопроизводительных вычислительных систем.- М.: Наука, 1985,- 272 с.
  9. Высокоскоростные вычисления. Архитектура, производительность, прикладные алгоритмы и программы супер-ЭВМ. - М.: Радио и связь, 1988.
  10. Сырков Б.Ю., Матвеев С.В. Программное обеспечение мультитранспьютерных систем.- М.: ДИАЛОГ-МИФИ, 1992.
  11. Феррари Д. Оценка производительности вычислительных систем. Пер. С англ.под ред В.В.Мартынюка М.: Мир 1981.
  12. Системы параллельной обработки. Ред Д. Ивенс М.: Мир, 1985 416с.
  13. Гэри, Д.Джонсон Вычислительные машины и труднорешаемые задачи. Пер. С англ. М.:Мир. - 416с.
  14. Параллельные вычисления под ред Г. Родрига М.: Наука, 1986. -376 с.
  15. Липский Д. Комбинаторика для программистов. М.: Мир. -213с.
  16. Элементы параллельного программирования Под ред. В.Е. Котова М.: Радио и связь, 1983. -240с.
  17. Braeunnl T. Parallel Programming. An Introduction Prince-Hall 1996/
  18. Миренков Н.Н., Симонов С.А. Программирование 1986 ╧5-6
  19. Колосова Ю.И. Об анализе отладочной информации параллельных программ, основанном на представлении и использовании знаний. //Сб. "Параллельные алгоритмы и структуры" - Новосибирск - 1991. c. 130 - 143.
  20. Колосова Ю.И. Общая схема алгоритмов сохранения причинного порядка событий и ее использование. // Ж. Автометрия. N 3. - Новосибирск. - 1996. - c. 59 - 68.
  21. Хоар Ч.Взаимодействие последовательных процессов М.: Мир, 1989, 264с.
  22. Котов В.Е. Сети Петри. М.: Наука, 1984, 160с.
  23. Дейкстра Э. Дисциплина программирования. М.: Мир, 1978, 276с.
  24. Анисимов В.А. Система параллельного программирования "Иня". В сб. Математическое и архитектурное обеспечение параллельных вычислений. Новосибирск, 1989, С.67-73.
  25. Симонов С.А. Статический анализ параллельных программ на языке "Иня". В сб. Математическое и архитектурное обеспечение параллельных вычислений. Новосибирск, 1989, С.74-84.
  26. Симонов С.А Языкова-независимый инструментальный комплекс для отладки параллельных программ. В сб. Параллельные алгоритмы и структуры. Новосибирск, 1991. С.144-154.
  27. PVM : Parallel Virtual Machine http://www.epm.ornl.gov/pvm/
  28. Linda group http://www.cs.yale.edu/HTML/YALE/CS/Linda/linda.html
  29. Other Parallel Tools http://www.mcs.anl.gov/dbpp/web-tours/other-tools.html
  30. Message-Passing Architectures etc. http://www2.lmn.pub.ro/pvmdoc/node60.html
  31. This page contains a link [Many materials for learning MPI are available], which goes to new page with information on books http://www.mcs.anl.gov/mpi/ covering MPI.
  32. Использование PVM. Введение в программирование. Автор: Илья Евсеев
  33. MPI для начинающих. Учебное пособие + примеры. Автор: Илья Евсеев.  Контора: ИВВиБД ( ЦСТ ).

  34. Современные высокопроизводительные компьютеры В. Шнитман, информационно-аналитические материалы Центра Информационных Технологий, 1996 год http://www.citforum.ru/win/hardware/svk/contents.shtml
  35. Обзор по кластерам на русском языке
  36. SPEC CPU 2000: определение производительности в новом тысячелетии
  37. http://www.ccas.ru/paral/links.html
  38. http://www.ccas.ru/paral/contents.html

 

Задания на дом

  1. 1. Для различных кофигураций сетей посчитать максимальную и среднюю длину связей.
  2. 2. Написать последовательную программу для вычисления числа Пи и провести численные эксперименты по скорости приближения (количестве интервалов)
  3. 3.  Описать в терминах сети Петри задачу читатели-писатели
  4. 4. Описать в терминах языва CSP задачу читатели-писатели
Практика по PVM/MPI  1
Практика по PVM/MPI  2
Практика по PVM/MPI  3
Практика по PVM/MPI  4
Практика по PVM/MPI  5

Курсовые задания

Задания должны быть выполнены в одной из систем PVM/MPI методом простого перебора, без использования эвристических алгоритмов и оценена (аналитически) трудоемкость решения задачи. Естественно, при выполнении задач можно пользоваться свойствами задач, полученных аналитическими средствами из их условий, например, при решении задачи постоения магического квадрата можно пользоваться тем, сумма всех чисел по сторокам, столбцам и диагоналям квадрата  равна сумме всех чисел деленной на n.
Путь с запрещенными парами
Заданы ориентированный граф G=(V,  A), набор C={(a1,b1),...(an,bn)} пар вершин из V и две выделенные вершины  s, t из V.
Вопрос: Существует ли в  G ориентированный путь из s в t, содержащий не более одной вершины из каждой пары набора C ?

Коммивояжер
Заданы множество C, включающее   m городов,  расстояние d(ci,cj) между кождой парой городов ci, cj из C  и положительное число B.
Вопрос: Существует ли маршрут длины не более чем  B, проходящий через все города.  Иными словами, существует ли такая перестановка городов  <cp(1), cp(2),  cp(m)> , что Sum (i=1 до m-1) d(cp(i), cp(i+1)) + d(cp(m), cp(1)) <=B ?

"Магический" квадрат
Задан набор натуральных чисел (a1, a2, ...an2)
Разместить в квадрате со сторой   все числа так, чтобы сумма чисел во всех строках, столбцах и главных диагоналях была одна и та же.

8 ферзей
Найти все возможные размещения 8 ферзей на шахматной доске, при которых ни один из ферзей не находитсся под боем.

"Подбор пароля"
Задан алфавит {a1, a2,  ...  an} и упорядоченная выборка размера  m .
Построить алгоритм перебора всевозможных выборок, размера m.