Динамический анализ зависимостей по данным в системе SAPFOR

Авторы

А.Д. Жуков, Н.А. Катаев, А.А. Смирнов

Аннотация

Возможностей статического анализа программ часто оказывается недостаточно для исследования реальных приложений. Сложные граф управления и структура обращений к памяти приводят к консервативной оценке наличия зависимостей по данным. Для принятия решений о возможности распараллеливания циклов программы в системе SAPFOR был реализован динамический анализ зависимостей по данным. Анализ опирается на инструментацию программ в представлении LLVM и может быть выполнен для программ на языках C и Fortran. Использование статического анализа позволяет сократить множество анализируемых обращений к памяти, игнорируя обращения к скалярным переменным, информация по которым уже доступна. Также допускается выборочный анализ функций и циклов программы. Эти возможности позволяют заметно снизить накладные расходы на время выполнения программы, сохранив при этом полноту анализа. Разработанный инструмент был протестирован на тестах производительности из пакета NAS Parallel Benchmarks для языков C и Fortran. В процессе динамического анализа кроме традиционных видов зависимостей (flow, anit, output) также определяются переменные, зависимость  о которым может быть устранена за счет приватизации или конвейерного выполнения циклов. Совместно с возможностями DVM и OpenMP это существенно облегчает, в том числе и ручное распараллеливание, облегчая задание соответствующих директив компилятора.

Ключевые слова

Ключевые слова:, анализ программ, динамический анализ, автоматизация распараллеливания, SAPFOR, DVMLLVM.

Язык

Русский

Библиографическая ссылка

А.Д. Жуков, Н.А. Катаев, А.А. Смирнов. Динамический анализ зависимостей по данным в системе SAPFOR // Научный сервис в сети Интернет: труды XXI Всероссийской научной конференции, М.: ИПМ им. М.В.Келдыша, 2019, C. 400-412