Параллельные аппаратные архитектуры и модели программирования Традиционная архитектура фон Неймана Расширение традиционной архитектуры Сопроцессоры Многоядерные.

Презентация:



Advertisements
Похожие презентации
Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 4 Томский политехнический университет.
Advertisements

Лекция 6 Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SIMD модель параллельного.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 8 Томский политехнический университет.
Кафедра ЮНЕСКО по НИТ1 Параллельное программирование MPI – massage passing interface.
MPI за 90 минут Метод погружения Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Практические основы параллельного программирования. Посыпкин Михаил Анатольевич
Кафедра ЮНЕСКО по НИТ1 Параллельное программирование MPI – message passing interface Власенко Андрей Юрьевич.
Интерфейс передачи сообщений: MPI. Базовые архитектуры Массивно-параллельные системы (MPP) Симметричные мультипроцессорные системы (SMP) Системы с неоднородным.
Кафедра ЮНЕСКО по НИТ1 Передача упакованных данных Параллельное программирование.
Кафедра ЮНЕСКО по НИТ1 Коммуникационные операции «точка-точка» параллельное программирование.
Основы параллельного программирования с использованием MPI Лекция 5 Немнюгин Сергей Андреевич Санкт-Петербургский государственный университет физический.
Мелкозернистый параллелизм клеточно-автоматных моделей пространственной динамики Лекция 3 Руководитель: д.т.н., проф., Бандман О.Л. Лектор: к.ф.-м.н.,
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 4 Методы разработки параллельных программ при использования интерфейса передачи.
Введение в параллельные вычисления. Технология программирования MPI (день четвертый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Основы параллельного программирования с использованием MPI Лекция 3 Немнюгин Сергей Андреевич Санкт-Петербургский государственный университет физический.
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Раздел 4_1. Параллельное программирование.
Реализация параллельного алгоритма с использованием MPI.
Стадник Е. Г. ФПМИ НГТУ Руководитель: Городничев М.А., м.н.с. ИВМ и МГ СО РАН.
Транксрипт:

Параллельные аппаратные архитектуры и модели программирования Традиционная архитектура фон Неймана Расширение традиционной архитектуры Сопроцессоры Многоядерные процессоры Мультипроцессоры Мультикомпьютеры Параллелизм данных Параллелизм задач Распараллеливание на уровне процессов Распараллеливание на уровне потоков

ЦП ОЗУ Системная шина АЛУ УУ A2A2 ………………….. 35 ………………….. E7 ………………… XY A0A0 A1 FF К1 К2 К3 К4 КnКn CD/DVD дисковод HDD Модем Монитор Контроллеры Внешние устройства Традиционная архитектура фон Неймана

Расширение традиционной архитектуры Кэш 1-го, 2-го и 3-го уровней DRAM, шины, контроллеры (северный и южный мосты), тактовая частота шины памяти, пропускная способность, латентность. SRAM на плате процессора. Кэш данных и кэш команд. Конвейер Суперскалярная архитектура Сопроцессоры – операции с плавающей точкой, MMX. Видеокарта.

Устройство управления ПЭ … Соединительная сеть Разделяемая память SIMD (Single Instruction Stream – Multiple Data Stream) - один поток команд и несколько потоков данных А) Разделяемая память (Shared memory)

Устройство управления … Соединительная сеть ПЭ ЛП ПЭ ЛП ПЭ ЛП Б) Распределенная память (Distributed memory)

УУ АЛУ ЦПУ Потоки команд УУ АЛУ ЦПУ УУ АЛУ ЦПУ … Соединительная сеть Разделяемая память Потоки данных MIMD (Multiple Instruction Stream – Multiple Data Stream) - несколько потоков команд и несколько потоков данных А) Разделяемая память (Shared memory)

УУ АЛУ ЦПУ Потоки команд УУ АЛУ ЦПУ УУ АЛУ ЦПУ … Соединительная сеть ЛП Потоки данных Б) Распределенная память (Distributed memory)

Модель передачи сообщений – программа порождает несколько задач, каждой задаче присваивается уникальный идентификатор, обмен данными осуществляется посредством сообщений. Модель параллелизма данных – одна операция применяется к множеству элементов некоторой структуры данных. Модель разделяемой памяти – задачи имеют общее адресное пространство, в программе не описываются сообщения, важное место занимает синхронизация. Закон Амдала: где K – коэффициент ускорения (оценка эффективности), S - доля последовательной части программы, P – доля параллельной части программы, N – количество процессоров, необходимых для идеального распараллеливания. Некоторые модели параллельного программирования:

Интерфейс параллельного программирования MPI ( Message Passing Interface ). Пример программы: #include #define BUF_LEN 256 int main(int argc, char* argv[]){ int my_rank; int np; int src; int dest; int tag=0; char message[BUF_LEN]; MPI_Status status; test.c

MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); MPI_Comm_size(MPI_COMM_WORLD,&np); if(my_rank!=0){ sprintf(message, "A message from process %i.", my_rank); dest=0; MPI_Send(message, strlen(message)+1, MPI_CHAR,dest, tag, MPI_COMM_WORLD); } else{ for(src=1;src

Некоторые вызовы MPI: int MPI_Init(int* argc, char*** argv); //инициализация библиотеки MPI int MPI_Finalize(void); //освобождение ресурсов, необходимых MPI Коммуникатор – это идентификатор (объект типа MPI_Comm) группы порожденных программой параллельных процессов, которые могут обмениваться сообщениями. MPI_COMM_WORLD – идентификатор группы всех порожденных программой параллельных процессов. int MPI_Comm_size(MPI_Comm comm, int* size); - определяет число процессов в группе (коммуникаторе). int MPI_Comm_rank(MPI_Comm comm., int* rank); - определяет номер (ранг) процесса в группе.

int MPI_Ssend(void* buf, int buf_size, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); - посылка сообщения (с уведомлением). buf – адрес буфера передаваемых данных, buf_size - количество элементов данного типа данных в буфере, datatype – тип передаваемых данных, dest – номер получателя в группе, tag – тег сообщения (данному получателю могут отправляться сообщения с разными тегами), comm – коммуникатор. int MPI_Recv(void* buf, int buf_size, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Status status); status – структура данных, содержащая информацию о сообщении.

Типы данных MPI: MPI_CHARsigned char MPI_INTsigned int MPI_LONGsigned long int MPI_DOUBLEdouble MPI_BYTEunsigned char …………………………………………………………… Реализации MPI: MPICH, OpenMPI. OpenMPI_v _win32. exe MPICH2: p?s=downloads p?s=downloads

>mpicxx test.c OpenMPI:

MPICH2: >cl test.c mpi.lib