В MIT порекомендовали изменить подход к разработке программ

Изображение: Yuri Samoilov CC BY 2.0
Процессор
Процессор

Неоптимальность разработки программного обеспечения (ПО) может в дальнейшем не быть компенсирована ростом производительности аппаратных платформ, следует из статьи, опубликованной Лабораторией компьютерных наук и искусственного интеллекта Массачусетского технологического института (MIT CSAIL), 5 июня сообщает Tech Republic.

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

При этом современная аппаратура стала столь сложной, что подавляющее большинство разработчиков не знают, как она работает.

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

К серьезному снижению скорости работы ПО приводит даже не столько плохая архитектура, сколько использование универсальных библиотек, которые также используют другие универсальные библиотеки, и так во много слоев.

Когда при разработке новой функции программного продукта требуется распознать голосовые команды «да» или «нет», то делается выбор в пользу готовой универсальной библиотеки, которая способна распознать любые слова, привели пример авторы.

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

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

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

Кроме того, необходимо, по мнению исследователей, решать задачи с помощью более специализированного аппаратного обеспечения, а не использовать повсеместно универсальные системы. Графические процессоры (GPU), считают в CSAIL, предназначены для работы с компьютерной графикой, а не для обучения искусственных нейронных сетей.

Использование специализированной аппаратуры позволит снизить ее сложность и уменьшить количество транзисторов. В то же время, лучше решать узкий спектр задач.

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

Меньшим организациям оптимизация не столь выгодна. Тем не менее, в CSAIL надеются, что крупные ИТ-корпорации выступят лидерами в этом процессе, а остальные подтянутся.

Комментарий редакции

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

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

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