Вперед: 1.2 Классификация многопроцессорных вычислительных систем
Назад: Предисловие
К содержанию: Оглавление


Глава 1. Введение в многопроцессорные вычислительные системы

1.1 ВСТУПЛЕНИЕ

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

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

Первый прорыв произошел в конце 90-х годов прошлого века, когда общедоступными стали кластерные технологии, и бурно стало развиваться программирование для систем с распределенной памятью на основе механизма передачи сообщений. С появлением многоядерных процессоров опять актуальным стало параллельное программирование для систем с общей памятью.

Основная идея параллельного программирования чрезвычайно проста, она заключается в разделении большой вычислительной задачи на множество подзадач, с тем, чтобы организовать одновременное выполнение этих подзадач на отдельных вычислительных устройствах. Методология разработки параллельной программы для решения большой задачи на многопроцессорной системе с распределенной памятью изложена Яном Фостером [7]. Он выделяет четыре этапа в разработке параллельной программы:

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

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



Вперед: 1.2 Классификация многопроцессорных вычислительных систем
Назад: Предисловие
К содержанию: Оглавление