- •Понятия эвм и вс. Понятие архитектуры вс
- •Архитектура как набор взаимодействующих компонентов. Архитектура как интерфейс между уровнями физической системы
- •Теория эволюции компьютеров. Закон Мура. Дуализм в развитии техники Теория эволюции компьютеров
- •Дуализм в развитии техники
- •Механическая эра вычислений
- •Счетно-аналитические машины
- •Общее описание и анализ вычислительной машины eniac
- •Общее описание и анализ вычислительной машины edvac Анализ eniac
- •Принципы фон-Неймана. Поколения эвм
- •Многоуровневая компьютерная организация. Уровни для прикладных и системных программистов
- •Многоуровневая компьютерная организация
- •Архитектура системы команд
- •Cisc и risc архитектуры процессоров Архитектура системы команд
- •Cisc и risc архитектуры процессоров
- •Организация risc мп dec Alpha 21x64 Организация risc мп dec Alpha 21x64
- •Развитие архитектур современных мп. Расширение архитектуры x86 Развитие архитектур современных мп
- •Архитектура vliw
- •Архитектура epic
- •Технология ia-64
- •Предпосылки развития вс. Закон Гроша для вс
- •Модель вычислителя
- •Возможности совершенствования эвм
- •Модель коллектива вычислителей
- •Структура коллектива вычислителей
- •Алгоритм работы коллектива вычислителей
- •Принципы технической реализации модели коллектива вычислителей
- •Архитектурные свойства вс Архитектурные свойства вычислительных систем
- •Системы (языки) параллельного программирования Системы (языки) параллельного программирования
- •Параллельные модели программирования. Модель передачи сообщений. Реализация на основе mpi.
- •Параллельные модели программирования. Модель общей памяти. Реализация на основе OpenMp Системы (языки) параллельного программирования
- •1. По назначению (универсальные и специализированные)
- •2. По типу (многомашинные и многопроцессорные) (ниже)
- •3. По типу эвм или процессоров (однородные и неоднородные)
- •4. По степени территориальной разобщенности (сосредоточенные и распределенные)
- •6. По режиму работы вс (оперативные и неоперативные)
- •Многомашинные вс. Режимы работы. Отличия от многопроцессорных вс
- •Классификация Флинна архитектур
- •Основные классы вычислительных систем
- •Параллельные алгоритмы. Параллельная программа. Локальное и глобальное распараллеливание
- •Модель вычислений в виде графа "операции-операнды"
- •Показатели эффективности параллельных вычислений: ускорение, эффективность, масштабируемость
- •Оценка максимально достижимого параллелизма. Закон Амдала. Парадокс параллелизма
- •Многомашинные вс. Режимы работы. Отличия от многопроцессорных вс
- •Уровни комплексирования в вычислительных системах Многомашинные вс. Режимы работы. Отличия от многопроцессорных вс
- •Уровни комплексирования в вс
- •Алгоритмы маршрутизации. Методы передачи данных. Латентность и пропускная способность сети
- •Передача данных между двумя процессорами и широковещательная передача. Реализация точечных методов передачи и широковещательной рассылки в mpi
- •Сложные задачи. Масштабируемость параллельных вычислений. Функция изоэффективности
- •Системы с общей и распределенной памятью. Многоуровневая организация общей памяти
- •Память с чередованием адресов
- •Симметричные (smp) многопроцессорные вс. Архитектура типа uma, coma, numa
- •Мультипроцессор Sun Enterprise 10000
- •Мультипроцессоры numa
- •Векторные системы. Понятие вектора и размещение данных в памяти. Векторный процессор. Pvp-система
- •Структура векторного процессора Структуры типа "память-память" и "регистр-регистр". Ускорение вычислений в векторных системах
- •Вычислительная система star-100
- •Вычислительная система cray c-90
- •Матричные вычислительные системы. Обобщенная модель матричной вс. Интерфейсная вм. Контроллер массива процессоров
- •Вычислительная система illiac IV
- •Ассоциативная память. Ассоциативные вс Ассоциативная память
- •Систолические структуры Систолические структуры
- •Кластеры. Виды кластеров
- •Топологии кластеров. Кластер Beowulf
- •Топологии кластеров
- •Кластер Beowulf
- •Архитектура с массовой параллельной обработкой Системы с массовым параллелизмом (mpp-системы)
Параллельные алгоритмы. Параллельная программа. Локальное и глобальное распараллеливание
Параллельные алгоритмы. Параллельная программа. Локальное и глобальное распараллеливание.
Понятие параллельного алгоритма (Parallel Algorithm) относится к фундаментальным в теории вычислительных систем. Это понятие, прежде всего, ассоциируется с вычислительными системами с массовым параллелизмом. Параллельный алгоритм – это описание процесса обработки информации, ориентированное на реализацию в коллективе вычислителей. Такой алгоритм, в отличие от последовательного, предусматривает одновременное выполнение множества операций в пределах одного шага вычислений и как последовательный алгоритм сохраняет зависимость последующих этапов от результатов предыдущи.
Параллельный алгоритм решения задачи составляет основу параллельной программы , которая, в свою очередь, влияет на алгоритм функционирования коллектива вычислителей.Запись параллельного алгоритма на языке программирования, доступном коллективу вычислителей, и называют параллельной программой, а сам язык – параллельным. Параллельные алгоритмы и программы следует разрабатывать для тех задач, которые недоступны для решения на средствах, основанных на модели вычислителя. Эти задачи принято называть сложными или трудоемкими.
Методы и алгоритмы обработки информации, решения задач, как правило, – последовательные. Процесс “приспособления” методов к реализации на коллективе вычислителей или процесс “расщепления” последовательных алгоритмов решения сложных задач называется распараллеливанием (Paralleling or Multisequencing).
Теоретическая и практическая деятельность по созданию параллельных алгоритмов и программ обработки информации называется параллельным программированием (Parallel or Concurrent Programming). Качество параллельного алгоритма (или его эффективность) определяется методикой распараллеливания сложных задач.
Существует два подхода при распараллеливании задач: локальное и глобальное (крупноблочное) распараллеливание. Первый подход ориентирован на расщепление алгоритма решения сложной задачи на предельно простые блоки (операции или операторы) и требует выделения для каждого этапа вычислений максимально возможного количества одновременно выполняемых блоков. Он не приводит к параллельным алгоритмам, эффективно реализуемым коллективом вычислителей. В самом деле, процесс такого распараллеливания весьма трудоемок, а получаемые параллельные алгоритмы характеризуются не только структурной неоднородностью, но и существенно разными объемами операций на различных этапах вычислений. Последнее является серьезным препятствием на пути (автоматизации) распараллеливания и обеспечения эффективной эксплуатации ресурсов коллектива вычислителей. Локальное распараллеливание позволяет оценить предельные возможности коллектива вычислителей при решении сложных задач, получить предельные оценки по распараллеливанию сложных задач.
Второй подход ориентирован на разбиение сложной задачи на крупные блоки–подзадачи, между которыми существует слабая связность. Тогда в алгоритмах, построенных на основе крупноблочного распараллеливания, операции обмена между подзадачами будут составлять незначительную часть по сравнению с общим числом операций в каждой подзадаче. Такие подзадачи называют ветвями параллельного алгоритма, а соответствующие им программы – ветвями параллельной программы.
Схемы параллельных алгоритмов
Одним из конструктивных приемов крупноблочного распараллеливания сложных задач является
распараллеливание по циклам
Прием позволяет представить процесс решения задачи в виде параллельных ветвей, полученных расщеплением цикла на части, число которых в пределе равно числу повторений цикла. На входе и выходе из цикла процесс вычислений – последовательный; доля последовательных участков в общем времени решения задачи незначительна.
Как правило, последовательные участки имеют место в начале и конце параллельной программы. На начальном участке осуществляется инициирование программы и ввод исходных данных, а на конечном – вывод результатов (запись в архивные файлы). При достаточно полном воплощении принципов модели коллектива вычислителей допустимы реализации в системе параллельных ввода и вывода информации.
Последовательные участки в параллельной программе также могут иметь место, если используются негрупповые обмены информацией между ветвями (вычислителями).