Более быстрые результаты вычислений без страха ошибок

  • Пользователь Алексей Коровин опубликовал
  • 23 декабря 2022 г., 13:42:19 MSK
  • 0 комментариев
  • 113 просмотров
Новый метод может значительно ускорить программы, известные как сценарии оболочки, посредством процесса, называемого распараллеливанием, гарантируя при этом, что программы возвращают точные результаты.

Исследователи впервые разработали метод, который может значительно ускорить определенные типы компьютерных программ автоматически, гарантируя при этом, что результаты программы остаются точными.

Их система повышает скорость программ, которые выполняются в оболочке Unix, вездесущей среде программирования, созданной 50 лет назад, которая все еще широко используется сегодня. Их метод распараллеливает эти программы, что означает, что он разбивает программные компоненты на части, которые могут выполняться одновременно на нескольких компьютерных процессорах.

Это позволяет программам выполнять такие задачи, как веб-индексация, обработка естественного языка или анализ данных, за меньшее время их первоначального выполнения.

"Есть так много людей, которые используют эти типы программ, таких как специалисты по обработке данных, биологи, инженеры и экономисты. Теперь они могут автоматически ускорять свои программы, не опасаясь, что получат неверные результаты", - говорит Никос Василакис, научный сотрудник Лаборатории компьютерных наук и искусственного интеллекта (CSAIL) Массачусетского технологического института.

Система также упрощает работу программистов, разрабатывающих инструменты, которые используют специалисты по обработке данных, биологи, инженеры и другие. Им не нужно вносить какие-либо специальные коррективы в свои программные команды, чтобы включить это автоматическое, безошибочное распараллеливание, добавляет Василакис, который возглавляет комитет исследователей со всего мира, которые работают над этой системой почти два года.

Василакис является старшим автором последней исследовательской работы группы, в которую входит соавтор MIT и аспирант CSAIL Таммам Мустафа, и которая будет представлена на симпозиуме USENIX по разработке и внедрению операционных систем.В число соавторов входят ведущий автор Константинос Каллас, аспирант Пенсильванского университета; Ян Билак, студент Варшавской средней школы имени Сташича; Димитрис Карникис, инженер-программист Aarno Labs; Терстон Х.Я. Данг, бывший постдок Массачусетского технологического института, который сейчас является инженером-программистом в Google; и Майкл Гринберг., доцент кафедры компьютерных наук Технологического института Стивенса.


Проблема десятилетней давности

Эта новая система, известная как PaSh, ориентирована на программы или скрипты, которые выполняются в оболочке Unix. Сценарий - это последовательность команд, которая предписывает компьютеру выполнить вычисление. Правильное и автоматическое распараллеливание сценариев оболочки - сложная проблема, с которой исследователи боролись десятилетиями.

Оболочка Unix остается популярной отчасти потому, что это единственная среда программирования, которая позволяет одному сценарию состоять из функций, написанных на нескольких языках программирования. Различные языки программирования лучше подходят для конкретных задач или типов данных; если разработчик использует правильный язык, решение проблемы может быть намного проще.

"Людям также нравится разрабатывать на разных языках программирования, поэтому объединение всех этих компонентов в единую программу - это то, что происходит очень часто", - добавляет Василакис.

В то время как оболочка Unix поддерживает многоязычные сценарии, ее гибкая и динамичная структура затрудняет распараллеливание этих сценариев традиционными методами.

Распараллеливание программы обычно является сложной задачей, потому что некоторые части программы зависят от других. Это определяет порядок, в котором должны выполняться компоненты; неправильный порядок приведет к сбою программы.

Когда программа написана на одном языке, разработчики имеют четкую информацию о ее функциях и языке, которая помогает им определить, какие компоненты могут быть распараллелены. Но эти инструменты не существуют для сценариев в оболочке Unix. Пользователи не могут легко увидеть, что происходит внутри компонентов, или извлечь информацию, которая помогла бы в распараллеливании.

Своевременное решение

Чтобы преодолеть эту проблему, PaSh использует этап предварительной обработки, который вставляет простые аннотации в программные компоненты, которые, по его мнению, могут быть распараллеливаемыми. Затем PaSh пытается распараллелить эти части скрипта во время выполнения программы, в тот самый момент, когда она достигает каждого компонента.

Это позволяет избежать другой проблемы в программировании оболочки - невозможно заранее предсказать поведение программы.

Распараллеливая программные компоненты "точно в срок", система позволяет избежать этой проблемы. Он способен эффективно ускорить гораздо больше компонентов, чем традиционные методы, которые пытаются выполнить распараллеливание заранее.

Своевременное распараллеливание также гарантирует, что ускоренная программа по-прежнему возвращает точные результаты. Если PaSh приходит к программному компоненту, который не может быть распараллелен (возможно, он зависит от компонента, который еще не запущен), он просто запускает исходную версию и избегает возникновения ошибки.

"Независимо от преимуществ производительности - если вы обещаете запустить что-то за секунду, а не за год, - если есть хоть какой-то шанс вернуть неверные результаты, никто не собирается использовать ваш метод", - говорит Василакис.

Пользователям не нужно вносить никаких изменений, чтобы использовать PaSh; они могут просто добавить инструмент в свою существующую оболочку Unix и указать своим скриптам использовать его.

Ускорение и точность

Исследователи протестировали PaSh на сотнях скриптов, от классических до современных программ, и ни один из них не сломался. Система была способна запускать программы в среднем в шесть раз быстрее по сравнению с не имеющими аналогов сценариями, и она достигла максимального ускорения почти в 34 раза.

Это также повысило скорость работы скриптов, которые другие подходы не смогли распараллелить.

"Наша система - первая, которая демонстрирует этот тип полностью правильной трансформации, но есть и косвенная выгода. То, как разработана наша система, позволяет другим исследователям и пользователям в промышленности развивать эту работу", - говорит Василакис.

Он рад получить дополнительную обратную связь от пользователей и посмотреть, как они улучшают систему. Проект с открытым исходным кодом присоединился к Linux Foundation в прошлом году, что сделало его широко доступным для пользователей в промышленности и академических кругах.

Продвигаясь вперед, Василакис хочет использовать PaSh для решения проблемы распространения - разделения программы для запуска на многих компьютерах, а не на многих процессорах в пределах одного компьютера. Он также стремится улучшить схему аннотаций, чтобы она была более удобной для пользователя и могла лучше описывать сложные программные компоненты.

Эта работа была частично поддержана Агентством перспективных исследовательских проектов Министерства обороны и Национальным научным фондом.

Комментарии

0 комментариев