Высокопроизводительные вычисления на кластерах. Беликов Д.А - 95 стр.

UptoLike

95
При рассылке функцией SCATTERV используются массивы
Counts и Shifts. В соответствии с их содержимым «0»-процессу по-
сылаются 3300 элементов (33 столбца) матрицы В, «1»-процессу
посылаются 3300 элементов (33 столбца) матрицы В, начиная с
3300-го элемента (с первого элемента 34-го столбца), а «2»-процессу
посылаются оставшиеся 3400 элементов (последние 34 столбца)
матрицы В.
При обмене данными MPI_ALLTOALLV каждый «0»-процесс
посылает всем по 3300 элементов матрицы С (свои рассчитанные 33
столбца) и получает от «1»-процесса 3300 элементов и от
«2»-процесса 3400 элементов матрицы С. Причем рассылка ведется
в таком случае первых 33 столбцов (Shifts2), а получение со сдви-
гами в соответствии с Shifts. Как можно заметить, каждый процесс
отправляет всем одни и те же данные и заботится о правильном рас-
пределении полученных от других процессов данных.
5.3 Задания
1. Написать программу умножения матриц размером 1500х1500.
Оценить время выполнения вычислений для различных вариантов
порядка следования вложенных циклов. Дать объяснение получен-
ным результатам.
2. Написать программу умножения блочных матриц размером
1000х1000. Определить размер блоков, при котором достигается
минимальное время выполнения программы. Дать объяснение по-
лученным результатам. Провести сравнение с подпрограммой
DGEMM из пакета BLAS3.
3. Написать MPI-программу, которая считывает из файла или
вычисляет по заданной формуле вещественную матрицу А={а
ij
}
i=1,2,.. .,n; j=1,2,…,n, рассылает ее по процессорным элементам и
определяет номер строки, максимально удаленной от первой строки
заданной матрицы. Расстояние между k-й и i-й строками матрицы A
определяется как
1
n
j
a
kj
a
ij
. Обеспечить равномерную за-
грузку всех процессорных элементов, участвующих в работе про-
граммы.
4. Написать MPI-программу умножения матрицы A на вектор b.
Параллельная программа должна считывать из файла или вычислять
по заданной формуле вещественную матрицу A размерности n
n и