Разделы презентаций


Архитектура современного компьютера

Содержание

Основные модели параллельного выполнения программы на многопроцессорных компьютерах:Модель передачи сообщений MPIМодель параллелизма по данным HPFМодель с общей памятью OpenMP.

Слайды и текст этой презентации

Слайд 1
«АРХИТЕКТУРА СОВРЕМЕННОГО КОМПЬЮТЕРА: КОНЦЕПЦИИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ»

«АРХИТЕКТУРА СОВРЕМЕННОГО КОМПЬЮТЕРА:  КОНЦЕПЦИИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ»

Слайд 2Основные модели параллельного выполнения программы на многопроцессорных компьютерах:

Модель передачи сообщений

MPI

Модель параллелизма по данным HPF

Модель с общей памятью OpenMP.






Основные модели параллельного выполнения программы на многопроцессорных компьютерах:Модель передачи сообщений MPIМодель параллелизма по данным HPFМодель с общей

Слайд 3Модель передачи сообщений. MPI
Параллельная программа представляет собой множество процессов, каждый

из которых имеет собственное локальное адресное пространство
Взаимодействие процессов - обмен

данными и синхронизация - осуществляется посредством передачи сообщений.

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

Обобщение и стандартизация различных библиотек передачи сообщений привели в 1993 году к разработке стандарта MPI (Message Passing Interface).



Модель передачи сообщений. MPIПараллельная программа представляет собой множество процессов, каждый из которых имеет собственное локальное адресное пространствоВзаимодействие

Слайд 4Основные достоинства MPI (по сравнению с интерфейсами других коммуникационных библиотек)
Возможность использования

в языках Фортран, С, С++;
Предоставление возможностей для совмещения обменов сообщениями

и вычислений;
Предоставление режимов передачи сообщений, позволяющих избежать излишнего копирования информации для буферизации;

Широкий набор коллективных операций (например, сбор информации с разных процессоров), допускающих эффективную реализацию

Широкий набор редукционных операций (например, суммирование расположенных на разных процессорах данных, или нахождение их максимальных или минимальных значений), упрощающих работу программиста и допускающих эффективную реализацию

Удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки;

Возможность задания типа передаваемой информации, что позволяет обеспечить ее автоматическое преобразование в случае различий в представлении данных на разных узлах системы.




Основные достоинства MPI (по сравнению с интерфейсами других коммуникационных библиотек)Возможность использования в языках Фортран, С, С++;Предоставление возможностей

Слайд 5Недостатки MPI
слишком громоздкий и сложный интерфейс для прикладного программиста, а

также для реализации

------------------------------------------------------------
В настоящее время практически не существует реализаций MPI,

в которых в полной мере обеспечивается совмещение обменов с вычислениями.
------------------------------------------------------------




Недостатки MPIслишком громоздкий и сложный интерфейс для прикладного программиста, а также для реализации------------------------------------------------------------В настоящее время практически не

Слайд 6MPI-2
Появившийся в 1997 проект стандарта MPI-2 выглядит еще более громоздким

и неподъемным для полной реализации.
Предусматривается развитие в следующих направлениях:
Динамическое создание

и уничтожение процессов

Односторонние коммуникации и средства синхронизации для организации взаимодействия процессов через общую память (для эффективной работы на системах с непосредственным доступом процессоров к памяти других процессоров)

Параллельные операции ввода-вывода (для эффективного использования существующих возможностей параллельного доступа многих процессоров к различным дисковым устройствам)



MPI-2Появившийся в 1997 проект стандарта MPI-2 выглядит еще более громоздким и неподъемным для полной реализации.Предусматривается развитие в

Слайд 8Модель параллелизма по данным. HPF
Отсутствие понятия процесса и, как

следствие, явная передача сообщений или явная синхронизация
Данные последовательной программы распределяются

программистом по процессорам параллельной машины.

Последовательная программа преобразуется компилятором в параллельную программу, выполняющуюся либо в модели передачи сообщений, либо в модели с общей памятью.

При этом вычисления распределяются по правилу собственных вычислений: каждый процессор выполняет только вычисления собственных данных, т.е. данных, распределенных на этот процессор.



