Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPI - MKM.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
391.79 Кб
Скачать

3. Напишите программу параллельного вычисления определенного интеграла от фукнции 2*cos(X) в интервале [0,1].

double f(double x)

{return 2*cos(x);}

int main(intargc,char **argv)

{

intsize,rank;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD,&rank);

MPI_Comm_size(MPI_COMM_WORLD,&size);

float h=0.05,a=0,b=1,s=0.0;

for(inti=rank; a+h*(i+1)<b+h; i+=size)

{ s+=h*f(a+h*(i+1)); }

if(rank!=0)

{ MPI_Send(&s,1,MPI_FLOAT,0,1,MPI_COMM_WORLD);

}

if(rank==0)

{ float r;

MPI_Recv(&r,1,MPI_FLOAT,1,1,MPI_COMM_WORLD,&status);

s+=r;

printf("s=%f\n ",s);

}

}

1 Сурак

1 .Современные архитектуры параллельных компьютеров. Программная часть.

Основным параметром классификации параллельных компьютеров является наличие общей (SMP) или распределенной памяти (MPP). Нечто среднее между SMP и MPP представляют собой NUMA-архитектуры, где память физически распределена, но логически общедоступна. Кластерные системы являются более дешевым вариантом MPP. При поддержке команд обработки векторных данных говорят о векторно-конвейерных процессорах, которые, в свою очередь могут объединяться в PVP-системы с использованием общей или распределенной памяти. Программная часть архитектуры параллельных компьютеров:

1. SISD (SingleInstructionSingleData) – единственный поток команд и единственный поток данных. По сути дела это классическая машина фон Неймана. К этому классу относятся все однопроцессорные системы.

2. SIMD (SingleInstructionMultipleData) – единственный поток команд и множественный поток данных. Типичными представителями являются матричные компьютеры, в которых все процессорные элементы выполняют одну и ту же программу, применяемую к своим локальным данным.

3. MISD (MultipleInstructionSingleDate) – множественный поток команд и единственный поток данных. М. Флинн не смог привести ни одного примера реально существующей системы, работающей на

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

4. MIMD (MultipleInstructionMultipleDate) – множественный поток команд и множественный поток данных. К этому классу относятся практически все современные многопроцессорные системы.

2. Декартова топология. Пример использования периодических соседей.

Обобщением линейной и матричной топологий на произвольное число измерений является декартова топология Для создания декартовой топологии (решетки) в MPI предназначена функция: intMPI_Cart_create(MPI_Commoldcomm, intndims, int *dims, int *periods, intreorder, MPI_Comm *cartcomm). С помощью этой функции можно создавать топологии с произвольным числом измерений, причем по каждому измерению в отдельности можно накладывать периодические граничные условия. Таким образом, для одномерной топологии мы можем получить или линейную структуру, или кольцо в зависимости от того, какие граничные условия будут наложены. Для двумерной топологии, соответственно, либо прямоугольник, либо цилиндр, либо тор. Здесь periods - массив длины ndims, определяет, является ли решетка периодической вдоль каждого измерения. intdims[2]={0,0}, periods[2]={1,0},coords[2], ndims=2, reorder=0; - далее вызов функции MPI_Cart_create(MPI_COMM_WORLD,ndims,dims,periods,reorder,&cartcomm) – мы получаем цилиндр. Если periods[2]={1,1} – тор.

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