- •Оглавление
- •Глава 1. Архитектура вычислительных систем 11
- •Глава 2. Реализация параллельных алгоритмов 63
- •Глава 3. Надежность и живучесть вычислительных систем 96
- •Глава 4. Библиотека параллельных программ 120
- •Глава 5. Граф-схемы параллельных алгоритмов 150
- •Глава 6. Исследование информационных граф-схем со скалярными весами для планирования параллельных вычислений 182
- •Глава 7. Исследование информационных граф-схем решаемых задач с векторными весами для планирования параллельных вычислений 204
- •1.Количественные характеристики, применяемые для оценок параметров вычислительных систем
- •Глава 1. Архитектура вычислительных систем
- •Для случая неоднородной системы номинальное быстродействие выразится как
- •Здесь – вероятность выбора j-й операции, , . Для однородной вс её быстродействие по Гибсону выразится соотношением
- •Для неоднородной вс это быстродействие может быть определено, как
- •1.1.1. Вопросы к разделу 1.1.
- •2.Понятие о современных вычислительных системах
- •Пример графа регулярной вычислительной системы представлен на рисунке 1.2.1.
- •Примечание: Для регулярной вычислительной системы
- •2.1. Вопросы к разделу 1.2.
- •3.Структура современных вычислительных систем
- •3.1.Схема обмена с помощью структуры «Общая шина»
- •3.2.Схема обмена с помощью структуры «Линейка»
- •3.3.Вычислительная система, имеющая структуру типа «Кольцо»
- •3.4.Схема обмена с помощью структуры типа «Решётка»
- •1.3.5. Схема обмена с помощью структуры типа «Двумерный тор»
- •3.1.Схема обмена с помощью структуры типа «n-мерный двоичный гиперкуб» или «nD-куб»
- •3.2.Реализация обмена с помощью структуры типа «Обобщенный nD-куб»
- •3.3.Структура вс типа «n-мерный обобщённый тор»
- •3.4.Структура вс с сетью типа «Циркулянт»
- •1.3.10. Вычислительная система «Максимальный обхват»
- •1.3.11. Вычислительные системы со структурой сетей типа «Симметричные графы»
- •На рисунке 1.3.11. Представлена вс с симметричным графом.
- •1.3.12. Вычислительные системы с сетью связей типа «Гомоморфные графы»
- •1.3.13. Вычислительные системы с сетью связей типа «Граф л(n,V,g)»
- •1.3.14. Структура вычислительной системы типа «Бинарное дерево t0(n) глубины n»
- •1.3.15. Структура вычислительной системы типа «Мультидерево глубины n и ширины k t1(n,k)»
- •3.5. Вопросы к разделу 1.3
- •4.Коммуникационные среды вычислительных систем
- •Коммуникационная среда должна удовлетворять следующим требованиям:
- •4.1.Коммуникационная среда на основе масштабируемого когерентного интерфейса sci
- •4.2.Коммуникационная среда на основе технологии Myrinet
- •1.4.3. Краткая характеристика коммуникационной среды QsNet II
- •4.3. Вопросы к разделу 1.4
- •5.Коммутаторы вычислительных систем
- •1.5.1. Типы коммутаторов
- •5.1. Управление коммутаторами
- •5.2. Алгоритмы определения маршрутов
- •5.3. Дедлоки в составных коммутаторах
- •5.4.Вопросы к разделу 1.5
- •6.Процесс функционирования вычислительных систем
- •6.1. Вопросы к разделу 1.6.
- •7.Принципы технической реализации вс
- •1.7.1. Вопросы к разделу 1.7
- •1.8. Архитектурные особенности вс
- •1.8.1. Архитектурные свойства вс
- •1.8.2. Схема обмена информацией между ветвями параллельных алгоритмов
- •7.1.Опыт применения методики крупноблочного распараллеливания сложных задач
- •7.2.Архитектурные аспекты при создании ос вс
- •7.3.Структурные характеристики вс
- •7.4.Классификация структур вс
- •7.5.Вопросы к разделу 1.8.
- •Глава 2. Реализация параллельных алгоритмов
- •2.1. Реализация параллельных алгоритмов
- •2.1.1. Определение параллельного алгоритма
- •7.6.Организация динамического распараллеливания в суперскалярных микропроцессорах
- •2.1.3. Предварительная выборка команд и предсказание переходов
- •7.7.Декодирование команд, переименование ресурсов и диспетчеризация
- •7.8.Исполнение команд
- •2.1.6. Работа с памятью
- •2.1.7. Завершение выполнение команды
- •2.1.8. Направления развития суперскалярной архитектуры
- •7.9.Мультитредовая модель выполнения программы
- •7.10.Аппаратные и программные средства, необходимые для мультитредовой архитектуры
- •2.1.11. Специфика мультитредовых моделей распараллеливания
- •2.1.12. Вопросы к разделу 2.1
- •2.2.Организация распараллеливания на уровне программных модулей
- •2.2.1. Примеры организации вычислений на уровне программных модулей
- •2.2.2. Решение системы линейных уравнений методом Гаусса с помощью вс типов «решётка» и «линейка»
- •2.2.3. Исполнение алгоритма Гаусса на «решётке» n*n вm
- •2.2.4. Исполнение алгоритма Гаусса на «линейке», состоящей из n вм
- •2.2.5. Показатели эффективности параллельных алгоритмов
- •2.2.6. Понятие о сложных задачах
- •2.2.7. Вопросы к разделу 2.2
- •Глава 3. Надежность и живучесть вычислительных систем
- •8.Основные задачи создания отказоустойчивых систем
- •8.1.Вопросы к разделу 3.1
- •9.Классификация типов отказоустойчивости сложных систем и ее критерии
- •9.1.Вопросы к разделу 3.2
- •10.Способы обеспечения отказоустойчивого функционирования вс
- •3.3.1. Диагностическое тестирование вс
- •3.3.3. Способы восстановления отказоустойчивых вс
- •10.1.Вопросы к разделу 3.3
- •3.4. Построение живучих вс на основе экспоненциально- надежностного подхода
- •3.4.1. Показатели надежности вс
- •10.2. Методика расчета показателей надежности вс
- •3.4.3. Живучесть вс
- •3.4.4. Вопросы к разделу 3.4
- •11.Построение живучих вс, работоспособных в расчетном диапазоне кратностей отказов
- •3.6.1. Горячий резерв
- •3.6.2. Репликация
- •3.6.3. Кластеры высокой готовности
- •3.5.1. Вопросы к разделу 3.5
- •3.6. Реализация модели отказоустойчивых систем
- •4.1.2. Принципиальная схема программирования в OpenMp
- •11.2. Описание основных конструкций open mp
- •4.1.4. Способы построения параллельных программ
- •4.1.6. Вопросы к разделу 4.1
- •4.2. Основы построения библиотеки mpi
- •4.2.1. Основные понятия
- •4.2.2. Структура программ в mpi
- •4.2.3. Определение структуры приходящего сообщения
- •4.2.4. Определение базовых характеристик коммуникационной сети
- •11.4.Анализ тупиковых ситуаций при обмене
- •4.2.6. Организация передачи-приёма сообщений без блокировки
- •4.2.7. Реализация отложенных запросов на взаимодействие
- •4.2.8. Сравнительная оценка различных способов обмена данными
- •4.2.9. Использование глобальных операций в mpi
- •4.2.10. Взаимодействие процессов в mpi
- •4.2.11. Вопросы к раделу 4.2
- •Глава 5. Граф-схемы параллельных алгоритмов
- •5.1. Представление параллельных алгоритмов в виде граф-схем
- •5.1.1. Преобразование последовательных алгоритмов в параллельные
- •5.1.2.Использование граф-схем для представления параллельных алгоритмов
- •5.1.3. Вопросы к разделу 5.1
- •5.2.1. Вычисление матриц следования, расширенных матриц следования и матриц следования с транзитивными связями
- •5.2.2. Вопросы к разделу 5.2
- •11.5.Построение матрицы логической несовместимости.
- •5.3.2. Построение матрицы логической несовместимости операторов
- •5.3.3. Вопросы к разделу 5.3
- •5.4.1. Построение множеств взаимно независимых операторов.
- •5.4.2. Вопросы к разделу 5.4
- •Глава 6. Исследование информационных граф-схем со скалярными весами для планирования параллельных вычислений
- •6.1. Численные характеристики информационных граф-схем со скалярными весами
- •6.1.1 Определение ранних и поздних сроков окончания выполнения операторов.
- •11.6.Определение функций плотности загрузки, и минимальной загрузки для информационных граф-схем
- •6.1.3. Вопросы к разделу 6.1
- •6.2.1. Распределение операторов по вм вычислительной системы с общим полем памяти для информационной граф-схемы
- •6.2.2. Распределение операторов по вм вычислительной системы с общим полем памяти для информационно-логической граф-схемы
- •При срабатывании условного оператора «один», дуги 1.1 требуется 10 вм. Время решения задачи составит 22 условные единицы.
- •6.2.3. Распределение операторов по вм вычислительной системы с распределённой памятью для информационной граф-схемы
- •6.2.4. Реализация диаграмм для общепринятых способов обмена данными между вм вычислительной системы с распределённой памятью для информационной граф-схемы
- •6.2.5. Вопросы к разделу 6.2
- •Глава 7. Исследование информационных граф-схем решаемых задач с векторными весами для планирования параллельных вычислений
- •7.1 Информационная граф-схема решаемых задач с векторными весами вершин
- •7.1.1 Понятие об неоднородных системах
- •7.1.2. Основные определения, используемые для неоднородных вс
- •7.1.3. Вопросы к разделу 7.1
- •Литература
3.5.1. Вопросы к разделу 3.5
1. В чем сущность расчетного диапазона кратности отказов?
Дайте определение понятия – d-ограниченные компоненты связности.
3. В чем заключается синтез отказоустоячивой ВС при определенной кратности отказов?
4. Какая основная цель надежностного подхода при создании ВС?
3.6. Реализация модели отказоустойчивых систем
3.6.1. Горячий резерв
Один сервер выполняет приложения, другой находится в горячем резерве. Дисковые массивы подключены к обоим серверам. Специальные программы, используя выделенную сеть, следят за состоянием друг друга. При обнаружении сбоя или отказа по истечении определенного интервала приложения перезапускаются на том же сервере, если он признан исправным, либо на резервном сервере с использованием состояния, сохраненного в дисковом массиве. Резервный сервер может быть менее мощным и исполнять только критичные приложения. Структура системы показана на рисунке 3.6.1.
Рисунок 3.6.1. Отказоустойчивая система по схеме «Горячий резерв»
3.6.2. Репликация
Структура системы с копированием (репликацией) данных показана на рисунке 3.6.2
Рисунок 3.6.2. Отказоустойчивая система по схеме «Репликация»
В нормальном режиме основной сервер выполняет приложения и копирует состояние основной базы данных в резервную базу данных либо по завершении каждой транзакции, либо по истечении заданного интервала времени. В случае отказа, например, по истечении определенного интервала недоступности после очередной репликации данных приложения запускаются на резервном сервере.
3.6.3. Кластеры высокой готовности
Эти кластеры применяются там, где стоимость возможного простоя из-за неполадок значительно превышают стоимость создания отказоустойчивой системы. В таких областях, как биллинговые и банковские системы, электронная коммерция, управление предприятием и т.д.
Структура кластера с высокой готовностью показана на рисунке 3.6.3.
Рисунок 3.6.3. Отказоустойчивая система по схеме «Кластер высокой готовности»
Рисунок 3.6.4. Отказоутойчивая система смешанного типа
Особенность таких кластеров – они спроектированы таким образом, что система в целом не имеет точек отказа. Иначе говоря, отсутствуют компоненты, неполадки которых могут повлиять на работоспособность системы в целом. Для достижения этой цели не придумано ничего лучше полного дублирования всех ключевых компонентов кластера (от систем хранения данных до отдельных коммутаторов и хост – адаптеров). Кроме того, при проектировании учитывается возможность быстрой замены вышедших из строя элементов без остановки системы.
В определенных случаях используют комбинирование схем, структура таких систем приведена на рисунке 3.6.4.
3.6.4. Вопросы к разделу 3.6
1. Зачем используется горячий резерв в отказоустойчивых системах?
2. С какой целью используется репликация в ВС?
3. Где используются кластеры высокой готовности?
4. Опишите структурную схему отказоустойчивой системы смешанного типа.
ГЛАВА 4. БИБЛИОТЕКА ПАРАЛЛЕЛЬНЫХ ПРОГРАММ
4.1 Характеристика параллельных языков программирования
В данной главе рассмотрены две наиболее часто используемые библиотеки параллельных программ OpenMP и MPI. В случае необходимости достаточно полный перечень библиотек параллельных программ можно найти в интернете [23]
11.1.Характеристика спецификаций OpenMP
Библиотека OpenMP [24] – это набор спецификаций по созданию параллельных программ в среде с общей памятью. Эта система предоставляет набор прагм, процедур и переменных среды. Когда эти прагмы используются в программе, они дают указание компилятору, поддерживающему OpenMP, создать исполнимый модуль, который будет выполняться параллельно с использованием нескольких потоков. При этом в исходный код необходимо внести небольшие изменения (отличные от доводки для достижения максимальной производительности).
Прагмы этой библиотеки позволяют использовать единообразный и переносимый интерфейс для создания параллельных программ на различных архитектурах и системах. Модель библиотеки позволяет параллельному программированию подняться на следующий уровень, создавая для программиста потоки и управляя ими. Все, что необходимо, это вставить соответствующие прагмы в исходный код программы и затем скомпилировать программу компилятором, поддерживающим OpenMP, с соответствующим ключевым словом. Компилятор интерпретирует прагмы и создаёт параллельный код. При использовании компиляторов, не поддерживающих OpenMP, его прагмы игнорируются без дополнительных сообщений.
Стандарты OpenMP разрабатывались в течение последних 15 лет применительно к архитектурам с общей памятью для языков Fortran, C, C++. В конце 2005 года компания Intel предложила систему программирования Cluster OpenMP, реализующий расширение OpenMP для вычислительных систем с распределенной памятью. Этот система позволяет объявлять области данных, доступные всем узлам кластера, и осуществлять передачу данных между узлами кластера неявно с помощью протокола Lazy Release Consistency. Система позволяет легко и быстро создавать многопоточные приложения на алгоритмических языках Fortran, C и C++. При этом директивы OpenMP аналогичны директивам препроцессора для языков C, C++ и являются аналогом комментариев в алгоритмическом языке Fortran. Это позволяет в любой момент разработки параллельной реализации программного продукта при необходимости вернуться к последовательному варианту программы. В настоящее время OpenMP поддерживается большинством разработчиков параллельных вычислительных систем: компаниями Intel, Hewlett-Packard, Silicon Graphics, Sun, IBM, Fujitsu, Hitachi, Siemens, Bull и другими. Многие известные компании в области разработки системного программного обеспечения также уделяют значительное внимание разработке системного программного обеспечения с OpenMP. Среди этих компаний отметим Intel, KAI, PGI, PSR, APR, Absoft и некоторые другие. Значительное число компаний и научно-исследовательских организаций, разрабатывающих прикладное программное обеспечение, в настоящее время использует OpenMP при разработке своих программных продуктов. Среди этих компаний и организаций отметим ANSYS, Fluent, Oxford Molecular, NAG, DOE ASCI, Dash, Livermore Software. Среди российских компаний следует отметить ТЕСИС, Центральную геофизическую экспедицию и российские научно-исследовательские организации. К ним относятся – Институт математического моделирования РАН, Институт прикладной математики имени Келдыша РАН, Вычислительный центр РАН, Научно-исследовательский вычислительный центр МГУ, Институт химической физики РАН и другие.
Разработкой стандарта занимается организация OpenMP ARB (ARchitecture Board), в которую вошли представители крупнейших компаний – разработчиков SMP-архитектур и программного обеспечения. Спецификации для языков Fortran, C и C++ появились соответственно в октябре 1997 года и октябре 1998 года.
Согласно терминологии POSIX threads, любой UNIX-процесс содержит несколько нитей управления (потоков, легковесных процессов), имеющих общее адресное пространство, но разные потоки команд и раздельные стэки. Самый простой процесс состоит из одной нити. POSIX-интерфейс для организации нитей (Pthreads) поддерживается широко (практически на всех UNIX-системах), однако по многим причинам не подходит для практического параллельного программирования: нет поддержки языком Fortran, слишком низкий уровень, нет поддержки параллелизма по данным, механизм нитей изначально разрабатывался не для целей организации параллелизма.
OpenMP можно рассматривать как высокоуровневую надстройку над Pthreads (динамически порождаемые нити, общие и разделяемые данные, механизм «замков» для синхронизации).
Многие поставщики SMP-архитектур (Sun, HP, SGI) в своих компиляторах поддерживают специальные директивы для распараллеливания циклов. Однако эти наборы директив, как правило: 1) весьма ограничены; 2) несовместимы между собой, в результате чего разработчикам приходится распараллеливать приложение отдельно для каждой платформы. OpenMP является во многом обобщением и расширением упомянутых наборов директив.
При использовании OpenMP разработчик получает некоторые преимущества:
1. За счет идеи независимого распараллеливания отдельных участков программ эта библиотека идеально подходит для разработчиков, желающих быстро распараллелить свои вычислительные программы с большими параллельными циклами. Разработчик не создает новую параллельную программу, а просто последовательно добавляет в текст последовательной программы соответствующие директивы.
2. Разработчику предоставляются большие возможности контроля над поведением параллельного приложения.
3. Предполагается, что OpenMP-программа на однопроцессорной платформе может быть использована в качестве последовательной программы, т.е. нет необходимости поддерживать последовательную и параллельную версии. Директивы распараллеливания просто игнорируются последовательным компилятором, а для вызова процедур библиотеки могут быть подставлены заглушки (stubs), текст которых приведен в спецификациях.
4. Одним из достоинств рассматриваемой системы её разработчики считают наличие директив синхронизации и распределения работы, которые дают возможность не входить непосредственно в лексический контекст параллельной области.
