Параллельные вычисления. Баканов В.М. - 91 стр.

UptoLike

Составители: 

- 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: