- •Содержание курса
- •Общие сведения.
- •Топологии Виды топологий
- •Программирование «Трубы»
- •Программирование «Звезды»
- •Программирование «Клика»
- •Синхронный обмен данными
- •Функции синхронного обмена данными
- •Примеры:
- •Задание 1:
- •Задание 2:
- •Задание 3:
- •Асинхронный обмен данными
- •Функции необходимые для асинхронного обмена данными
- •Пример:
- •Определение времени вычисления на Parsytec.
- •Определение времени в программе
- •Структура компьютера
- •Константы, типы данных, структуры mpi
- •Тип данных mpi_Datatype
- •Предопределённые константы
- •Сообщения
- •Функции mpi
- •Функция передачи данных с блокировкой
- •Дополнительные функции
- •Виды параллелизма Геометрический (распараллеливание по пространству)
- •Функциональный (распараллеливание по процессам)
- •Конвейерный
- •Параллелизм типа принятия коллективного решения
- •Ускорение и эффективность вычислений на мвс
- •Метод Рунге-Кутта 4
- •2. Расчётные формулы:
- •3. Алгоритм распараллеливания.
- •Метод прогноза коррекции
- •2. Расчётные формулы
- •3. Алгоритм распараллеливания.
- •4. Ускорение вычислений.
- •4. Ускорение и точность вычислений.
- •Решение уравнений в частных производных
- •Колебания мембраны
- •2. Расчетные формулы
- •Решение стационарных уравнений на мвс
- •2. Расчётные формулы
- •Алгоритм распараллеливания.
- •Ускорение вычислений
- •Оптимизация на мвс
- •Расчётные формулы
- •Алгоритм распараллеливания
- •Ускорение вычислений.
Определение времени вычисления на Parsytec.
#include <time.h>
time_t time(timet*tloс);
tipedef long time_t
Функция time определяет относительное время в секундах и записывает по адресу tloс. Функция возвращает определенное время в секундах. Ошибка для данной функции не предусмотрена.
time_t tt, tloc;
tt=time(&tloс);
Так как tt=tloc можно записывать time(&tloс);
Определение времени в программе
time_t tn, tk;
int deltat, min, sec;
// начало вычислений
time (&tn);
……………// вычисления
// окончание вычислений
time (&tk);
deltat=tk-tn;
min=(int)(deltat/60);
sec=deltat %60;
printf (“время счета равно %d min, %d sec \n”, min, sec);
Сравнивать эффективность распараллеливания необходимо на Parsytec в однопроцессорной и многопроцессорной (на одной и той же машине)
МВС 1000M
Структура компьютера
http://www.jscc.ru Всего 768 процессоров
flating-point operators per second flops
Использована архитектура квази-матрица – трёхмерная решётка. Что позволяет наращивать программные модули без изменения топологии. Используется на операционных системах Linux и систематически применяется на базе C++.
MPI-интерфейс передачи сообщений
Среда для параллельного программирования реализованная на базе MPI
Message Passing Interface – программная среда, позволяющая осуществлять обмен данными между процессорами.
MPI-программа – совокупность параллельных взаимодействующих процессов. Процессы порождаются один раз, образуя параллельную часть программы. В процессе выполнения MPI-программы порождать дополнительные процессы или уничтожать существующие недопустимо.
Основные понятия MPI:
Процесс;
Группа процессов;
Коммуникатор.
Процесс – исполнение программы на одном процессоре, причем не имеет значения, есть ли там параллельные ветви или операции обмена данными последующий программный код.
Каждый процесс имеет уникальный номер – целое неотрицательное число. Процессы не имеют общей памяти, общих данных. Каждый процесс имеет своё собственное адресное пространство. Процессы взаимодействуют друг с другом с помощью явного обмена данными.
Группа процессов – совокупность процессов, каждый из которых в группе имеет свой уникальный номер. Размер группы произволен. Процессы в группе взаимодействуют между собой с помощью коммуникатора.
Коммуникатор – осуществляет обмен данными между процессами и их синхронизацию. Каждый коммуникатор имеет своё коммуникационное пространство. Различные коммуникаторы друг с другом не взаимодействуют и не влияют друг на друга. Коммуникатор создаётся сразу же при создании группы. Вместе с тем при запуске MPI-программы считается, что создаётся всеобъемлющая группа с всеобъемлющим коммуникатором. Его предопределённое имя MPI_COMM_WORLD.
Замечания:
В MPI нет явного распределения процессов по процессорам. Предполагается, что операционная система сама распределяет процессы по процессорам.
Все предопределяемые константы, функции, типы данных в MPI имеют префикс MPI.
Все MPI-функции прописаны в «MPI.h» #include «mpi.h»