Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / Parallelnye_vychislenia.doc
Скачиваний:
282
Добавлен:
15.02.2016
Размер:
410.62 Кб
Скачать

6. Основные алгоритмические методы распараллеливания задач. Векторно-конвейерные и векторно-параллельные системы

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

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

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

Под конвейерным распараллеливаниемпонимается такой способ, которыйвыстраивает цепочку вычислений каждым процессом по шагам, таким образом что i-тый шаг процесса Y, может начаться только после выполнения i-го шага процессом X. В таком случае процесс X считается предшественником процесса Y, а Y – преемником. Упорядочивая процессы по шагу 1, мы получаем цепочку процессов обработчиков. При этом распараллеливание получается за счет того, что i+1 шаг процесса X может быть совмещен с шагом i процесса Y. Таким образом, получается, что все процессы начинают работу в разное время по мере готовности данных для них от предшественников, полностью совмещая выполнение множества промежуточных шагов, то тех пор пока первый предшественник не закончит свою работу.

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

Определение.Этап от окончания работы первого процесса до окончания последнего процесса называется участком торможения (на этом этапе после выполнения каждого шага из процесса обработки исключается один процесс).

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

Эффективность конвейерного распараллеливания зависит от продолжительности этапа полной загрузки конвейера, которая должна значительно превышать этап разгона и торможения вместе взятые.

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

Наилучшей аппаратной поддержкой конвейерного распараллеливания являютсявекторно-конвейерные вычислительные системы, которые по классификации Флинна относятся к классу SIMD-систем. Основные принципы, заложенные в архитектуру векторно-конвейерных систем:

  • конвейерная организация обработки потока команд;

  • наличие в системе команд набора векторных операций, которые позволяют выполнять операции над массивами данных.

Длина обрабатываемых векторов в современных векторно-конвейерных системах составляет, как правило, 128 или 256 элементов. Основное назначение векторных операций состоит в распараллеливании выполнения операторов цикла, в которых обычно сосредоточена большая часть вычислительной работы.

Первый векторно-конвейерный компьютер Cray-1 появился в 1976 году. Архитектура этого компьютера оказалась настолько удачной, что он положил начало целому семейству компьютеров. Современные векторно-конвейерные системы имеют иерархическую структуру:

  • на нижнем уровне иерархии расположеныконвейеры операций(например, конвейер (pipeline) сложения вещественных чисел, конвейер умножения вещественных чисел и т.п.);

  • объединение конвейеров операций составляетконвейерное функциональное устройство;

  • объединение конвейерных функциональных устройств составляет векторно-конвейерный процессор,

  • несколько векторно-конвейерных процессоров (от 2 до 16/32/64 и т.д.), объединенных общей памятью, образуют вычислительный узел;

  • несколько вычислительных узлов, объединенных сетью образуют MPP-систему.

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

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

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

Соседние файлы в папке ГОСЫ