Преобразование последовательных Си-программ для их распараллеливания
Авторы
Ю.Г. Зыков, Н.А. Катаев, А.С. Колганов
Аннотация
Распараллеливание часто требует значительного преобразования программы, в том числе и на уровне исходного кода, а необходимость преобразования определяется возможностями выбранной технологии параллельного программирования. Одним из важных преобразований является подстановка процедур в Си-программах, а именно, замена вызова процедуры ее непосредственным телом со всеми подставленными аргументами. Данное преобразование позволяет при выполнении программы снизить накладные расходы, связанные с вызовом процедуры, а на этапе статического анализа и компиляции делает возможным применение различных оптимизаций, в том числе и распараллеливающих, без фактического межпроцедурного анализа. Применение данной оптимизации на уровне исходного кода позволит системе САПФОР определять более эффективные схемы распараллеливания пользовательской программы. Соответствующий модуль для системы САПФОР был реализован на языке C++ с применением инфраструктуры LLVM и Clang и проверен на тестах из набора NAS Parallel Benchmarks.
Работа выполнена при поддержке Российского фонда фундаментальных исследований, проекты 16-07-01067, 17-01-00820 и 18-01-00851.
Ключевые слова
SAPFOR, распараллеливание программ, преобразование программ.
Язык
Русский
Представлена на
Библиографическая ссылка
Ю.Г. Зыков, Н.А. Катаев, А.С. Колганов. Преобразование последовательных Си-программ для их распараллеливания // Параллельные вычислительные технологии – XII международная конференция, ПаВТ'2018, г. Ростов-на-Дону, 2–6 апреля 2018 г. Короткие статьи и описания плакатов. , Челябинск: Издательский центр ЮУрГУ, 2018, C. 408-408