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

UptoLike

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

- 89 -
тике (учет ограниченной машинной точности представления данных может
накладывать ограничения на ЭкП).
Одним из ЭкП, достаточно часто используемое в распараллеливающих
компиляторах, является редукция высоты дерева. Один из методов реализа-
ции такого преобразованияиспользование ассоциативных, коммутативных
и дистрибутивных свойств арифметики, таким путем компиляторы могут об-
наруживать неявный параллелизм в алгебраических выражениях и
генериро-
вать объектный (а затем и исполняемый) код для многопроцессорных систем
с указанием операций, которые можно выполнять одновременно.
На рис.24 показано (в виде
графа алгоритма), как от-
транслировал бы алгебраиче-
ское выражение обычный
компилятор (слева) и как оно
может быть обработано рас-
параллеливающим компиля-
тором (справа); при этом не
принимается
во внимание
возможное изменение точно-
сти вычислений [2]. Как вид-
но, во многих случаях воз-
можно уменьшить число яру-
сов (редуцировать высоту де-
рева) путем выявления (ранее
скрытого) параллелизма в вы-
числениях.
Не следует забывать, что
подобная оптимизация про-
грамм совсем не бесплатна
необходимы увеличенные за-
траты времени и вычисли-
тельных ресурсов
в период
анализа/компиляции.
Очень эффективны эквива-
лентные преобразования при
оптимизации циклов (гнезд
циклов).
В табл.6 приведены некото-
рые преобразования циклов,
автоматически осуществляе-
мые распараллеливающим
Fortran-компилятором
Рисунок 24 Уменьшение высоты дерева: a) - за
счет ассоциативности, б) - за счет коммутатив-
ности и в) - за счет дистрибутивности (слева
обычный компилятор, справа - распараллели-
вающий)
                                      - 89 -


тике (учет ограниченной машинной точности представления данных может
накладывать ограничения на ЭкП).
   Одним из ЭкП, достаточно часто используемое в распараллеливающих
компиляторах, является редукция высоты дерева. Один из методов реализа-
ции такого преобразования – использование ассоциативных, коммутативных
и дистрибутивных свойств арифметики, таким путем компиляторы могут об-
наруживать неявный параллелизм в алгебраических выражениях и генериро-
вать объектный (а затем и исполняемый) код для многопроцессорных систем
с указанием операций, которые можно выполнять одновременно.
                                                     На рис.24 показано (в виде
                                                   графа алгоритма), как от-
                                                   транслировал бы алгебраиче-
                                                   ское выражение обычный
                                                   компилятор (слева) и как оно
                                                   может быть обработано рас-
                                                   параллеливающим компиля-
                                                   тором (справа); при этом не
                                                   принимается во внимание
                                                   возможное изменение точно-
                                                   сти вычислений [2]. Как вид-
                                                   но, во многих случаях воз-
                                                   можно уменьшить число яру-
                                                   сов (редуцировать высоту де-
                                                   рева) путем выявления (ранее
                                                   скрытого) параллелизма в вы-
                                                   числениях.
                                                     Не следует забывать, что
                                                   подобная оптимизация про-
                                                   грамм совсем не бесплатна –
                                                   необходимы увеличенные за-
                                                   траты времени и вычисли-
                                                   тельных ресурсов в период
                                                   анализа/компиляции.
                                                     Очень эффективны эквива-
                                                   лентные преобразования при
                                                   оптимизации циклов (гнезд
                                                   циклов).
                                                     В табл.6 приведены некото-
Рисунок 24 — Уменьшение высоты дерева: a) - за
    счет ассоциативности, б) - за счет коммутатив-
                                                   рые преобразования циклов,
    ности и в) - за счет дистрибутивности (слева – автоматически осуществляе-
    обычный компилятор, справа - распараллели- мые          распараллеливающим
    вающий)                                        Fortran-компилятором