ВУЗ:
Составители:
Рубрика:
- 68 -
3 Анализ алгоритмов с целью выявления параллелизма
Кардинальным отличием выполнения программы на вычислительной сис-
теме параллельной архитектуры от такового последовательного компьютера
является возможность одновременного выполнения целой группы опера-
ций, друг от друга не зависящих (на последовательной машине в каждый мо-
мент времени выполняется только одна операция, другие могут находиться
только на стадии подготовки). На различных параллельных машинах эти
группы и последовательность их выполнения скорее всего будут разными.
Однако существует (естественное) требование повторяемости результатов
(алгоритм, приводящий к различным конечным результатам даже при оди-
наковых входных данных, вряд ли кому нужен – моделирование статистиче-
ских процессов не рассматриваем).
В общем случае этап
разработки параллельной программы должен предва-
ряться процессом выявления блоков (последовательностей исполняемых
предписаний), могущих быть выполненными независимо друг от друга и то-
чек (моментов) в программе, в которых необходима синхронизация выполне-
ния этих блоков (для ввода или обмена данными). Только для простейших
алгоритмов эта задача может быть выполнена ‘в уме’, в
большинстве случае
требуется (достаточно сложный) анализ структуры алгоритма. В некоторых
случаях целесообразно провести эквивалентные преобразования алгоритма
(замена данного алгоритма – или его части – на алгоритм, гарантирующий
получение такого же конечного результата на всех наборах входных данных,
причем желательно без снижения точности расчетов).
3.1 Представление алгоритма графовой структурой
Принято
и удобно представлять алгоритм в виде графовой структуры.
Граф G стандартно обозначается G=(V,E), где V – множество вершин
(vertex), E – множество дуг (edge), дуга между вершинами i и j обозначается
как e(i,j). В общем случае вершины графа соответствуют некоторым дейст-
виям программы, а дуги – отношениям между этими действиями.
Простейший
граф такого рода описывает информационные зависимости
алгоритма (вершины этого графа соответствуют отдельным операциям ал-
горитма, наличие дуги между вершинами i,j говорит о необходимости при
выполнении операции j наличия аргументов (операндов), выработанных опе-
рацией i; в случае независимости выполнения операций i и j дуга между вер-
шинами отсутствует). Такой граф называют графом
алгоритма (вычисли-
тельной моделью ‘операторы - операнды’), [1,3]. Даже при отсутствии ус-
ловных операторов (что маловероятно) число выполненных операций (а сле-
довательно, и общее число вершин графа и, соответственно, число дуг) зави-
сит от размеров входных данных, т.е. граф алгоритма (ГА) является пара-
- 68 - 3 Анализ алгоритмов с целью выявления параллелизма Кардинальным отличием выполнения программы на вычислительной сис- теме параллельной архитектуры от такового последовательного компьютера является возможность одновременного выполнения целой группы опера- ций, друг от друга не зависящих (на последовательной машине в каждый мо- мент времени выполняется только одна операция, другие могут находиться только на стадии подготовки). На различных параллельных машинах эти группы и последовательность их выполнения скорее всего будут разными. Однако существует (естественное) требование повторяемости результатов (алгоритм, приводящий к различным конечным результатам даже при оди- наковых входных данных, вряд ли кому нужен – моделирование статистиче- ских процессов не рассматриваем). В общем случае этап разработки параллельной программы должен предва- ряться процессом выявления блоков (последовательностей исполняемых предписаний), могущих быть выполненными независимо друг от друга и то- чек (моментов) в программе, в которых необходима синхронизация выполне- ния этих блоков (для ввода или обмена данными). Только для простейших алгоритмов эта задача может быть выполнена ‘в уме’, в большинстве случае требуется (достаточно сложный) анализ структуры алгоритма. В некоторых случаях целесообразно провести эквивалентные преобразования алгоритма (замена данного алгоритма – или его части – на алгоритм, гарантирующий получение такого же конечного результата на всех наборах входных данных, причем желательно без снижения точности расчетов). 3.1 Представление алгоритма графовой структурой Принято и удобно представлять алгоритм в виде графовой структуры. Граф G стандартно обозначается G=(V,E), где V – множество вершин (vertex), E – множество дуг (edge), дуга между вершинами i и j обозначается как e(i,j). В общем случае вершины графа соответствуют некоторым дейст- виям программы, а дуги – отношениям между этими действиями. Простейший граф такого рода описывает информационные зависимости алгоритма (вершины этого графа соответствуют отдельным операциям ал- горитма, наличие дуги между вершинами i,j говорит о необходимости при выполнении операции j наличия аргументов (операндов), выработанных опе- рацией i; в случае независимости выполнения операций i и j дуга между вер- шинами отсутствует). Такой граф называют графом алгоритма (вычисли- тельной моделью ‘операторы - операнды’), [1,3]. Даже при отсутствии ус- ловных операторов (что маловероятно) число выполненных операций (а сле- довательно, и общее число вершин графа и, соответственно, число дуг) зави- сит от размеров входных данных, т.е. граф алгоритма (ГА) является пара-
Страницы
- « первая
- ‹ предыдущая
- …
- 66
- 67
- 68
- 69
- 70
- …
- следующая ›
- последняя »