- •Зачем применяються суперкомпьютеры
- •Параллельная обработка данных на эвм
- •Классификация параллельных компьютеров и систем
- •Векторно-конвейерные компьютеры
- •Функциональные устройства
- •Секция управления процессора
- •Паралельные компьютеры с общей памятью
- •Вычислительные системы с распределенной памятью
- •Кластерные проекты
- •Система функциональных устройств. Закон амдала.
- •Как повышают производительность компьютеров
- •Усложнение и наращивание аппаратных средств
- •Параллельная обработка
- •Конвейерная обработка
- •Повышение интеллектуальности управления компьютера
- •Технологии параллельного программирования
- •Использование традиционных последовательных языков
- •Технология программирования ОреnМр.
- •Система программирования dvm.
- •Система программирования на mPc.
- •Система программирования на основе передачи сообщения
- •Система программирования mpi
- •Общие функции mpi.
- •Общие функции mpi
- •Прием/передача сообщения между отдельными процессами.
- •Прием/передача сообщения без блокировки.
- •Объединение запросов на взаимодействия.
- •Совмещенные прием и передача сообщений.
- •Коллективные взаимодействия процессов.
- •Синхронизация процессов
- •Работа с группами процессов
Технология программирования ОреnМр.
Одним из наиболее популярных средств программирования компьютеров с общей памятью, построенных на подобных принципах, в настоящее время является технология ОреnМР. За основу берется последовательная программа, а для создания ее параллельной версии пользователю предоставляется набор директив, процедур и переменных окружения. Стандарт ОреnМР разработан для языков Fortran, С и С++ и поддерживается практически всеми производителями больших вычислительных систем. Реализации стандарта доступны как на многих UNIX-платформах, так и в среде WINDOWS.
Весь текст программы разбит на последовательные и параллельные области. В начальный момент времени порождается нить-мастер или "основная" нить, которая начинает выполнение программы со стартовой точки
Основная нить и только она исполняет все последовательные области программы. Для поддержки параллелизма используется схема FORK/JOIN. При входе в параллельную область нить-мастер порождает дополнительные нити (выполняется операция FORK). После порождения каждая нить получает свой уникальный номер, причем нить-мастер всегда имеет номер 0.
Все порожденные нити исполняют один и тот же код, соответствующий параллельной области. При выходе из параллельной области основная нить дожидается завершения остальных нитей, и дальнейшее выполнение программы продолжает только она (выполняется операция JOIN).
В параллельной области все переменные программы разделяются на два класса: общие (SHARED) и локальные (PRIVATE).
Общие переменные всегда существуют лишь в одном экземпляре для всей программы и доступны всем нитям под одним и тем же именем. Объявление локальных переменных вызывает порождение своего экземпляра каждой переменной для каждой нити. Изменение нитью значения своей локальной переменной, естественно, никак не влияет на изменение значения этой же локальной переменной в других нитях.
По существу рассмотренные понятия областей программы и классов переменных определяют общую идею написания параллельной программы в рамках ОреnМР: некоторые фрагменты текста программы объявляются параллельными областями; именно эти области и только они исполняются набором нитей, которые могут работать как с общими, так и с локальными переменными.
Для распределения работы в рамках ОреnМР можно использовать четыре варианта:
-
программирование на низком уровне;
-
директива DO для параллельного выполнения циклов;
-
директива SECTIONS для параллельного выполнения независимых фрагментов программы;
-
директива SINGLE для однократного выполнения участка кода
Преимущества технологии ОреnМР:
Можно отметить несколько моментов среди которых стоит особо подчеркнуть два. Во-первых, технология изначально спроектирована таким образом, чтобы пользователь мог работать с единым текстом для параллельной и последовательной программ. Обычный компилятор на последовательной машине директивы ОреnМР просто "не замечает", поскольку они расположены в комментариях. Единственным источником проблем могут стать переменные окружения и специальные функции. Однако для них в спецификациях стандарта предусмотрены специальные "заглушки", гарантирующие корректную работу ОреnМР-программы в последовательном случае. Для этого нужно только перекомпилировать программу и подключить другую библиотеку.
Другим достоинством ОреnМР является возможность постепенного, "инкрементного" распараллеливания программы. Взяв за основу последовательный код, пользователь шаг за шагом добавляет новые директивы, описывающие новые параллельные конструкции. Нет необходимости сразу писать параллельную программу целиком, ее создание ведется последовательно. Это упрощает как процесс программирования, так и отладку.