Введение в параллельные вычисления. Основы программирования на языке СИ с использованием интерфейса МРI [Антон Михайлович Сальников salnikov@ipu.ru] (pdf) читать постранично, страница - 3

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

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

1.2. Традиционная классификация
вычислительных систем
Большое разнообразие вычислительных систем породило
естественное желание ввести для них какую-то классификацию.
Эта классификация должна однозначно относить ту или иную
вычислительную систему к некоторому классу, который, в свою
очередь, должен достаточно полно ее характеризовать. Попыток
такой классификации в разное время предпринималось множество. Одна из первых классификаций, ссылки на которую наиболее часто встречаются в литературе, была предложена М. Флинном в конце 60-х годов прошлого века. Она базируется на
7

понятиях потоков команд и потоков данных. На основе числа
этих потоков выделяется четыре класса архитектур:
− SISD (англ. Single Instruction Single Data) – единственный
поток команд и единственный поток данных. По сути дела это классическая машина фон Неймана. К этому классу
относятся все однопроцессорные системы.
− SIMD (Single Instruction Multiple Data) – единственный
поток команд и множественный поток данных. Типичными представителями являются матричные компьютеры, в
которых все процессорные элементы выполняют одну и
ту же программу, применяемую к своим (различным для
каждого ПЭ) локальным данным. Некоторые авторы к
этому классу относят и векторно-конвейерные компьютеры, если каждый элемент вектора рассматривать как отдельный элемент потока данных.
− MISD (Multiple Instruction Single Date) – множественный
поток команд и единственный поток данных. М. Флинн
не смог привести ни одного примера реально существующей системы, работающей на этом принципе. Некоторые авторы в качестве представителей такой архитектуры
называют векторно-конвейерные компьютеры, однако такая точка зрения не получила широкой поддержки.
− MIMD (Multiple Instruction Multiple Date) – множественный поток команд и множественный поток данных. К
этому классу относится большинство современных многопроцессорных систем.
Поскольку в этой классификации почти все современные
многопроцессорные системы принадлежат одному классу, то
вряд ли такая классификация представляет сегодня какую-либо
практическую ценность. Тем не менее, используемые в ней
термины достаточно часто упоминаются в литературе по параллельным вычислениям.
Эффективность использования современных компьютеров в
решающей степени зависит от состава и качества программного
обеспечения, установленного на них. В первую очередь это
касается программного обеспечения, предназначенного для
разработки прикладных программ. Так, например, недостаточ8

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

1.3. Классификация многопроцессорных
вычислительных систем
В процессе развития суперкомпьютерных технологий идею
повышения производительности вычислительной системы за
счет увеличения числа процессоров использовали неоднократно.
Если не вдаваться в исторический экскурс и обсуждение всех
таких попыток, то можно следующим образом вкратце описать
развитие событий.
Экспериментальные разработки по созданию многопроцессорных вычислительных систем (МВС) начались в семидесятых
годах двадцатого века. Одной из первых таких систем стала
разработанная в 1976 году в Университете Иллинойса в УрбанеШампэйн (англ. University of Illinois at Urbana-Champaign, UIUC)
МВС ILLIAC IV, которая включала 64 (в проекте до 256) процессорных элемента (ПЭ), работающих по единой программе,
применяемой к содержимому собственной оперативной памяти
каждого ПЭ. Обмен данными между процессорами