Основы MPI

6 500 руб. за проект
24 ноября 2020, 16:30 • 0 откликов • 40 просмотров
Для пересылки сообщений с помощью MPI между процессами на одном узле и между процессами на разных узлах.


2.1.1) Определение латенси (среднее значение и распределение)


2.1.2) Определение пропускной способности (зависимость от размера сообщения и максимальное значение)

Оба пункта нужно выполнить для пересылки сообщений с помощью MPI между процессами на одном узле и между процессами на разных узлах.
Сделать выводы о применимости модели для описания пересылки сообщений.



2.1.3) Для интегрирования с вычислением числа Пи необходимо
а) получить зависимость ускорения и эффективности в зависимости от числа процессоров и числа разбиений - параметры нужно подобрать такие, чтобы зависимости получались показательные, как обсуждали на лекции,
б) аппроксимировать законом Амдала и теоретической формулой, сделать выводы о значениях коэффициентов, максимальном ускорении, оптимальном числе процессов



2.2)

Разработайте модель (теор.формулу), выполните оценку и постройте график для ускорения. Оцените максимально достижимое ускорение и оптимальное число процессоров.�Сравните теоретическое ускорение с расчётным ускорением для задачи поиска максимального и минимального значений для заданного набора числовых данных

2.3)
Для выбранной задачи (вычисления числа Пи, задача из п.2.2, stencil или другая подходящая задача) выполнить последовательную оптимизацию и на графике указать время выполнения программы после каждой оптимизации с указанием ожидаемого ускорения (обсуждение причин отличия/совпадения ожидаемого с реальным).



Минимальный список оптимизаций: векторизация, оптимизация работы с памятью, многопоточность, mpi, оптимизация опциями комиплятора.
Можно расширить список в глубину.

В качестве примера расмотрим возможное углубление в оптимизацию работы с памятью:
- оптимизировать работу с промахами мимо кеша,
- максимизация пространственной локальности, читая объекты из памяти последовательно, в том порядке, в котором они в ней расположены,
- максимизация временной локальности, используя объекты данных как можно чаще после того, как они были прочитаны из памяти.



Для оптимизаций можно использовать прагмы openmp и компилятора, опции компилятора, команды MPI и др.


2.3 выбраны из разных классов (memory-bound, compute-bound) с проверкой (визуализацией на графике roofline) класса задачи до начала оптимизации и после всех оптимизаций. Сделать выводы о направлении дальнейших оптимизаций.