В транспьютерной матрице размером 5*5, в каждом узле которой находится один процесс, необходимо выполнить операцию сбора данных (длиной 4 байта) от всех процессов (MPI_ALLGATHER). Данные, посылаемые i-ым процессом, помещаются в i-ый элемент результирующего буфера каждого процесса. После завершения операции содержимое результирующих буферов у всех процессов должно быть одинаково. Реализовать программу, моделирующую выполнение операции MPI_ALLGATHER на транспьютерной матрице при помощи пересылок MPI типа точка-точка. Получить временную оценку работы алгоритма. Оценить сколько времени потребуется для выполнения операции MPI_ALLGATHER, если все процессы выдали ее одновременно. Время старта равно 100, время передачи байта равно 1 (Ts=100, Tb=1). Процессорные операции, включая чтение из памяти и запись в память, считаются бесконечно быстрыми.
Доработать MPI-программу, реализованную в рамках курса “Суперкомпьютеры и параллельная обработка данных”. Добавить контрольные точки для продолжения работы программы в случае сбоя. Реализовать один из 3-х сценариев работы после сбоя: a) продолжить работу программы только на “исправных” процессах; б) вместо процессов, вышедших из строя, создать новые MPI-процессы, которые необходимо использовать для продолжения расчетов; в) при запуске программы на счет сразу запустить некоторое дополнительное количество MPI-процессов, которые использовать в случае сбоя. Подготовить отчет о выполнении задания, включающий описание алгоритма, детали реализации, а также временные оценки работы алгоритма. Отчет и текст программы необходимо разместить в трекере.
Прошлогодней задачей является: Разработка параллельной версии программы для умножения матрицы на вектор. Реализован сценарий работы a) – в случае сбоя продолжить работу программы только на “исправных” процессах.