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