Опубликован: 28.10.2009 | Доступ: свободный | Студентов: 515 / 40 | Оценка: 4.67 / 4.39 | Длительность: 20:33:00
Лекция 4:

Параллельное программирование на основе MPI

6.10. Обзор литературы

Имеется ряд источников, в которых может быть получена информация о MPI. Прежде всего, это информационный ресурс Интернет с описанием стандарта MPI: http://www.mpiforum.org. Одна из наиболее распространенных реализаций MPI - библиотека MPICH представлена на http://www-unix.mcs.anl.gov/mpi/mpich (библиотека MPICH2 с реализацией стандарта MPI-2 содержится на http://www-unix.mcs.anl.gov/mpi/mpich2). Русскоязычные материалы о MPI имеются на сайте http://www.parallel.ru.

Среди опубликованных изданий могут быть рекомендованы работы Group, et al. (1994), Pacheco (1996), Snir, et al. (1996), Group, et al. (1999a). Описание стандарта MPI-2 может быть получено в Group, et al. (1999b). Среди русскоязычных изданий могут быть рекомендованы работы Воеводин В.В. и Воеводин Вл.В. (2002), Немнюгина и Стесик (2002), Корнеева (2003).

Следует отметить также работу Quinn (2003), в которой изучение MPI проводится на примере ряда типовых задач параллельного программирования - матричных вычислений, сортировки, обработки графов и др.

6.11. Контрольные вопросы

  1. Какой минимальный набор средств является достаточным для организации параллельных вычислений в системах с распределенной памятью?
  2. В чем состоит важность стандартизации средств передачи сообщений?
  3. Что следует понимать под параллельной программой?
  4. В чем различие понятий процесса и процессора?
  5. Какой минимальный набор функций MPI позволяет начать разработку параллельных программ?
  6. Как описываются передаваемые сообщения?
  7. Как можно организовать прием сообщений от конкретных процессов?
  8. Как определить время выполнения MPI программы?
  9. В чем различие парных и коллективных операций передачи данных?
  10. Какая функция MPI обеспечивает передачу данных от одного процесса всем процессам?
  11. Что понимается под операцией редукции?
  12. В каких ситуациях следует применять барьерную синхронизацию?
  13. Какие режимы передачи данных поддерживаются в MPI?
  14. Как организуется неблокирующий обмен данными в MPI?
  15. В чем состоит понятие тупика? В каких ситуациях функция одновременного выполнения передачи и приема гарантирует отсутствие тупиковых ситуаций?
  16. Какие коллективные операции передачи данных предусмотрены в MPI?
  17. Что понимается под производным типом данных в MPI?
  18. Какие способы конструирования типов имеются в MPI?
  19. В каких ситуациях может быть полезна упаковка и распаковка данных?
  20. Что понимается в MPI под коммуникатором?
  21. Для чего может потребоваться создание новых коммуникаторов?
  22. Что понимается в MPI под виртуальной топологией?
  23. Какие виды топологий предусмотрены в MPI?
  24. Для чего может оказаться полезным использование виртуальных топологий?
  25. В чем состоят особенности разработки параллельных программ с использованием MPI на алгоритмическом языке Fortran?
  26. Какие основные дополнительные возможности предусмотрены в стандарте MPI-2?

6.12. Задачи и упражнения

Подраздел 6.2.

  1. Разработайте программу для нахождения минимального (максимального) значения среди элементов вектора.
  2. Разработайте программу для вычисления скалярного произведения двух векторов.
  3. Разработайте программу, в которой два процесса многократно обмениваются сообщениями длиной n байт. Выполните эксперименты и оцените зависимость времени выполнения операции данных от длины сообщения. Сравните с теоретическими оценками, построенными по модели Хокни.

    Подраздел 6.3.

  4. Подготовьте варианты ранее разработанных программ с разными режимами выполнения операций передачи данных. Сравните времена выполнения операций передачи данных при разных режимах работы.
  5. Подготовьте варианты ранее разработанных программ с использованием неблокирующего способа выполнения операций передачи данных. Оцените необходимое количество вычислительных операций, для того чтобы полностью совместить передачу данных и вычисления. Разработайте программу, в которой бы полностью отсутствовали задержки вычислений из-за ожидания передаваемых данных.
  6. Выполните задание 3 с использованием операции одновременного выполнения передачи и приема данных. Сравните результаты вычислительных экспериментов.

    Подраздел 6.4.

  7. Разработайте программу-пример для каждой имеющейся в MPI коллективной операции.
  8. Разработайте реализации коллективных операций при помощи парных обменов между процессами. Выполните вычислительные эксперименты и сравните времена выполнения разработанных программ и функций MPI для коллективных операций.
  9. Разработайте программу, выполните эксперименты и сравните результаты для разных алгоритмов реализации операции сбора, обработки и рассылки данных всех процессам (функция MPI_Allreduce).

    Подраздел 6.5.

  10. Разработайте программу-пример для каждого имеющегося в MPI способа конструирования производных типов данных.
  11. Разработайте программу-пример с использованием функций упаковки и распаковки данных. Выполните эксперименты и сравните с результатами при использовании производных типов данных.
  12. Разработайте производные типы данных для строк, столбцов, диагоналей матриц.
  13. Разработайте программу-пример для каждой из рассмотренных функций для управления процессами и коммуникаторами.
  14. Разработайте программу для представления множества процессов в виде прямоугольной решетки. Создайте коммуникаторы для каждой строки и столбца процессов. Выполните коллективную операцию для всех процессов и для одного из созданных коммуникаторов. Сравните время выполнения операции.
  15. Изучите самостоятельно и разработайте программы-примеры для передачи данных между процессами разных коммуникаторов.

    Подраздел 6.7.

  16. Разработайте программу-пример для декартовой топологии.
  17. Разработайте программу-пример для топологии графа.
  18. Разработайте подпрограммы для создания некоторого набора дополнительных виртуальных топологий (звезда, дерево и др.).