Виртуальные топологии. Декартова и графовая топологии. В каких случаях их следует использовать. Основные шаги для создания декартовой топологии

В MPI топология представляет собой механизм для того, чтобы связать с процессами, принадлежащими группе, различные схемы адресации. Топология MPI - виртуальная, т. е. может не существовать никакого простого отношения между структурой процессов, определенной виртуальной топологией и фактической физической структурой параллельной машины. Известны два основных типа виртуальной топологии, которая может быть создана MPI, - декартова топология, или топология сетки, и топология графа. Первый тип является подмножеством второго. В дек. топ. множ-во процессов предст-ся в виде прям. решетки, а для указ. процессов исп-ся дек. сист. коорд. Для созд-я : int MPI_Cart_create(MPI_Comm oldcomm, int ndims, int *dims, int *periods, int reorder, MPI_Comm *cartcomm), где: oldcomm - исх. комм; ndims - разм. дек. решетки, dims - массив длины ndims, задает кол-во процессов каждом изм. решетки, periods - массив длины ndims, определяет, явл-ся ли решетка периодич. вдоль каждого изм; reorder - параметр допустимости изм. нум. процессов, cartcomm – созд-е. комм. с дек. топ. процесса. В топологии в виде графа - вершины есть процессы системы, а дуги соответствуют имеющимся каналам связи. Парные операции передачи данных могут быть выполнены между любыми процессами комм; в коллект. операции приним. участие все процессы комм. Следовательно, логическая топ. линий связи между процессами в парал. программе имеет структуру полного графа.

Параллельное умножение матрицы и вектора в MPI.

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 i,k,j,s,x=0,p;

int n=10, a[n][n], c[n], b[n], d[p];

p=n/(size-1);

for (i=0;i<n;i++)

{

b[i]=i; for(j=0;j<n;j++) { a[i][j]=x;x++; }

}

if (rank!=size-1)

{ for(k=rank*p;k<p*(rank+1);k++) {

s=0; for(int j=0;j<n;j++)

{ s+=a[k][j]*b[j]; } d[k]=s; }

MPI_Send(&d[rank*p],p,MPI_DOUBLE,size-1,5,MPI_COMM_WORLD);

}

else

{ for (i=0; i<size-1;i++) { MPI_Recv(&c[i*p],p,MPI_DOUBLE,i,5,MPI_COMM_WORLD, &status); } }

 

Сурак

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

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

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) – множествопотоковкомандимножествопотоковданных

MISD компьютеры

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

MIMD компьютеры

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