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