Аннотация:Существует задача совершенствования «старого» кода, наработанного трудами многих учёных и программистов в течение десятков лет. Также важной является задача автоматизации улучшения кода с целью адаптации к современным методам и языкам программирования и к современной вычислительной технике. Основным вопросом, поднимаемым в работе, является возможность повышения эффективности работы такого кода на вычислительной системе с минимальными затратами человеческого труда по его модификации. В работе будет предложен подход, который в дальнейшем позволит создать систему выдачи рекомендаций пользователю о возможности замены некоторых фрагментов в пакете прикладных программ с целью дальнейшей оптимизации, в том числе параллельной реализации. Построение такой системы можно разделить на несколько этапов: 1) Создание базы фрагментов кода, на основании которой будет производиться поиск; 2) Создание базы оптимальных функциональных эквивалентов для предложения замены найденных фрагментов. 3) Осуществление поиска схожих фрагментов по созданной базе в каком-либо пакете прикладных программ.
Предложенный подход был протестирован на пакетах прикладных программ, описанных во введении: OpenFOAM, GROMACS и MPI-ESM. Разработаны методы предобработки пакетов прикладных программм, предложена метрика вычисления схожести между участками кода, основанная на нечётком сравнении 2-х синтаксических деревьев.