Шаг 2.
Параллельные алгоритмы.
Причины сдерживания массового распространения параллелизма

    На этом шаге мы рассмотрим причины, сдерживающие развитие и распространение параллелизма.

    До сих пор применение параллелизма не получило столь широкого распространения, как это ожидалось многими исследователями. Одной из возможных причин подобной ситуации являлась до недавнего времени высокая стоимость высокопроизводительных систем (приобрести суперЭВМ могли себе позволить только крупные компании и организации). Современная тенденция построения параллельных вычислительных комплексов из типовых конструктивных элементов (микропроцессоров, микросхем памяти, коммуникационных устройств), массовый выпуск которых освоен промышленностью, снизила влияние этого фактора, и в настоящий момент практически каждый потребитель может иметь в своем распоряжении многопроцессорные вычислительные системы (МВС) достаточно высокой производительности. Наиболее кардинально ситуация изменилась в сторону параллельных вычислений с появлением многоядерных процессоров, которые уже в 2006 г. использовались более чем в 70% компьютерных систем.

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

    Среди прочих можно выделить следующий ряд общих проблем, возникающих при использовании параллельных вычислительных систем:

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

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

    2. Потери производительности для организации параллелизма - согласно гипотезе Минского, ускорение, достигаемое при использовании параллельной системы, пропорционально двоичному логарифму от числа процессоров.

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

    3. Постоянное совершенствование последовательных компьютеров. В соответствии с законом Мура мощность последовательных процессоров возрастает практически в 2 раза каждые 18-24 месяцев и, как результат, необходимая производительность может быть достигнута и на "обычных" последовательных компьютерах.

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

    4. Существование последовательных вычислений - в соответствии с законом Амдаля, ускорение процесса вычислений при использовании p процессоров ограничивается величиной

где f есть доля последовательных вычислений в применяемом алгоритме обработки данных (т.е., например, при наличии всего 10% последовательных команд в выполняемых вычислениях эффект использования параллелизма не может превышать 10-кратного ускорения обработки данных).

    Данное замечание характеризует одну из самых серьезных проблем в области параллельного программирования - алгоритмов без определенной доли последовательных команд практически не существует. Однако часто доля последовательных действий характеризует не возможность параллельного решения задач, а последовательные свойства применяемых алгоритмов. Как результат, доля последовательных вычислений может быть существенно снижена при выборе более подходящих для распараллеливания алгоритмов.

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

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

    6. Существующее программное обеспечение ориентировано в основном на последовательные ЭВМ - данное возражение состоит в том, что для большого количества задач уже имеется подготовленное программное обеспечение и все эти программы ориентированы главным образом на последовательные ЭВМ - как результат, переработка такого количества программ для параллельных систем вряд ли окажется возможным.

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

    На следующем шаге мы рассмотрим современные направления развития параллельных вычислительных систем.




Предыдущий шаг Содержание Следующий шаг