Преобразование последовательных Си-программ для их распараллеливания

Авторы

Ю.Г. Зыков, Н.А. Катаев, А.С. Колганов

Аннотация

Распараллеливание часто требует значительного преобразования программы, в том числе и на уровне исходного кода, а необходимость преобразования определяется возможностями выбранной технологии параллельного программирования. Одним из важных преобразований является подстановка процедур в Си-программах, а именно, замена вызова процедуры ее непосредственным телом со всеми подставленными аргументами. Данное преобразование позволяет при выполнении программы снизить накладные расходы, связанные с вызовом процедуры, а на этапе статического анализа и компиляции делает возможным применение различных оптимизаций, в том числе и распараллеливающих, без фактического межпроцедурного анализа. Применение данной оптимизации на уровне исходного кода позволит системе САПФОР определять более эффективные схемы распараллеливания пользовательской программы. Соответствующий модуль для системы САПФОР был реализован на языке 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