ВУЗ:
Составители:
Рубрика:
- 91 -
быть причиной
изменений в
результатах (в
пределах оши-
бок округле-
ния).
Далее частичные суммы складываются:
sum=sum1+ sum2
Во многих случаях приведенные (лежащие, впрочем, на поверхности) пре-
образования помогают и разработчику при создании новых программ. Одна-
ко перед реальным программированием в любом случае полезно обдумать
последовательность вычислений (алгоритмизацию). Классический пример –
параллельная сортировка (по аналогии с лежащим на поверхности распарал-
леливанием алгоритма суммирования элементов массива складывается убеж-
дение в
возможности эффективного крупноблочного распараллеливания ме-
тодом сортировки на каждом процессоре части общего массива; однако по-
нимание проблем, связанных с пересечением частично отсортированных
множеств приходит обычно позднее); последовательные и мелкозернистые
параллельные алгоритмы сортировки описаны, напр., в работе [3].
Распараллеливающие компиляторы хорош
и
в тех случаях, когда имеются (априори
корректно работающие, но не м
о
гущие быть модифицируемыми вследствие различных
причин) параллельные программы и требуется повысить их эффективность путем ис-
пользования многопроцессорных вычислительных систем. При создании новых про-
граммных комплексов для параллельного исполнения разработчик должен руково-
дствоваться
разумными соображениями
при разработке программ. Вряд ли стоит наде-
яться, что компилятор произведет ЭкП типа известной ‘задачи юного Гаусса’ (свед
е-
ние суммы индексов к произведению, )1100(50
100
1
+×=
∑
=
=
i
i
i
как частный случай)! Исполь-
зование правила Г
о
рнера (
))x(x...(x...x
aaaa
x
axaaa
n1n10
n
n
2
210
+++≡+++
−
) хотя
и уменьшает число умножений при вычислении значения полинома, но распараллели-
вается ненамн
о
го лучше исходного выражения. Есть ли смысл распараллеливать про-
цедуру сортировки на массиве из 10 (возможно, 10
2
÷
10
3
) чисел? А определение значе-
ния вычислительнотрудо
е
мкой функции нескольких переменных (например, при гра-
диентном методе поиска экстремума функции многих переменных или вычислении
определенного интеграла
о
ной) распределить по процессорам МВС программист обя-
зан самостоятельно!
Каждый раз (к счастью!) приходится думать!…
Избыточные вычисления возникают в случае неиспользования результатов
вычислений в качестве данных для последующих вычислений; в графе алго-
ритма этому явлению соответствуют вершины (операторы), выходящие из
которых дуги (операнды) не входит ни в какую другую вершину. Избыточ-
ные вычисления возникают обычно вследствие неаккуратности программи-
ста, ниже приведен пример присвоения четным по
сумме индексов элементам
двумерной матрицы значений
true
и нечетным –
false
:
- 91 -
быть причиной
изменений в
результатах (в Далее частичные суммы складываются:
пределах оши- sum=sum1+ sum2
бок округле-
ния).
Во многих случаях приведенные (лежащие, впрочем, на поверхности) пре-
образования помогают и разработчику при создании новых программ. Одна-
ко перед реальным программированием в любом случае полезно обдумать
последовательность вычислений (алгоритмизацию). Классический пример –
параллельная сортировка (по аналогии с лежащим на поверхности распарал-
леливанием алгоритма суммирования элементов массива складывается убеж-
дение в возможности эффективного крупноблочного распараллеливания ме-
тодом сортировки на каждом процессоре части общего массива; однако по-
нимание проблем, связанных с пересечением частично отсортированных
множеств приходит обычно позднее); последовательные и мелкозернистые
параллельные алгоритмы сортировки описаны, напр., в работе [3].
Распараллеливающие компиляторы хороши в тех случаях, когда имеются (априори
корректно работающие, но не могущие быть модифицируемыми вследствие различных
причин) параллельные программы и требуется повысить их эффективность путем ис-
пользования многопроцессорных вычислительных систем. При создании новых про-
граммных комплексов для параллельного исполнения разработчик должен руково-
дствоваться разумными соображениями при разработке программ. Вряд ли стоит наде-
яться, что компилятор произведет ЭкП типа известной ‘задачи юного Гаусса’ (сведе-
i =100
ние суммы индексов к произведению, ∑ i =50 × (100 + 1) как частный случай)! Исполь-
i =1
2 + ...
зование правила Горнера ( a0 + a1 x + a 2 x a n x n ≡ a0 + x( a1 + ...x( a n −1 + x a n )) ) хотя
и уменьшает число умножений при вычислении значения полинома, но распараллели-
вается ненамного лучше исходного выражения. Есть ли смысл распараллеливать про-
2 3
цедуру сортировки на массиве из 10 (возможно, 10 ÷ 10 ) чисел? А определение значе-
ния вычислительнотрудоемкой функции нескольких переменных (например, при гра-
диентном методе поиска экстремума функции многих переменных или вычислении
определенного интеграла оной) распределить по процессорам МВС программист обя-
зан самостоятельно!
Каждый раз (к счастью!) приходится думать!…
Избыточные вычисления возникают в случае неиспользования результатов
вычислений в качестве данных для последующих вычислений; в графе алго-
ритма этому явлению соответствуют вершины (операторы), выходящие из
которых дуги (операнды) не входит ни в какую другую вершину. Избыточ-
ные вычисления возникают обычно вследствие неаккуратности программи-
ста, ниже приведен пример присвоения четным по сумме индексов элементам
двумерной матрицы значений true и нечетным – false:
Страницы
- « первая
- ‹ предыдущая
- …
- 89
- 90
- 91
- 92
- 93
- …
- следующая ›
- последняя »
