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

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

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?

Подраздел 5.2.

1. Разработайте программу для нахождения минимального (максимального) значения среди элементов вектора.

2. Разработайте программу для вычисления скалярного произведения двух векторов.

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

Подраздел 5.3.

4. Подготовьте варианты ранее разработанных программ с разными режимами выполнения операций передачи данных. Сравните время выполнения операций передачи данных при разных режимах работы.

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

6. Выполните задание 3 с использованием операции одновременного выполнения передачи и приема данных. Сравните результаты вычислительных экспериментов.

Подраздел 5.4.

7. Разработайте программу-пример для каждой имеющейся в MPI коллективной операции.

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

9. Разработайте программу, выполните эксперименты и сравните результаты для разных алгоритмов реализации операции сбора, обработки и рассылки данных всех процессам (функция MPI_Allreduce).

Подраздел 5.5.

10. Разработайте программу-пример для каждого имеющегося в MPI способа конструирования производных типов данных.

11. Разработайте программу-пример с использованием функций упаковки и распаковки данных. Выполните эксперименты и сравните с результатами при использовании производных типов данных.

12. Разработайте производные типы данных для строк, столбцов, диагоналей матриц.

13. Разработайте программу-пример для каждой из рассмотренных функций для управления процессами и коммуникаторами.

14. Разработайте программу для представления множества процессов в виде прямоугольной решетки. Создайте коммуникаторы для каждой строки и столбца процессов. Выполните коллективную операцию для всех процессов и для одного из созданных коммуникаторов. Сравните время выполнения операции.

15. Изучите самостоятельно и разработайте программы-примеры для передачи данных между процессами разных коммуникаторов.

Подраздел 5.7.

16. Разработайте программу-пример для декартовой топологии.

17. Разработайте программу-пример для топологии графа.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: