Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPI_-_MKM-РЕДАКТИРОВАННЫЙ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
363.36 Кб
Скачать

2.Коммуникации точка/точка. Примеры использования фукнции mpi_Send(), mpi_Recv.

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

Задача 1 передает:

int buf[10];

MPI_Send( buf, 5, MPI_INT, 1, 0, MPI_COMM_WORLD );

Задача 2 принимает:

int buf[10];

MPI_Status status;

MPI_Recv( buf, 10, MPI_INT, 0, 0, MPI_COMM_WORLD, &status );

int MPI_Recv (void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) -

3.Напишите программу параллельного вычисления определенного интеграла от функции

2*(x+2*x*x/1200.0) в интервале [0,1].

Метод левых прямоугольников

double f(double x)

{return 2*(x+2*x*x/1200);} // iskomyi integral

int main(int argc,char **argv)

{

int size,rank;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD,&rank);

MPI_Comm_size(MPI_COMM_WORLD,&size);

int n=1000,i,d; // 1000 - uzly

float a=0, b=1, h=(b-a)/n,s=0,r=0; //a i b -nachalo i konec otrezka

d=n/(size-1);

if (rank!=size-1) // schitaut vse processy, krome poslednego

{ for (i=rank*d; i<(rank+1)*d; i++) { s=s+h*f(a+i*h); }

MPI_Send(&s,1,MPI_FLOAT,size-1,1,MPI_COMM_WORLD);}

else

{ for (i=0; i<size-1; i++) // poslednii process vse sobiraet

{ MPI_Recv(&s,1,MPI_FLOAT,i,1,MPI_COMM_WORLD, &status); r+=s; } }

MPI_Finalize();}

14 Сурак

1. Таксономия Флинна. Архитектуры sisd, simd.

По Флинну принято классифицировать все возможные архитектуры компьютеров на четыре категории: SISD (Single Instruction Stream –Single Data Stream) – одинпотоккомандиодинпотокданных; SIMD (Single Instruction Stream –Multiple Data Stream) – одинпотоккомандимножествопотоковданных; MISD (Multiple Instruction Stream –Single Data Stream) – множествопотоковкомандиодинпотокданных; MIMD (Multiple Instruction Stream –Multiple Data Stream) – множество потоков команд и множество потоков данных.SISD компьютеры это обычные, "традиционные" последовательные компьютеры, в которых в каждый момент времени выполняется лишь одна операция над одним элементом данных (числовым или каким-либо другим значением). Иногда сюда относят и некоторые типы векторных компьютеров, это зависит от того, что понимать под потоком данных.SIMD компьютеры состоят из одного командного процессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах.

2.Что такое mpi ? Основные концепции и возможности.

Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком  и другими. MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90,Java, Си и Си++.

В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики. Базовым механизмом связи между MPI процессами является передача и приём сообщений. Сообщение несёт в себе передаваемые данные и информацию, позволяющую принимающей стороне осуществлять их выборочный приём:отправитель — ранг (номер в группе) отправителя сообщения;получатель — ранг получателя;признак — может использоваться для разделения различных видов сообщений;коммуникатор — код группы процессов.

В числе основных достоинств MPI по сравнению с интерфейсами других коммуникационных библиотек обычно называют следующие его возможности:возможность использования в языках Фортран, Си, Си++;предоставление возможностей для совмещения обменов сообщениями и вычислений;предоставление режимов передачи сообщений, позволяющих избежать излишнего копирования информации для буферизации;широкий набор коллективных операций допускающих гораздо более эффективную реализацию параллельной программы;удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки. программиста.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]