В MIT порекомендовали изменить подход к разработке программ
Неоптимальность разработки программного обеспечения (ПО) может в дальнейшем не быть компенсирована ростом производительности аппаратных платформ, следует из статьи, опубликованной Лабораторией компьютерных наук и искусственного интеллекта Массачусетского технологического института (MIT CSAIL), 5 июня сообщает Tech Republic.
Исследователи обращают внимание, что код программ иногда написан в 10 тыс. раз менее оптимально, чем это могло бы быть. Все разработчики гонятся за скорейшим выпуском ПО, не заботясь о серьезной оптимизации и полагаясь, как и прежде, на рост вычислительных способностей аппаратуры.
При этом современная аппаратура стала столь сложной, что подавляющее большинство разработчиков не знают, как она работает.
В CSAIL отметили, что некоторые эксперты возлагают большие надежды на новые технологии, такие как квантовые вычисления или углеродные нанотрубки. Тем не менее, считают исследователи, полагаться на это не стоит, а пора поднять вопрос об изменении стратегии развитии ПО.
К серьезному снижению скорости работы ПО приводит даже не столько плохая архитектура, сколько использование универсальных библиотек, которые также используют другие универсальные библиотеки, и так во много слоев.
Когда при разработке новой функции программного продукта требуется распознать голосовые команды «да» или «нет», то делается выбор в пользу готовой универсальной библиотеки, которая способна распознать любые слова, привели пример авторы.
В то же время наиболее перспективные направления разработки ПО, такие как искусственный интеллект, робототехника, виртуальная реальность, требуют огромных вычислительных мощностей.
В связи с замедлением скорости развития оборудования, считают в CSAIL, нужно переосмыслить стратегию разработки ПО и, частично, применения аппаратных средств. Исследователи предложили подход, который, на их взгляд, заметно повысит производительность.
Во-первых, больше внимания предлагается уделять исследованию новых проблемных областей. Во-вторых, решить проблемы горизонтального масштабирования ПО. Алгоритмы должны хорошо работать на современных многоядерных системах, то есть эффективно распараллеливаться. В-третьих, оптимизировать алгоритмы для более эффективного использования имеющихся аппаратных средств.
Кроме того, необходимо, по мнению исследователей, решать задачи с помощью более специализированного аппаратного обеспечения, а не использовать повсеместно универсальные системы. Графические процессоры (GPU), считают в CSAIL, предназначены для работы с компьютерной графикой, а не для обучения искусственных нейронных сетей.
Использование специализированной аппаратуры позволит снизить ее сложность и уменьшить количество транзисторов. В то же время, лучше решать узкий спектр задач.
Технологическим гигантам, таким как Google и Amazon, считают исследователи, выгодно оптимизировать алгоритмы. Даже небольшой относительный прирост производительности скажется колоссальным выигрышем в затратах, поскольку оборудования используется очень и очень много.
Меньшим организациям оптимизация не столь выгодна. Тем не менее, в CSAIL надеются, что крупные ИТ-корпорации выступят лидерами в этом процессе, а остальные подтянутся.
Авторы указывают, что даже замедление развития аппаратной базы может не сделать выгодной серьезную оптимизацию ПО для небольших организаций. Во всяком случае, в части переписывания готовых инструментов и библиотек непосредственно под свои нужды.
Исследователи рассуждают строго в рамках логики разработки ПО отдельными компаниями. То есть в рамках рыночной логики. В то же время существует проблема, что один и тот же код пишут в десятках и сотнях компаний, затрачивая на это гигантские лишние усилия.
Разработка и оптимизация библиотечных компонентов и готовых широко используемых продуктов в интересах отрасли, страны, либо всего мира позволит выделить ресурсы на оптимизацию как ПО, так и аппаратной базы.
(теги пока скрыты для внешних читателей)