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

3. Напишите параллельную программу проверки простого числа.

В данном случае программа должна вывести “Prostoe”.

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 k=127,p,l=0,x1,l1,l2=0,itog=0,i; // k - issleduemoe chislo

p=k/(size-1);

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

// metod perebora delitelei

{ for (i=rank*p+1; i<=(rank+1)*p; i++) { x1=k/i; if (x1*i==k) {l++;} }

MPI_Send(&l,1,MPI_INT,size-1,1,MPI_COMM_WORLD);}

else

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

{ MPI_Recv(&l1,1,MPI_INT,i,1,MPI_COMM_WORLD, &status); itog+=l1; }

for (i=(size-1)*p+1; i<=k; i++) { x1=k/i; if (x1*i==k) {l2++;} } itog+=l2;

if (itog>2) {printf("Ne yavlyaetsya prostym\n"); } else { printf("Prostoe\n"); } }

MPI_Finalize();}

93 Сурак

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

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

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

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

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

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

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

2.Пример использования фукнции mpi_Dims_create

В декартовой топологии функция MPI_DIMS_CREATE помогает пользователю выбрать выгодное распределение процессов по каждой координате в зависимости от числа процессов в группе и некоторых ограничений, определеных пользователем. Эта функция используется, чтобы распределить все процессы (размер группы MPI_COMM_WORLD) в n-мерную топологическую среду. int MPI_Dims_create(int nnodes, int ndims, int *dims) nnodes количество узлов решетки (целое), ndims число размерностей декартовой решетки(целое), dims - целочисленный массив размера ndims, указывающий количество вершин в каждой размерности.

int dims[2]={0,0},ndims=2;

MPI_Dims_create(size, ndims, dims);

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