Теория и практика параллельных вычислений



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


Подраздел 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. Разработайте подпрограммы для создания некоторого набора дополнительных виртуальных топологий (звезда, дерево и др.).




Содержание  Назад  Вперед