Модель параллелизма по данным. HPF Отсутствие понятия процесса и, как следствие, явная передача сообщений или явная синхронизацияДанные

Слайд 9Достоинства модели параллелизма

Параллелизм по данным – естественный параллелизм вычислительных

задач.
В модели параллелизма по данным сохраняется последовательный стиль программирования.
Распределение

вычисляемых данных между процессорами – это не только самый компактный способ задать распределение работы между процессорами, но и способ повышения локализации данных. (лучше используется кэш-память, меньше подкачек с диска страниц виртуальной памяти, меньше пересылок данных с других процессоров).



Достоинства модели параллелизма Параллелизм по данным – естественный параллелизм вычислительных задач.В модели параллелизма по данным сохраняется последовательный

Слайд 10Модель с общей памятью OpenMP
Процессы разделяют общее адресное пространство
Программист должен

явно специфицировать общие данные и упорядочивать доступ к ним с

помощью средств синхронизации

Появление большого количества языков программирования, реализующих данную концепцию, например Modula-2, ADA

Процессоры соединены с модулями памяти либо через общую шину, либо через коммутатор. Это позволяет обеспечить общее адресное пространство нескольким процессорам.

Интерфейс OpenMP задуман как стандарт для программирования на масштабируемых SMP-системах (SSMP,ccNUMA, etc.) в модели общей памяти (shared memory model).



Модель с общей памятью OpenMPПроцессы разделяют общее адресное пространствоПрограммист должен явно специфицировать общие данные и упорядочивать доступ

Слайд 11Механизм выполнения
Одним из механизмов выполнения параллельных процессов стало многонитевое программирование

«легковесных процессов», для которых не создаются полноценные процессы с отдельным

адресным пространством, но которые все же могут распределяться по процессорам. Появился стандарт создания нитей POSIX thread, поддерживаемый всеми ведущими производителями.

Программа на языке OpenMP является последовательно-параллельной. Последовательные участки выполняются корневым процессом. Для выполнения параллельных участков образуются нити.




Механизм выполненияОдним из механизмов выполнения параллельных процессов стало многонитевое программирование «легковесных процессов», для которых не создаются полноценные

Слайд 12 OpenMP реализует параллельные вычисления с помощью многопоточности, в которой

«главный» поток создает набор подчиненных потоков и задача распределяется между

ними.

Предполагается, что потоки выполняются параллельно на машине с несколькими процессорами (количество процессоров не обязательно должно быть больше или равно количеству потоков).

Параллельная программа представляет собой систему нитей (threads), взаимодействующих посредством общих переменных и примитивов синхронизации.

Нить — легковесный процесс, имеющий с другими нитями общие ресурсы, включая общую оперативную память.

Эта модель может использоваться только на многопроцессорных системах с общей памятью или с DSM (Distributed Shared Memory — распределенная общая память)




OpenMP реализует параллельные вычисления с помощью многопоточности, в которой «главный» поток создает набор подчиненных потоков и

Слайд 13Какие преимущества OpenMP дает разработчику?
Идеально подходит для разработчиков, желающих быстро

распараллелить свои вычислительные программы с большими параллельными циклами. Разработчик не

создает новую параллельную программу, а просто последовательно добавляет в текст последовательной программы OpenMP-директивы

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

Программа на однопроцессорной платформе может быть использована в качестве последовательной программы, т.е. нет необходимости поддерживать последовательную и параллельную версии.




Какие преимущества OpenMP дает разработчику?Идеально подходит для разработчиков, желающих быстро распараллелить свои вычислительные программы с большими параллельными

Слайд 14Недостатки OpenMP
Ограниченность его области применения (мультипроцессоры и DSM-кластеры)

Имеющиеся в нем

средства распараллеливания циклов с зависимостями по данным являются слишком низкоуровневыми



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



Недостатки OpenMPОграниченность его области применения (мультипроцессоры и DSM-кластеры)Имеющиеся в нем средства распараллеливания циклов с зависимостями по данным

Слайд 15На примере простой программы умножения матриц можно увидеть, как использовать

OpenMP для параллелизации программы. Рассмотрим следующий небольшой фрагмент кода умножения

двух матриц.

