Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемВладислава Герцена
1 Параллельные аппаратные архитектуры и модели программирования Традиционная архитектура фон Неймана Расширение традиционной архитектуры Сопроцессоры Многоядерные процессоры Мультипроцессоры Мультикомпьютеры Параллелизм данных Параллелизм задач Распараллеливание на уровне процессов Распараллеливание на уровне потоков
2 ЦП ОЗУ Системная шина АЛУ УУ A2A2 ………………….. 35 ………………….. E7 ………………… XY A0A0 A1 FF К1 К2 К3 К4 КnКn CD/DVD дисковод HDD Модем Монитор Контроллеры Внешние устройства Традиционная архитектура фон Неймана
3 Расширение традиционной архитектуры Кэш 1-го, 2-го и 3-го уровней DRAM, шины, контроллеры (северный и южный мосты), тактовая частота шины памяти, пропускная способность, латентность. SRAM на плате процессора. Кэш данных и кэш команд. Конвейер Суперскалярная архитектура Сопроцессоры – операции с плавающей точкой, MMX. Видеокарта.
4 Устройство управления ПЭ … Соединительная сеть Разделяемая память SIMD (Single Instruction Stream – Multiple Data Stream) - один поток команд и несколько потоков данных А) Разделяемая память (Shared memory)
5 Устройство управления … Соединительная сеть ПЭ ЛП ПЭ ЛП ПЭ ЛП Б) Распределенная память (Distributed memory)
6 УУ АЛУ ЦПУ Потоки команд УУ АЛУ ЦПУ УУ АЛУ ЦПУ … Соединительная сеть Разделяемая память Потоки данных MIMD (Multiple Instruction Stream – Multiple Data Stream) - несколько потоков команд и несколько потоков данных А) Разделяемая память (Shared memory)
7 УУ АЛУ ЦПУ Потоки команд УУ АЛУ ЦПУ УУ АЛУ ЦПУ … Соединительная сеть ЛП Потоки данных Б) Распределенная память (Distributed memory)
8 Модель передачи сообщений – программа порождает несколько задач, каждой задаче присваивается уникальный идентификатор, обмен данными осуществляется посредством сообщений. Модель параллелизма данных – одна операция применяется к множеству элементов некоторой структуры данных. Модель разделяемой памяти – задачи имеют общее адресное пространство, в программе не описываются сообщения, важное место занимает синхронизация. Закон Амдала: где K – коэффициент ускорения (оценка эффективности), S - доля последовательной части программы, P – доля параллельной части программы, N – количество процессоров, необходимых для идеального распараллеливания. Некоторые модели параллельного программирования:
9 Интерфейс параллельного программирования 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
10 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
11 Некоторые вызовы 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); - определяет номер (ранг) процесса в группе.
12 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 – структура данных, содержащая информацию о сообщении.
13 Типы данных 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
14 >mpicxx test.c OpenMPI:
15 MPICH2: >cl test.c mpi.lib
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.