ИСТИНА |
Войти в систему Регистрация |
|
ИПМех РАН |
||
Современные оптимизирующие компиляторы позволяют задействовать опции, отвечающие за векторизацию и распараллеливание последовательных программ, но их возможности ограничены из-за необходимости трудоемкого статического анализа. Распараллеливание часто требует значительного преобразования программы, в том числе и на уровне исходного кода, а необходимость преобразования определяется возможностями выбранной технологии параллельного программирования. Применение интерактивных систем при распараллеливании программ позволяет найти баланс между сложностью автоматического преобразования и анализа программ и сложностью ручного использования различных технологий программирования пользователем. Система Автоматизированного Распараллеливания САПФОР, разрабатываемая в ИПМ им. М.В. Келдыша РАН, использует не только подход с ”подсказками”-директивами, но и диалоговую оболочку для взаимодействия с пользователем, позволяя последнему в интерактивном режиме выбирать предлагаемые системой схемы распараллеливания последовательной программы в зависимости от прогнозируемых характеристик эффективности. В работе описывается неоконченное исследование подстановки процедур в Си-программах на уровне исходного кода. Данная оптимизация позволяет при выполнении программы снизить накладные расходы, связанные с вызовом процедуры, а на этапе статического анализа и компиляции делает возможным применение многих других оптимизаций, в том числе и распараллеливающих, без фактического межпроцедурного анализа. Применение данной оптимизации на уровне исходного кода позволит системе САПФОР определять более эффективные схемы распараллеливания пользовательской программы. Модуль для системы САПФОР был реализован на языке C++ с применением инфраструктуры LLVM и Clang и проверен на нескольких тестах из набора NAS Parallel Benchmarks. В дальнейшем будет продолжена работа по реализации других методов оптимизации, выполнимых на уровне исходного кода, и созданию полноценной среды разработки параллельных программ, позволяющей как в автоматическом, так и в интерактивном режиме преобразовывать последовательную Си-программу пользователя в эффективную параллельную. В рамках системы САПФОР также планируется интеграция данного инструмента с редактором MS Visual Studio Code в виде плагина.