.
Если взять процессоров, то эффективность их использования можно оценить так:
.
Для эффективность будет меньше и с увеличением n будет уменьшаться и далее.
Выходом может служить ограничение числа процессоров по сравнению с максимальным числом, равным максимальной степени параллелизма, например, выбрав это целое число близким к средней степени параллелизма.
В отличие от (2.3), при произвольном n, средняя степень параллелизма алгоритма сдваивания должна быть записана со знаменателем из (2.3) и, следовательно, взяв число процессоров, равное
,
можем без увеличения числа уровней параллельного алгоритма достигнуть эффективности порядка
,
где – значение выражения в квадратных скобках, округленное до ближайшего целого.
Построение параллельного алгоритма со степенью параллелизма меньшей, чем максимальная степень и средняя степень, позволяет при незначительном увеличении глубины достигнуть существенно большей эффективности использования оборудования.
Для примера рассмотрим суммирование операндов на процессорах методом сдваивания. Максимальная степень параллелизма для этого количества операндов составляет , число уровней суммирования . Ускорение по сравнению с последовательным алгоритмом в раза. При девяти процессорах эффективность использования оборудования составит .
На рисунке 2.4а приведена схема параллельной структуры с пятью уровнями суммирования и максимальной степенью параллелизма, равной 9, а на рисунке 2.4б – параллельная структура суммирования с использованием лишь пяти процессоров.
Рисунок 2.4.
Число уровней суммирования с параллелизмом составит . Остаток неохваченных суммированием данных . На последующих уровнях к промежуточным значениям, полученных суммированием на уровнях , необходимо добавлять значения исходных операндов, неохваченных еще суммированием, и к ним применять процедуру сдваивания. Для рассматриваемого примера новое количество данных составит . На них можно сформировать еще уровни с параллелизмом : ; . Очередной набор промежуточных данных для сдваивания составит . Полученное количество промежуточных данных для сдваивания меньше , поэтому последующие уровни суммирования будут иметь уменьшающуюся степень параллелизма.
Для параллельной формы общее число уровней суммирования , ускорение и эффективность .
Рекуррентные выражения (рекурсии) встречаются при решении многих задач вычислительной математики. Рекуррентным выражением порядка k является формула вычисления значения операнда следующего вида:
.
При каждый член последовательности выражается через предыдущие k членов . Для начала рекуррентного вычислительного процесса необходимо знать k первых членов последовательности , то есть – ().
Частными случаями рекуррентных выражений являются формулы вычисления членов арифметической и геометрической прогрессии, схема Горнера, рассмотренная ранее, выражения для вычисления значений ортогональных многочленов, например, полиномов Чебышева первого рода
,
суммирование значений числовых или функциональных рядов, вычисление подходящих целых дробей для заданной, например, бесконечной цепной дроби в виде
,
в которых при ,
,
а также вычисление или преобразование аналогичных рекуррентных формул с операндами и коэффициентами векторного и/или матричного типов.
Рекурсии в общем случае могут быть нелинейными.
Наиболее часто в вычислениях встречаются линейные рекурсии первого порядка:
.
Это сугубо последовательный процесс, так как каждое не может быть вычислено, пока неизвестно значение . Для вычисления потребуется 2n операций или тактов, если операции одинаковы по длительности. Однако если объединить в одно выражение две соседние по индексу строки исходной рекурсии, то можно получить две рекурсивные последовательности, сдвинутые по индексу относительно друг друга на единицу:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.