- •Альтернативы
- •Преимущества и недостатки
- •Numa с когерентностью кеш-памяти
- •Преимущества архитектуры
- •Недостатки архитектуры
- •Преимущества архитектуры
- •Недостатки архитектуры
- •Классификация кластеров Кластеры высокой доступности
- •Кластеры распределения нагрузки
- •Вычислительные кластеры
- •Системы распределенных вычислений (grid)
- •Кластер серверов, организуемых программно
- •Применение
- •Самые производительные кластеры
- •Разделение функций
- •Модель файлового сервера
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Модель сервера приложений
- •Принципы сокетов
- •Стандарты mpi
- •Пример программы
- •Реализации mpi
- •Закон Амдаля
- •Характеристики графа алгоритма и смежные понятия
- •27(См. Тетрадь!) (см. В. 23!)
- •Разработка
- •Введение
- •Ключевые элементы
- •Примеры программ
- •Существующие реализации
- •Пример реализации
- •Инструменты
Закон Амдаля
Одной из целей при конструировании параллельных алгоритмов является достижение по возможности большего ускорения; в идеальном случае . Однако мы уже видели на примере сложения n чисел, что эта ситуация не всегда достижима. В самом деле, максимальное ускорение можно получить только для задач, по существу тривиальных.
Главные факторы, обусловливающие отклонение от максимального ускорения, таковы:
1. Отсутствие максимального параллелизма в алгоритме и/или несбалансированность нагрузки процессоров.
2. Обмены, конфликты памяти и время синхронизации.
Хотя задержки, связанные с синхронизацией, обменами и конфликтами памяти, по своей природе весьма различны, их воздействие на общий процесс вычисления одинаково: они замедляют его на время, необходимое для подготовки данных, нужных для дальнейшего счета. Поэтому иногда следует объединять все три фактора задержки, как это сделано в следующем определении.
Определение 7. Временем подготовки данных называется задержка, вызванная обменами, конфликтами памяти или синхронизацией и необходимая для того, чтобы разместить данные, требующиеся для продолжения вычислений, в соответствующих ячейках памяти.
Обратимся теперь к фактору отсутствия максимального параллелизма. Он может проявляться по-разному. При сложении n чисел мы видели, что на первом этапе алгоритма параллелизм максимален, однако на каждом последующем этапе степень параллелизма уменьшается вдвое. Таким образом, в большинстве случаев средняя степень параллелизма алгоритма меньше .
Рассмотрим теперь формальную модель ускорения, в которой
,
где - время, затрачиваемое на реализацию алгоритма на одном процессоре, - доля операций в алгоритме, выполняемых одним процессором, - доля операций, выполняемых всеми процессорами, - общее время, требуемое для подготовки данных.
В случае если =0 и =0, ускорение максимально . Предпосылки данного случая заключаются в том, что все операции выполняются с максимальным параллелизмом и отсутствуют задержки на подготовку данных.
В случае =0 получаем формулу, выражающую закон Амдаля
.
Предположим, что , то есть половина операций в алгоритме может выполняться параллельно, а половина нет. Тогда ускорение принимает вид
.
Таким образом, независимо от количества процессоров и даже при игнорировании всех затрат на подготовку данных ускорение параллельного алгоритма всегда меньше 2.
25
Граф алгоритма — ориентированный граф, состоящий из вершин, соответствующих операциям алгоритма, и направленных дуг, соответствующих передаче данных (результаты одних операций передаются в качестве аргументов другим операциям) между ними. Не следует путать его с графом управления программы и тем более с её блок-схемой.
Активно используется при исследованиях скрытого параллелизма в алгоритмах, записанных на традиционных языках программирования последовательного типа.
Особенностями графа алгоритма являются:
-
его ацикличность;
-
невозможность, в общем случае, его описания простым перечислением, в силу того, что его составляющие могут зависеть от внешних параметров решаемой им задачи (например, алгоритм, реализующий метод Гаусса — от размера матрицы).
В ряде случаев (см., например, линейный класс программ) удаётся избавиться от излишнего лексикографического порядка и получить из текста программы, например, на Фортране, граф алгоритма, используя чисто формальную методику, которая может быть реализована в программных системах. После этого можно использовать его для подготовки параллельной реализации этого алгоритма, исследуя его характеристики, такие как развёртки или ярусно-параллельные формы. Эта методология распараллеливания развита с начала 80-х гг. XX века и описана в работах В. В. Воеводина и коллектива его последователей. На ее основе разработаны некоторые системы исследования параллельных структур в программах, наиболее известной из них является V-Ray, разработанная в НИВЦ МГУ.