В литературе часто используется та или иная схема классификации компьютерных архитектур и одной из наиболее популярных является таксономия Флинна. В ее основу положено описание работы компьютера с потоком команд и потоком данных. По Флинну принято классифицировать все возможные архитектуры компьютеров на четыре категории:
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.
2 Что такое MPI? Основные концепции и возможности.
Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими. MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90,Java, Си и Си++.
В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики. Базовым механизмом связи между MPI процессами является передача и приём сообщений. Сообщение несёт в себе передаваемые данные и информацию, позволяющую принимающей стороне осуществлять их выборочный приём:отправитель — ранг (номер в группе) отправителя сообщения;получатель — ранг получателя;признак — может использоваться для разделения различных видов сообщений;коммуникатор — код группы процессов.
В числе основных достоинств MPI по сравнению с интерфейсами других коммуникационных библиотек обычно называют следующие его возможности: возможность использования в языках Фортран, Си, Си++; предоставление возможностей для совмещения обменов сообщениями и вычислений; предоставление режимов передачи сообщений, позволяющих избежать излишнего копирования информации для буферизации; широкий набор коллективных операций допускающих гораздо более эффективную реализацию параллельной программы; удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки.
Однако разработчики MPI подвергаются суровой критике за то, что интерфейс является слишком громоздким и сложным для прикладного программиста. Интерфейс оказался сложным и для реализации.