На каждом уровне вложенности циклов тела циклов могут выполняться независимо друг от друга. Чтобы распараллелить приведенный код вставим прагму #pragma omp parallel for перед самым внешним циклом, так как это даст наибольший выигрыш в производительности. В распараллеленном цикле переменные array, array1, array2 и dim являются общими для потоков, а переменные i, j, k являются частными для каждого потока. Приведенный выше код теперь становится таким:

for (i = 0; i < dim; i++)
{ for (j = 0; j < dim; j++)
{ for (k = 0; k < dim; k++)
{array[i][j] += array1[i][k] * array2[k][j];}
}
}

#pragma omp parallel for shared(array, array1, array2, dim) private(i, j, k)
for (i = 0; i < dim; i++)
{ for (j = 0; j < dim; j++)
{ for (k = 0; k < dim; k++)
{array[ii[j] = array1[i][k] * array2[k][jj;}
}
}

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ OPENMP


На примере простой программы умножения матриц можно увидеть, как использовать OpenMP для параллелизации программы. Рассмотрим следующий небольшой

Слайд 16#include
#include “mpi.h”
int main (int argc,char* argv[])
{ int rank,

n, i, message;
MPI_Status status;
MPI_Init(&argc,

&argv);
MPI_Comm_size(MPI_COMM_WORLD, &n);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank= =0)
{ printf (“\n Hello from process %3d”, rank);
for (i=1;i { MPI_Recv(&message,1,MPI_INT, MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD, &Status);
printf (“\n Hello from process %3d”, message);
}
}
else MPI_Send(&rank,1,MPI_INT, 0,0,MPI_COMM_WORLD);
MPI_Finalize ();
Return 0;
}


#include #include “mpi.h”int main (int argc,char* argv[]){  int rank, n, i, message;   MPI_Status status;

Слайд 17#include “mpi.h” //
# include //
#include //
Int

main(int argc,char**argv)
Int myrank,np,I,n,y,s1,s2,x(20),a(10),b(10),m=n/2;
File *dat,*res;
dat=fopen(“d: ,”r”);
res=fopen(“d: “,”w”);
MPI_Init(&argc,&argv);
MPI_Status

status;
MPI_Comm_size(MPI_COMM_WORLD,&np);
MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
If (myrank==0)
{ //input array X from file
………..
//Divide array X into two arrays A and B
For (i=0; I{A[i]=X[i];
B[i]=X[i+n/2];
}
m=n/2;
MPI_Send(A[0],m,MPI_INT,1,98,MPI_COMM_WORLD);
MPI_Send(B[0],m,MPI_INT,2,99,MPI_COMM_WORLD);
MPI_Recv(S1,1,MPI_INT,1,97,MPI_COMM_WORLD, MPI_Status *status);



#include “mpi.h” //  # include  //#include //Int main(int argc,char**argv)Int myrank,np,I,n,y,s1,s2,x(20),a(10),b(10),m=n/2;File *dat,*res;dat=fopen(“d:   ,”r”);res=fopen(“d:

Слайд 18MPI_Recv(s2,1,MPI_INT,2,96,MPI_COMM_WORLD, MPI_Status *status);
Y=s1+s2;
fprintf(res,”The sum of array is = 5d “,y);
fclose(dat);
fclose(res);
}
Else
{

{if (myrank ==1)
{ MPI_Recv(A[0],m,MPI_INT,0,98,MPI_COMM_WORLD, MPI_Status *status);
S1=0;
For (i=0; I

for process 2
{ MPI_Recv(B[0],m,MPI_INT,0,99,MPI_COMM_WORLD, MPI_Status *status);
S2=0;
For (i=0; IMPI_Send(s2,1,MPI_INT,0,96,MPI_COMM_WORLD);
}
} }
MPI_Finalize();
}



MPI_Recv(s2,1,MPI_INT,2,96,MPI_COMM_WORLD, MPI_Status *status);Y=s1+s2;fprintf(res,”The sum of array is = 5d “,y);fclose(dat);fclose(res);}Else{ {if (myrank ==1){ MPI_Recv(A[0],m,MPI_INT,0,98,MPI_COMM_WORLD, MPI_Status *status);S1=0;For (i=0;

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика