Брахмакшатрия разработала программное обеспечение для более эффективного запуска графических приложений на более широком спектре компьютерного оборудования. Программное обеспечение расширяет GraphIt, современный язык программирования графов, для работы на графических процессорах (GPU), оборудовании, которое обрабатывает множество потоков данных параллельно.
Прогресс может ускорить анализ графов, особенно для приложений, которые выигрывают от параллелизма графического процессора, например алгоритмов рекомендаций.
Брахмакшатрия, аспирант кафедры электротехники и информатики Массачусетского технологического института и лаборатории информатики и искусственного интеллекта, представит свою работу на Международном симпозиуме по генерации и оптимизации кода в этом месяце. Соавторы включают советника Брахмакшатрии, профессора Самана Амарасингхе, а также Дугласа Т. Росс доцент кафедры программных технологий Джулиан Шун, постдок Чангван Хонг, недавний аспирант Массачусетского технологического института Юньмин Чжан, доктор философии ’20 (теперь в Google), и Шоаиб Камил из Adobe Research.
Когда программисты пишут код, они не общаются напрямую с компьютерным оборудованием. Само оборудование работает в двоичном формате – единицы и нули, в то время как кодер пишет на структурированном языке высокого уровня, состоящем из слов и символов. Для перевода этого высокоуровневого языка в аппаратно-читаемый двоичный файл требуются программы, называемые компиляторами. «Компилятор преобразует код в формат, который может работать на оборудовании», – говорит Брахмакшатрия. Одним из таких компиляторов, специально разработанных для анализа графов, является GraphIt.
Исследователи разработали GraphIt в 2018 году для оптимизации производительности алгоритмов на основе графов независимо от размера и формы графа. GraphIt позволяет пользователю не только вводить алгоритм, но и планировать работу этого алгоритма на оборудовании. «Пользователь может предоставить различные варианты расписания, пока не выяснит, что лучше всего подходит для него», – говорит Брахмакшатрия. "GraphIt генерирует очень специализированный код, адаптированный для каждого приложения, чтобы работать с максимальной эффективностью."
Ряд стартапов и авторитетных технологических компаний в равной степени приняли GraphIt для помощи в разработке графических приложений. Но Брахмакшатрия говорит, что первая итерация GraphIt имела недостаток: она работает только на центральных процессорах или процессорах, тип процессора в типичном ноутбуке.
«Некоторые алгоритмы массово параллельны, – говорит Брахмакшатрия, – это означает, что они могут лучше использовать оборудование, такое как графический процессор, имеющий 10 000 ядер для выполнения."Он отмечает, что некоторые типы анализа графиков, включая алгоритмы рекомендаций, требуют высокой степени параллелизма. Итак, Брахмакшатрия расширила GraphIt, чтобы позволить графическому анализу процветать на графических процессорах.
Команда Брахмакшатрии сохранила способ ввода алгоритмов пользователей GraphIt, но адаптировала компонент планирования для более широкого спектра оборудования. «Нашим основным дизайнерским решением при расширении GraphIt на графические процессоры было сохранить представление алгоритма точно таким же», – говорит Брахмакшатрия. "Вместо этого мы добавили новый язык расписания. Таким образом, пользователь может сохранить те же алгоритмы, которые были написаны ранее [для процессоров], и просто изменить ввод планирования, чтобы получить код графического процессора."
Это новое оптимизированное планирование для графических процессоров дает импульс алгоритмам графов, которые требуют высокого параллелизма, включая алгоритмы рекомендаций или функции поиска в Интернете, которые просматривают миллионы веб-сайтов одновременно. Чтобы подтвердить эффективность нового расширения GraphIt, команда провела 90 экспериментов, сравнивая среду выполнения GraphIt с другими современными графическими компиляторами на графических процессорах.
Эксперименты включали ряд алгоритмов и типов графиков, от дорожных сетей до социальных сетей. GraphIt работал быстрее всего в 65 из 90 случаев и был близок к ведущему алгоритму в остальных испытаниях, демонстрируя как его скорость, так и универсальность.
Брахмакшатрия говорит, что новое расширение GraphIt обеспечивает значительный прогресс в анализе графиков, позволяя пользователям легко переключаться между процессорами и графическими процессорами с высочайшей производительностью. "В наши дни это соревнование зубов и ногтей.
Каждый день появляются новые фреймворки », – говорит он. Но он подчеркивает, что даже небольшая оптимизация того стоит. "Компании тратят миллионы долларов каждый день на выполнение графических алгоритмов.
Даже если вы заставите его работать всего на 5 процентов быстрее, вы сэкономите многие тысячи долларов."
Это исследование частично финансировалось Национальным научным фондом США.S.
Министерство энергетики, Центр прикладных архитектурных решений и Агентство перспективных исследовательских проектов Министерства обороны.
