Напишите программу параллельного вычисления числа e

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 s,s0=1,s1=0,n=10,i,p;

int k;

if(rank==0)

{ for (i=0; i<n/2; i++)

{p=1;

for (k=1; k<=i+1; k++)

{p=p*(k); }

s0=s0+(1.0)/p;

}

MPI_Send(&s0,1,MPI_FLOAT,1,5,MPI_COMM_WORLD);

}

if(rank==1)

{

for (i=n/2; i<n; i++)

{ p=1;

for (k=1; k<=i+1; k++)

{p=p*k;}

s1=s1+(1.0)/p;

}

MPI_Recv(&s0,1,MPI_FLOAT,0,5,MPI_COMM_WORLD,&status);

s=s1+s0;

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

}

}

Сурак

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

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

SISD (Single Instruction Stream –Single Data Stream) – одинпотоккомандиодинпотокданных;

SIMD (Single Instruction Stream –Multiple Data Stream) – одинпотоккомандимножествопотоковданных;

MISD (Multiple Instruction Stream –Single Data Stream) – множествопотоковкомандиодинпотокданных;

MIMD (MultipleInstructionStream –MultipleDataStream) – множество потоков команд и множество потоков данных.

SISD компьютеры это обычные, "традиционные" последовательные компьютеры, в которых в каждый момент времени выполняется лишь одна операция над одним элементом данных (числовым или каким-либо другим значением). Большинство современных персональных ЭВМ, например, попадает именно в эту категорию. Иногда сюда относят и некоторые типы векторных компьютеров, это зависит от того, что понимать под потоком данных.

SIMD компьютеры состоят из одного командного процессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах. Каждый процессорный элемент имеет свою собственную память для хранения данных. Одним из преимуществ данной архитектуры считается то, что в этом случае более эффективно реализована логика вычислений. До половины логических инструкций обычного процессора связано с управлением выполнением машинных команд, а остальная их часть относится к работе с внутренней памятью процессора и выполнению арифметических операций. В SIMD компьютере управление выполняется контроллером, а "арифметика" отдана процессорным элементам. Векторные компьютеры представляют собой пример архитектуры SIMD.

Отличия MPI и PVM.

Система PVM (ParallelVirtualMachine) была создана для объединения нескольких связанных сетью рабочих станций в единую виртуальную параллельную вычислительную машину. Система представляет собой надстройку над операционной системой UNIX и используется на различных аппаратных платформах, включая и системы с массовым параллелизмом. Наиболее распространены сейчас системы параллельного программирования на основе MPI (MessageParsingInterface). Идея MPI исходно проста и очевидна. Она предполагает представление параллельной программы в виде множества параллельно исполняющихся процессов, взаимодействующих друг с другом в ходе исполнения передачи данных с помощью коммуникационных процедур. Они и составляют библиотеку MPI. Однако надлежащая реализация MPI для обеспечения межпроцессорных коммуникаций оказалась довольно сложной. Такая сложность связана с необходимостью достижения высокой производительности программ, необходимостью использовать многочисленные ресурсы мультикомпьютера, и, как следствие большим разнообразием в реализации коммуникационных процедур в зависимости от режима обработки данных.

MPI и PVM имеют следующие общие характеристики: 1. и MPI и PVM призваны решать одну и ту же задачу обеспечения межпроцессорной связи, 2. и MPI и PVM ориентированы на одну и туже MPMD парадигму программирования; 3. и MPI и PVM представляют собой библиотеку программ; 4. и MPI и PVM обеспечивают мобильность создаваемых программ.

MPI и PVM имеют следующие основные отличия: 1. интерфейс программиста PVM проще, чем такой же интерфейс MPI; 2. PVM имеет средства динамического порождения ветвей (в стандарте MPI-2 такая возможность также имеется); 3. в PVM возможно взаимодействие приложений, запущенных одним и тем же пользователем (в стандарте MPI-2 такая возможность также имеется).

Наши рекомендации