ВУЗ:
Составители:
Рубрика:
- 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
- …
- следующая ›
- последняя »