- •Моделирование и анализ параллельных вычислений.
- •Модель вычислений в виде графа "операции – операнды".
- •Описание схемы выполнения параллельного алгоритма (модель: «операции – операнды»).
- •Определение времени выполнения параллельного алгоритма.
- •Правила разработки алгоритмов.
- •Программирование параллельных алгоритмов.
- •Технология mpi.
- •Введение в библиотеку mpich.
- •Структура параллельной программы с использованием mpi:
- •Передача/прием сообщений между отдельными процессами.
- •Использование модульной структуры.
- •Определение времени выполнения программ.
- •Контроль выполнения программ.
- •Передача данных от одного процесса всем процессам программы.
- •Передача данных от всех процессов одному процессу. Операция редукции.
- •Пример коллективного вызова (без обмена)- коллективная синхронизация.
- •Аварийное завершение параллельной программы
- •Оценка коммуникационных затрат для кластерных систем.
- •Режимы передачи данных mpi.
- •Организация неблокирующих обменов данными между процессами.
- •Одновременное выполнение передачи и приема.
- •Группа процессоров и коммутаторов.
- •Управление группами.
- •Управление коммуникаторами.
- •Показатели эффективности в параллельных алгоритмах.
- •Модельная задача – вычисление частных сумм последовательности числовых значений.
- •Последовательный алгоритм суммирования
- •Каскадная схема суммирования.
- •Каскадная схема с асимптотически ненулевой эффективностью.
- •Построение частичных сумм.
- •Оценка максимального параллелизма.
- •Закон Амдаля
- •Закон Густавсона-Барсиса
- •Анализ масштабируемости параллельных вычислений.
- •Верхняя граница времени выполнения параллельного алгоритма.
- •Факторы, влияющие на производительность, и способы ее повышения.
- •Принципы разработка параллельных алгоритмов.
- •Моделирование (использование моделей) при проектировании параллельных алгоритмов.
- •Этапы разработки параллельных алгоритмов.
- •Разделение вычислительной схемы на независимые части, на основе ее анализа.
- •Определение информационных зависимостей.
- •Масштабирование набора подзадач.
- •Распределение подзадач между процессорами.
- •Умножение матриц при ленточной схеме разделения данных.
- •Определение подзадач.
- •Выделение информационных зависимостей
- •Масштабирование и распределение подзадач по процессорам
- •Анализ эффективности
- •Параллельное решение систем линейных уравнений Алгоритм решения систем линейных уравнений методом Гаусса.
- •Итерация прямого хода алгоритма Гаусса
- •Построение параллельного алгоритма
- •Масштабирование и распределение подзадач по процессорам.
- •Анализ эффективности.
- •Параллельные методы сортировки
- •Принципы распараллеливания
- •Масштабирование параллельных вычислений
- •Пузырьковая сортировка
- •Алгоритм чет-нечетной перестановки
- •Определение подзадач и выделение информационных зависимостей
- •Масштабирование и распределение подзадач по процессорам
- •Анализ эффективности
- •Параллельные вычисления при решении задач на графах.
- •Программная реализация параллельного алгоритма Флойда:
- •Определение подзадач.
- •Анализ эффективности
- •Результаты вычислительных экспериментов для параллельного алгоритма Флойда
- •Работа pvm
- •Структура идентификатора td
- •Модель передачи сообщений
- •Настройка pvm
- •Структура каталога pvm:
- •Наиболее распространенные проблемы
- •Пример простейшей программы
- •Структура программы pvm.
- •Выводы по pvm:
- •Классификация вычислительных систем
- •Алгоритмы предварительного распределения данных (графы)
- •Режимы параллельных вычислений с общей памятью
- •Основные обозначения псевдокода
- •Распределение данных в erew
- •Параллельное программирование с использованием общей памяти
- •Многопоточное программирование
- •Спецификация posix Threads
- •Пример программы с использованием posix Threads
- •Механизмы синхронизации потоков
- •Среда Open mp
- •Основные правила:
- •Синхронизация
- •Обзор средств параллельного и распределенного программирования.
- •Литература:
Структура каталога pvm:
Исполнительные файлы – примера программ.
Конфигурационные файлы.
Исходные тексты консоли.
Документации.
Исходные тексты примеров.
Командные файлы.
Интерактивный режим работы PVM обеспечивается с помощью консоли. Ее можно остановить в любой момент – команда quit. Консоль можно запустить на каждом из хостов. Работа с ней не меняет конфигурацию PVM.
Приглашение ввести команду PVM: PVM>
Примеры команд:
PVM> add do1
PVM> delete do1
PVM> conf – вывести конфигурацию.
Наиболее распространенные проблемы
Неправильное определение переменной окружения PVM_ROOT
Файл с описанием хоста .rhost
Неправильно зарегистрирован пользователь на данном хосте.
Пример простейшей программы
// программа для master
#include "pvm3.h"
main()
{
int err, tid, msgtag;
char buf[100];
printf("master:tid t%i\n", pvm_mytid());
err= pvm_spawn("f1", (char**)0, 0, "",1, &tid);
if (err == 1) {
msgtag = 1;
pvm_recv(tid, msgtag);
pvm_upkstr(buf);
printf("Получено сообщение от tid= %i: %s\n", tid, buf);
}
else printf("Ошибка\n");
pvm_exit();
}
Лекция 12
Структура программы pvm.
f1
#include “pvm3.h”
main ()
{
int ptid, msgtag;
char buf [100];
ptid=pvm-parent (); // определяется идентификатор базового процесса
strcopy (buf, “Задача f1”); // занесение в буфер
msgtag=1;
pvm-initsend ();
PvmDataDefault (); //режимы инициирования по умолчанию
pvm_pkstr (buf);
pvm_send (ptid, msgtag);
pvm_exit ();
}
Выводы по pvm:
Если платформа в виде многопроцессорного компьютера, то рекомендуется использовать технологию MPI;
Если предполагается использовать различные по настройкам режимы обмена, то используем MPI;
Если используется гетерогенный кластер (разнородный), то используем PVM;
Динамическое распределение задач, то используем PVM.
Классификация вычислительных систем
Одним из наиболее распространенных способов классификации ЭВМ является систематика Флинна (Flynn), в рамках которой основное внимание при анализе архитектуры вычислительных систем уделяется способам взаимодействия последовательностей (потоков) выполняемых команд и обрабатываемых данных. При таком подходе различают следующие основные типы систем:
Рис. 13
I – поток инструкций
D – поток данных
Рис. 14
За одну операцию обрабатывается вектор данных
Рис. 15
Много операций над одним и тем же числом.
Рис. 16
Алгоритмы предварительного распределения данных (графы)
Модель PRAM (параллельный произвольный доступ к памяти - parallel random acess memory)- вычислительная модель, состоящая из некоторого числа синхронизованных процессоров, имеющих доступ к общей памяти. В модели предусмотрены режимы Exclusive, когда одновременный доступ к ячейке памяти разрешается только одному процессору, и Concurrent, когда одновременный доступ к ячейке памяти разрешается нескольким процессорам. Процессоры сильно связаны и используют общий блок памяти. У каждого процессора есть индивидуальная регистровая память.
Все процессоры осуществляют стандартный цикл обработки.
чтение данного
обработка
запись в память
Эти циклы могут выполняться параллельно. При этом возможны коллизии – обращение различных процессоров к одному полю памяти. Коллизии чтения и записи. Разрешаются в двух режимах:
Конкурентный доступ
Исключительный доступ
Коллизии чтения
Конкурентный режим доступа. К одной и той же ячейке могут обращаться несколько процессоров одновременно.
Исключительный доступ. Читать из поля памяти может в каждый момент времени только единственный процессор.
Коллизии записи
Конкурентный доступ к памяти. Коллизии разрешаются приоритетами, приоритет может совпадать с номером процессора, может вычисляться в процессе решения задачи, логическое управление конкурентным доступом. Запись допускается, если процессоры записывают одно и то же значение, записывается минимальное из значений, которые они записывают. Арифметические подходы: попытка записи нескольких значений, то записывается их сложение или умножение.
Исключительный подход. Любая коллизия при записи фиксируется как ошибка.