программное обеспечение параллельных вычислений

 

Анализ компиляторов

 
 

Бесспорно, существует надежда, что в перспективе разработчикам прикладных программ не потребуется изменять свои программы, чтобы использовать их на многопроцессорной системе. Национальные лаборатории сильно полагаются на огромное количество существующих программ. Любая стратегия, которая позволит выполнять эти программы на многопроцессорной системе без внесения в них изменений, должна рассматриваться как более предпочтительная по сравнению с другими вариантами, поскольку не требует затрат времени на переделку программ. Кроме того, так как существующие программы имеют воспроизводимое поведение, программист не должен отвечать ни за какие проблемы синхронизации.

Такой подход, естественно, требует предельно сложного компилятора. В этом разделе рассматриваются нынешние возможности и ограничения построения такого компилятора. Неудивительно, что эффективность вычислений частично зависит от структуры используемой многопроцессорной ЭВМ. Однако многие базовые вопросы компиляции связаны с достижением независимости от применяемой машины. К счастью, многие исследования по созданию векторизующих компиляторов непосредственно применимы к решению более общих вопросов компиляции для многопроцессорных систем. Вероятно, наиболее продвинутая работа в этой области выполнена Куком и др.. В настоящее время почти все работы были направлены на анализ циклов с целью выявления возможности максимального их распараллеливания. Многопроцессорные машины имеют преимущество перед векторными машинами, состоящее в том, что условные переходы и вызовы подпрограмм внутри циклов не являются препятствием для распараллеливания.

 Кроме того, любые векторные циклы могут без особых усилий отображаться на более универсальные многопроцессорные ЭВМ. Видимо, есть основания надеяться, что этот подход может быть расширен для идентификации и других форм распараллеливания циклов, которые могут систематически транслироваться для многих разнотипных многопроцессорных ЭВМ]. Два основных вопроса, связанных с этим подходом, остаются неразрешенными:

1. Если усилия компилятора концентрируются главным образом на циклах как источниках распараллеливания, то какая степень распараллеливания может быть достигнута?

2. Если компиляторы должны обращаться к более динамическим свойствам программ, например, таким, как вызовы подпрограмм, то насколько эффективно они могут определять и использовать возможности распараллеливания и ее реализации?

 
 
 
Copyright (c) 2009. Использование материалов данного сайта возможно только при проставлении активной, не закрытой от индексации гиперссылки. http://soft-tlt.ru